【问题标题】:Contingency table on logistic regression in R with missing fitted valuesR中缺少拟合值的逻辑回归列联表
【发布时间】:2012-07-16 23:45:00
【问题描述】:

在 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): 所有参数的长度必须相同

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

【问题讨论】:

  • 您是否意识到您的代码暗示您认为有一个名为fitted.values 的函数?如果你只是在控制台输入?fitted(或者str(model),你会取得更快的进步。

标签: r regression


【解决方案1】:

如果查看?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

【讨论】:

  • glm不会返回“model.frame”。它返回更复杂的对象,model.frame能够提取原始数据。 span>
  • 我已经编辑了更清晰的响应 - 它被返回为类"glm" 987654329的对象的部分 i>。 span>
【解决方案2】:
> table(test$male[complete.cases(test)], fitted(model)>0.5)

    FALSE TRUE
  0     4    2
  1     3    2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-03
    • 2015-04-26
    • 2017-12-01
    • 2018-01-26
    • 2012-11-19
    • 2017-03-10
    • 2022-10-04
    • 2021-08-19
    相关资源
    最近更新 更多