首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用二次和交互项的边距封装错误

使用二次和交互项的边距封装错误
EN

Stack Overflow用户
提问于 2020-11-25 16:40:45
回答 1查看 98关注 0票数 1

我有代码,它使用Stata中的边距命令,并且我试图在R中复制它,使用找到的“边距”包这里克拉恩

我不断地发现错误:

代码语言:javascript
复制
marg1<-margins(reg2)  

名称错误(类) <- clean_terms(名称(类)):“名称”属性18必须与向量16的长度相同“

下面是一个最低可复制的例子:

代码语言:javascript
复制
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是一个虚拟变量,它与二次项和正常相互作用相互作用。

有没有人知道我做错了什么,或者有没有办法解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2020-11-25 19:03:27

您的模型规范有点混乱。例如,vs*hp引入了3个变量:( i) vs,ii) hp和iii)交互和hp。因此,hp在您提供的公式中出现了两次。你可以大幅度简化!例如,试试这个(我认为这就是你想要的):

代码语言:javascript
复制
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(),因为如果没有足够的小心处理,常常会导致这样的错误(尽管有时无法避免)。祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65009031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档