繁体   English   中英

在 R 中使用带有二次项和交互虚拟变量的边距命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM