Dopo aver adattato il modello, perché non usare i difetti previsti come variabile per confrontarli con gli altri usando le tecniche standard che hanno significato per loro? Ha il vantaggio di essere una variabile continua in modo da poter vedere anche piccole differenze. Ad esempio, le persone capiranno la differenza tra un numero atteso di difetti di 1,4 e di 0,6 anche se entrambi si arrotondano a uno.
Per un esempio di come il valore previsto dipende da due variabili, è possibile eseguire un diagramma di contorno di tempo v. Complessità come i due assi, il colore e i contorni per mostrare i difetti previsti; e sovrapponi i punti dati reali in alto.
La trama qui sotto ha bisogno di un po 'di lucidatura e una leggenda, ma potrebbe essere un punto di partenza.
Un'alternativa è il diagramma variabile aggiunto o il diagramma di regressione parziale, più familiare da una regressione gaussiana tradizionale. Questi sono implementati nella biblioteca dell'auto. In effetti, mostra la relazione tra ciò che resta della risposta e ciò che resta di una delle variabili esplicative, dopo che il resto delle variabili esplicative ha rimosso il loro contributo sia alla risposta che alle variabili esplicative. Nella mia esperienza, la maggior parte del pubblico non statistico ritiene che questi siano un po 'difficili da apprezzare (potrebbe, ovviamente, con le mie scarse spiegazioni).
#--------------------------------------------------------------------
# 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))