【发布时间】:2020-03-09 23:40:35
【问题描述】:
我正在尝试使用 dplyr 运行逐步回归,但会导致以下错误:
Error in as.data.frame.default(data) : cannot coerce class ‘c("glm", "lm")’ to a data.frame
glm 运行良好,但是当代码尝试将步骤的结果保存到数据帧时,会发生错误。
我检查了函数 glm 的类和函数 step 是否与“c(glm, lm)”相同。但只有步进功能不起作用。
我尝试了几种方法来修复此错误, 像 do 语句,map2(将数据传递给数据参数)但没有任何作用。
更多细节.. 当我运行这段代码时:
...
group_by(ITEM_CODE) %>%
nest() %>%
mutate(model = map(data, ~ glm(formula_full,family=gaussian(),na.action=na.omit,data=.x))
) %>%
ungroup()
结果如下......这里,glm返回c(“glm”,“lm”)
> M_CODE data model
> 0034019 <tibble> <S3: glm>
> 0040726 <tibble> <S3: glm>
> 0057446 <tibble> <S3: glm>
我正在尝试在此(下一个模型列)的第 4 列添加“步骤”结果。
但是当我尝试运行下一个代码时(添加 stepm 变量)
第二个代码:
group_by(ITEM_CODE) %>%
nest() %>%
mutate(model = map(data, ~ glm(formula_full,family=gaussian(),na.action=na.omit,data=.x))
,stepm = map(model, ~ step(.x, direction = "both", trace = 0)) # <-- Error point!
) %>%
ungroup()
然后发生我一开始提到的错误。
其实, 类(模型)= 类(stepm)= c(“glm”,“lm”) 但只有 stepm 不接受并丢弃错误..
所以,我很困惑.. 有谁知道这个问题..?
提前谢谢你
【问题讨论】:
-
错误消息似乎相当有用。您没有足够详细地描述这项工作的目标以提供替代方案。而且你也没有 MCVE。如果您希望进一步努力,请解决这两个缺陷。
-
我将提供进一步的建议,即大多数 R 专家认为“逐步”方法是错误的。在 SAS 或 SPSS 中执行这种统计不当行为的难易程度被认为是它们的主要失败之一......以及成本过高和方法缺乏透明度。
-
请使用
dput添加数据并显示相同的预期输出。请阅读有关how to ask a good question 的信息以及如何提供reproducible example。 -
哦,谢谢你的建议。我再次写了更详细的内容:)