我的目标是创建边际效应和类似于“边际效应”下这篇文章中所做的情节: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 命令的任何想法?
附带说明:我知道如果我愿意,我可以手动计算这些东西。但是,为了减少代码和易于重现,我想让这种方法起作用。感谢您的帮助!