Hosmer Lemeshow 测试,可变长度不同

数据挖掘 r 逻辑回归
2022-02-26 08:55:23

在 R 版本 3.1.2 中进行逻辑回归,我想进行 Hosmer Lemeshow 测试

model <- glm(y ~ a + b + c + d, data = data, family = binomial)

summary(model)

Call:
glm(formula = y ~ a + b + c + d, family = binomial, 
    data = data)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.5607  -0.7642  -0.4456   0.8998   2.3812  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -7.827805   1.169216  -6.695 2.16e-11

a            0.582214   0.134207   4.338 1.44e-05

b           -0.697126   0.462983  -1.506  0.13214   

c            0.027485   0.009669   2.843  0.00448 

d            0.996241   0.163006   6.112 9.86e-10

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 504.53  on 373  degrees of freedom
Residual deviance: 381.91  on 369  degrees of freedom
  (3 observations deleted due to missingness)
AIC: 391.91

Number of Fisher Scoring iterations: 5

使用“资源选择”包中的函数 hoslem.test

hoslem.test(model$y, fitted(model), g = 10)

我收到以下错误

Error in model.frame.default(formula = cbind(y0 = 1 - y, y1 = y) ~ cutyhat) : 
  variable lengths differ (found for 'cutyhat')

查看 hoslem.test 函数中的代码,cutyhat 仅来自拟合(模型)值,我已经验证它不包含 nas 并且都是整数,那么它们为什么会有所不同呢?

请帮忙。

3个回答

我认为可能是正在使用模型而不是数据,请尝试:

hoslem.test(数据$y,拟合(模型),g = 10)

向量“y”可能包含 NA 值,或者您用于定义默认变量的某个向量具有 NA 值。

model <- model <- glm(y ~ a + b + c + d, data = data, family = binomial)
modeldata <- model.frame(model)
hoslem.test(modeldata$y , fitted(model), g = 10)

Usingmodel.frame获取用于分析模型的观察结果。