[英]Using margins command in R with quadratic term and interacted dummy variables
我的目标是在“边际效应”下创建类似于这篇文章中所做的边际效应和情节: https : //www.drbanderson.com/myresources/interpretinglogisticregressionpartii/
由于我无法提供实际模型或实际数据(数据是敏感的),我将提供一个通用示例。
我使用 glm 函数创建了以下模型:
model = glm(y ~ as.factor(x1) + x2 + I(x2^2) + x3 + as.factor(x4):as.factor(x5), data = dataFrame,family="binomial")
x2 是一个连续变量,我想计算另一个连续变量 x3 的平均值以及 x1、x4 和 x5 的预定义值的边际效应。 为了进一步简化,假设 x1 是上午、下午或晚上的分类(因此在 logit 模型中产生两个系数),x4 是左或右的分类,x5 是向上或向下的分类(因此 x4:x5产生左和上、左和下、右和上的系数结果,右和下排除交互作用)。
与帖子中所做的类似,我运行以下代码:
x2.inc <- seq(min(dataFrame$x2), max(dataFrame$x2), by = .1)
获得一系列 x2 值,用于评估边际效应。 最后,我尝试运行 margins 命令:
x2.margins.df <- as.data.frame(summary(margins(model, at = list(x2 = x2.inc, x3 = mean(dataFrame$x3), x1 = 'morning', x4 = 'left', x5 = 'right'))))
但是,运行它会产生以下错误:
Error in attributes(.Data) <- c(attributes(.Data), attrib) :
'names' attribute [1] must be the same length as the vector [0]
给定 a) 模型中 x2 的二次性质,以及 b) 模型中项的相互作用,我对如何成功运行 margins 命令有何想法?
附带说明:我知道如果我愿意,我可以手动计算这些东西。 但是,为了减少代码并易于重现,我想让这种方法起作用。 感谢您的帮助!
margins
的自述文件说:
https://cran.r-project.org/web/packages/margins/readme/README.html
它支持logit
模型。 那么为什么要手动实现一些东西呢?
library("car")
library("plm")
data("LaborSupply", package = "plm")
model <- glm(disab ~ kids*age + kids*I(age^2), data = LaborSupply, family="binomial")
summary(margins(model))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.