我如何计算皮尔逊的χ2χ2R中逻辑回归模型缺乏拟合的检验统计量?

机器算法验证 r 卡方检验 物流 广义线性模型 拟合优度
2022-03-24 13:02:24

似然比(又名偏差)G2对于 R中的逻辑回归模型(使用函数拟合),统计和失配(或拟合优度)检验相当简单glm(..., family = binomial)。但是,很容易让一些细胞计数最终足够低测试是不可靠的。验证失拟似然比检验可靠性的一种方法是将其检验统计量和P值与 Pearson 卡方(或χ2) 失配检验。

glm对象及其方法均未summary()报告 Pearson 卡方检验的检验统计量是否缺乏拟合。在我的搜索中,我唯一想到的是chisq.test()函数(在stats包中):它的文档说“chisq.test执行卡方列联表测试和拟合优度测试”。但是,关于如何执行此类测试的文档很少:

如果x是具有一行或一列的矩阵,或者如果x是向量y且未给出,则执行拟合优度检验(x被视为一维列联表)。的条目x必须是非负整数。在这种情况下,检验的假设是总体概率是否等于 中的概率,或者如果没有给出p则全部相等。p

我想您可以将对象的y组件用于. 但是,你不能使用对象的组件作为参数,因为你会得到一个错误:“ glmxchisq.testfitted.valuesglmpchisq.testprobabilities must sum to 1.

我如何(在 R 中)至少计算皮尔逊χ2无需手动执行这些步骤即可测试统计数据是否不适合?

4个回答

Pearson 残差的平方和正好等于 Pearsonχ2缺乏拟合的检验统计量。因此,如果您的拟合模型(即glm对象)被调用logistic.fit,则以下代码将返回测试统计信息:

sum(residuals(logistic.fit, type = "pearson")^2)

有关更多信息,请参阅文档residuals.glm,包括可用的其他残差。例如,代码

sum(residuals(logistic.fit, type = "deviance")^2)

会给你G2检验统计量,和deviance(logistic.fit)提供的一样。

Pearson 统计量具有退化分布,因此一般不建议将其用于逻辑模型拟合优度。我更喜欢结构化测试(线性、可加性)。rms如果您想要综合测试,请参阅 R包residuals.lrm功能中实现的单自由度 le Cessie - van Houwelingen - Copas - Hosmer 未加权平方和测试。

谢谢,我没有意识到它很简单: 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。

您也可以使用c_hat(mod)它来提供与sum(residuals(mod, type = "pearson")^2).