Ornstein1 <- read.table("c:/temp/Ornstein.txt",header=TRUE) Ornstein1$assets2 <- Ornstein1$assets/1000 Ornstein1$lassets2 <- log(Ornstein1$assets2) Ornstein1$xlx <- Ornstein1$assets2 * Ornstein1$lassets2 # the original model, now using quasilikelihood Ornstein1.qglm1 <- glm(interlocks ~ as.factor(sector) +as.factor(nation) +assets2, data=Ornstein1,family=quasipoisson()) summary(Ornstein1.qglm1) par(mfrow=c(2,2)) plot(Ornstein1.qglm1) par(mfrow=c(1,1)) # plots to check influence, etc. library(car) influencePlot(Ornstein1.qglm1) plot(cooks.distance(Ornstein1.qglm1)) plot(covratio(Ornstein1.qglm1)) plot(dffits(Ornstein1.qglm1)) # using a Box-Tidwell constructed variable Ornstein1.qglm2 <- glm(interlocks ~ as.factor(sector) +as.factor(nation) +assets2 +xlx, data=Ornstein1,family=quasipoisson()) summary(Ornstein1.qglm2) par(mfrow=c(2,2)) plot(Ornstein1.qglm2) par(mfrow=c(1,1)) # added variable plots avPlot(Ornstein1.qglm2,variable="xlx",identify.points=FALSE) avPlots(Ornstein1.qglm2,one.page=TRUE,ask=FALSE,identify.points=FALSE) # now incorporate transformed assets Ornstein1$fsector <- as.factor(Ornstein$sector) Ornstein1$fnation <- as.factor(Ornstein$nation) Ornstein1.qglm3 <- glm(interlocks ~ fsector +fnation +lassets2, data=Ornstein1,family=quasipoisson()) summary(Ornstein1.qglm3) par(mfrow=c(2,2)) plot(Ornstein1.qglm3) par(mfrow=c(1,1)) # component plus residual plot for log(assets), function from the car package crPlot(Ornstein1.qglm3,"lassets2") influencePlot(Ornstein1.qglm3) plot(cooks.distance(Ornstein1.qglm3)) plot(covratio(Ornstein1.qglm3)) plot(dffits(Ornstein1.qglm3)) library(effects) plot(effect("lassets2", Ornstein1.qglm3))