1

在 R 中的 R 逻辑回归中,我试图创建一个列联表,将拟合值与观察值进行比较(即 0 或 1 个实际值与 0 或 1 个拟合值)。但是,我的数据在各种变量的各行中都有缺失值,因此拟合值向量的长度比原始数据集短。这是一个例子:

test <- data.frame(male=c(1,0,1,0,0,1,1,0,1,0,0,1), 
                 height=c(58,100,NA,19,20,69,58,24,46,19,97,69))

model <- glm(male~height, family=binomial("logit"),data=test)

check_model <- table(test$male,fitted.values(model)>0.5)

表中的错误(test$male,fitted.values(model)> 0.5):所有参数必须具有相同的长度

有谁知道仅在模型没有的行中输入实际值(test$male)的fitted.value方法NULL

4

2 回答 2

2

如果您查看,?glm您会看到它返回model.frame (默认情况下)作为glm对象的组件

这包含用于拟合模型的数据

因此你可以使用

table(model.frame(model)$male, fitted(model) > 0.5)

或者

table(model$model$male, fitted(model) > 0.5)

返回您需要的结果

##      FALSE TRUE
##   0     4    2
##   1     3    2
于 2012-07-18T01:14:22.827 回答
1
> table(test$male[complete.cases(test)], fitted(model)>0.5)

    FALSE TRUE
  0     4    2
  1     3    2
于 2012-07-18T02:34:29.410 回答