在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)&gt; 0.5): 所有参数必须具有相同的长度
是否有人知道只在模型fitted.value
不是NULL
的行中输入实际值(测试$ male)的方式?
答案 0 :(得分: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
答案 1 :(得分:1)
> table(test$male[complete.cases(test)], fitted(model)>0.5)
FALSE TRUE
0 4 2
1 3 2