谢谢,我没有意识到它很简单: sum(residuals(f1, type="pearson")^2) 但是请注意,Pearsons 残差取决于它是由协变量组还是由个人计算的。一个简单的例子:
m1 是一个矩阵(这是一个更大矩阵的头部):
m1[1:4,1:8]
x1 x2 x3 obs pi lev yhat y
obs 1 1 44 5 0.359 0.131 1.795 2
obs 0 1 43 27 0.176 0.053 4.752 4
obs 0 1 53 15 0.219 0.062 3.285 1
obs 0 1 33 22 0.140 0.069 3.080 3
x1-3 是预测变量,obs 不是。每个组中的观察值,pi 是组成员的概率(从回归方程预测),lev 是杠杆,帽子矩阵的对角线,yhat 是预测的编号。(y = 1)在组中,y 是实际编号。
这将为您提供 Pearson's by group。注意如果 y==0: ' 会有什么不同fun1 <- function(j){
if (m1[j,"y"] ==0){ # y=0 for this covariate pattern
Pr1 <- sqrt( m1[i,"pi"] / (1-m1[i,"pi"]))
Pr2 <- -sqrt (m1[i,"obs"])
res <- round( Pr1 * Pr2, 3)
return(res)
} else {
Pr1 <- m1[j,"y"] - m1[j,"yhat"]
Pr2 <- sqrt( m1[j,"yhat"] * ( 1-(m1[j,"pi"]) ) )
res <- round( Pr1/Pr2, 3)
return(res)
}
}'
因此
nr <-nrow(m1)
nr1 <- seq(1,nr)
Pr <- sapply(1:nrow[m1], FUN=fun1)
PrSj <- sum(Pr^2)
如果有大量具有 y=0 协变量模式的受试者,那么当使用“按组”而不是“按个人”方法计算时,皮隆残差将大得多。
参见例如 Hosmer & Lemeshow “Applied Logistic Regression”,Wiley,200。