在R中使用cplot()绘制边际效应时出错。

问题描述 投票:0回答:1

我想用cplot()绘制我的logit模型(mod7)的边际效应,但我不知道如何解决这个错误。

这里的代码。

mod7 <- glm(Crosssectionunique$ACQYes ~ Crosssectionunique$management + controls + Crosssectionunique$emp_firm)
mod8 <- glm(Crosssectionunique$ACQYes3 ~ Crosssectionunique$management + controls + Crosssectionunique$emp_firm)

summary(mod7)
install.packages("margins")
library("margins")
cplot(mod7, x = "Crosssectionunique$management", se.type = "shade")
Error in names(classes) <- clean_terms(names(classes)) : 
'names' attribute [3] must be the same length as the vector [2]

任何建议?

r plot effects marginal-effects
1个回答
0
投票

你得到这个问题是因为你试图通过 "Crosssectionunique$management" 到cplot,这可能是相当混乱的。因此,使用一个示例数据集。

library(margins)

Crosssectionunique = data.frame(
ACQYes = runif(50),
management = sample(letters[1:3],50,replace=TRUE),
emp_firm = factor(sample(1:3,50,replace=TRUE))
)
controls = runif(50)

mod <- glm(Crosssectionunique$ACQYes ~ Crosssectionunique$management + controls + Crosssectionunique$emp_firm)

cplot(mod, x = "Crosssectionunique$management", se.type = "shade")

Error in names(classes) <- clean_terms(names(classes)) : 
  'names' attribute [5] must be the same length as the vector [3]

你可以看到我得到同样的错误。在进行lm等操作时,尝试使用data.frame,并调用data.frame中的变量,例如。

Crosssectionunique$controls = controls
mod <- glm(ACQYes ~ management + controls + emp_firm,data=Crosssectionunique)

现在我们调用cplot,并指定x应该是一个叫 "管理 "的变量,它的工作原理很好。

cplot(mod, x = "management", se.type = "shade")

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.