解释泊松回归的残差与拟合值图

机器算法验证 r 自习 广义线性模型 泊松回归
2022-01-27 09:34:41

我试图用 R 中的 GLM(泊松回归)拟合数据。当我绘制残差与拟合值时,该图创建了多条(几乎是线性的,带有轻微的凹曲线)“线”。这是什么意思?

library(faraway)
modl <- glm(doctorco ~ sex + age + agesq + income + levyplus + freepoor + 
            freerepa + illness + actdays + hscore + chcond1 + chcond2,
            family=poisson, data=dvisits)
plot(modl)

在此处输入图像描述

3个回答

当因变量是离散的时,这是您期望的此类图的外观。

图上点的每个曲线轨迹对应于因变量每个的情况都有一个预测 ; 它的残差——根据定义——等于的图显然是一条斜率为的线。在泊松回归中,x 轴显示在对数刻度上:它是曲线现在呈指数弯曲。作为kyy=ky^ky^ky^y^1log(y^)k变化,这些曲线上升了整数。对它们求幂得到一组准平行曲线。(为了证明这一点,下面将显式构建图,分别用的值对点进行着色。)y

我们可以通过类似但任意的模型(使用小的随机系数)非常接近地再现有问题的图:

# Create random data for a random model.
set.seed(17)
n <- 2^12                       # Number of cases
k <- 12                         # Number of variables
beta = rnorm(k, sd=0.2)         # Model coefficients
x <- matrix(rnorm(n*k), ncol=k) # Independent values
y <- rpois(n, lambda=exp(-0.5 + x %*% beta + 0.1*rnorm(n)))

# Wrap the data into a data frame, create a formula, and run the model.
df <- data.frame(cbind(y,x))    
s.formula <- apply(matrix(1:k, nrow=1), 1, function(i) paste("V", i+1, sep=""))
s.formula <- paste("y ~", paste(s.formula, collapse="+"))
modl <- glm(as.formula(s.formula), family=poisson, data=df)

# Construct a residual vs. prediction plot.
b <- coefficients(modl)
y.hat <- x %*% b[-1] + b[1]     # *Logs* of the predicted values
y.res <- y - exp(y.hat)         # Residuals
colors <- 1:(max(y)+1)          # One color for each possible value of y
plot(y.hat, y.res, col=colors[y+1], main="Residuals v. Fitted")

残差与拟合

有时,残差图中这样的条纹代表具有(几乎)相同观察值的点,这些点得到不同的预测。查看您的目标值:它们有多少个唯一值?如果我的建议是正确的,那么您的训练数据集中应该有 9 个唯一值。

这种模式是家庭和/或链接不正确匹配的特征。如果您有过度分散的数据,那么也许您应该考虑负二项式(计数)或伽马(连续)分布。此外,您应该根据转换后的线性预测变量绘制残差,而不是使用广义线性模型时的预测变量。要转换 Poisson 预测器,您需要取线性预测器的平方根的 2 倍,并根据它绘制残差。残差不应该完全是皮尔逊残差,尝试偏差残差和学生化残差。