r - 使用二次项和交互项的边距包错误
问题描述
我有在 Stata 中使用 margins 命令的代码,我正在尝试使用此处和cran上的“margins”包在 R 中复制它。
我不断收到错误:
marg1<-margins(reg2)
名称(类)<- clean_terms(名称(类))中的错误:“名称”属性 [18] 必须与向量 [16] 的长度相同”
一个最小的可重现示例如下所示:
install.packages(margins)
library(margins)
mod1 <- lm(log(mpg) ~ vs + cyl + hp + vs*hp + I(vs*hp*hp) + wt + I(hp*hp), data = mtcars)
(marg1 <- margins(mod1))
summary(marg1)
我需要 vs 是一个与二次项和正态交互交互的虚拟变量。
有谁知道我做错了什么或者是否有办法解决这个问题?
解决方案
您的模型规格有点混乱。例如,vs*hp 引入了 3 个变量:i) vs、ii) hp 和 iii) 交互 vs 和 hp。结果, hp 在您提供的公式中出现了两次。您可以大量简化!试试这个例如(我认为这是你想要的):
mtcars$hp2 = mtcars$hp^2
mod1 <- lm(log(mpg) ~ cyl + wt + vs*hp + vs*hp2, data = mtcars)
summary(mod1) # With this you can check that the model you specified is what you want
(marg1 <- margins(mod1)) # The error disappeared.
summary(marg1)
一般来说,我建议您在公式规范中避免使用 I(),因为如果处理不当,它通常会导致此类错误(尽管有时无法避免)。祝你好运!
推荐阅读
- c - 倒带我的文件指针时出现分段错误
- swift - 如何在没有动画的情况下更改 SwiftUI 视图 @State
- html - 当图像通过 CSS 过渡移动时,将背景设置为透明/白色
- python - python脚本和相对导入问题
- android - 如何创建矩形自定义单选按钮或复选框?
- javascript - -webkit 样式中的 OWLCarousel CSS3 问题
- c++ - 实现托管缓冲区和“参考”
- javascript - 更改innerHTML时Rails请求格式JS不起作用
- azure - 在 Chrome 中使用 URL 时 Azure kubernetes“无法访问该站点”
- reactjs - create-react-app 仅适用于 cmd,但不适用于 bash。使用 bash:'npx' 不被识别为内部或外部命令