Sau khi bạn phù hợp với mô hình, tại sao không sử dụng các khuyết tật dự đoán làm biến để so sánh với các mô hình khác bằng cách sử dụng bất kỳ kỹ thuật tiêu chuẩn nào có ý nghĩa đối với chúng? Nó có lợi thế là một biến liên tục để bạn có thể thấy những khác biệt nhỏ. Ví dụ, mọi người sẽ hiểu sự khác biệt giữa số lượng khuyết tật dự kiến là 1,4 và 0,6 mặc dù cả hai đều làm tròn thành một.
Để biết ví dụ về cách giá trị dự đoán phụ thuộc vào hai biến bạn có thể thực hiện một biểu đồ đường viền về độ phức tạp thời gian v. Như hai trục và màu sắc và đường viền để hiển thị các khuyết tật dự đoán; và chồng các điểm dữ liệu thực tế lên trên.
Cốt truyện dưới đây cần một số đánh bóng và một huyền thoại nhưng có thể là một điểm khởi đầu.
Một thay thế là biểu đồ biến được thêm vào hoặc biểu đồ hồi quy từng phần, quen thuộc hơn từ hồi quy đáp ứng Gaussian truyền thống. Chúng được thực hiện trong thư viện xe hơi. Hiệu quả cho thấy mối quan hệ giữa những gì còn lại của phản hồi và những gì còn lại của một trong các biến giải thích, sau khi các biến giải thích còn lại đã đóng góp cho cả hai biến trả lời và biến giải thích. Theo kinh nghiệm của tôi, hầu hết khán giả không thống kê đều thấy những điều này hơi khó để đánh giá cao (dĩ nhiên có thể bởi những lời giải thích kém của tôi).
#--------------------------------------------------------------------
# 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))