Una vez ajustado el modelo, ¿por qué no utilizar los defectos predichos como variable para compararlos con los demás utilizando cualquier técnica estándar que tenga sentido para ellos? Tiene la ventaja de ser una variable continua, por lo que se pueden ver incluso las pequeñas diferencias. Por ejemplo, la gente entenderá la diferencia entre un número de defectos esperado de 1,4 y de 0,6 aunque ambos se redondeen a uno.
Para un ejemplo de cómo el valor predicho depende de dos variables, podría hacer un gráfico de contorno de tiempo v. complejidad como los dos ejes y el color y los contornos para mostrar los defectos predichos; y superponer los puntos de datos reales en la parte superior.
La trama de abajo necesita un poco de pulido y una leyenda, pero podría ser un punto de partida.
Una alternativa es el diagrama de variables añadidas o el diagrama de regresión parcial, más familiar de una regresión de respuesta gaussiana tradicional. Estos se implementan en la biblioteca de automóviles. En efecto, muestran la relación entre lo que queda de la respuesta y lo que queda de una de las variables explicativas, después de que se haya eliminado la contribución del resto de las variables explicativas a la respuesta y a las variables explicativas. Según mi experiencia, a la mayoría de los no estadísticos les resulta un poco difícil de entender (por supuesto, debido a mis pobres explicaciones).
#--------------------------------------------------------------------
# Simulate some data
n<-200
time <- rexp(n,.01)
complexity <- sample(1:5, n, prob=c(.1,.25,.35,.2,.1), replace=TRUE)
trueMod <- exp(-1 + time*.005 + complexity*.1 + complexity^2*.05)
defects <- rpois(n, trueMod)
cbind(trueMod, defects)
#----------------------------------------------------------------------
# Fit model
model <- glm(defects~time + poly(complexity,2), family=poisson)
# all sorts of diagnostic checks should be done here - not shown
#---------------------------------------------------------------------
# Two variables at once in a contour plot
# create grid
gridded <- data.frame(
time=seq(from=0, to=max(time)*1.1, length.out=100),
complexity=seq(from=0, to=max(complexity)*1.1, length.out=100))
# create predicted values (on the original scale)
yhat <- predict(model, newdata=expand.grid(gridded), type="response")
# draw plot
image(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE),
xlab="Time", ylab="Complexity", main="Predicted average number of defects shown as colour and contours\n(actual data shown as circles)")
contour(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE), add=TRUE, levels=c(1,2,4,8,15,20,30,40,50,60,70,80,100))
# Add the original data
symbols(time, complexity, circles=sqrt(defects), add=T, inches=.5)
#--------------------------------------------------------------------
# added variable plots
library(car)
avPlots(model, layout=c(1,3))