【问题标题】:using "at" argument of margins function in R for logit model在 R 中为 logit 模型使用边距函数的“at”参数
【发布时间】:2020-12-21 03:03:11
【问题描述】:

我希望能够在 logit 模型中分析连续变量和二元变量的边际效应。我希望 R 提供 hp 的独立边际效应的平均值(在此示例中为 200),同时还找到等于 1 的 vs 变量的边际效应。我希望输出表还包括SE、p 值和 z 分数。我在使用表格时遇到问题,当我让它运行时,它不会独立评估这两个变量。这是下面的MRE。谢谢!

mod2 <- glm(am ~ hp + factor(vs), data=mtcars, family=binomial)

margins(mod2)
#> Average marginal effects
#> glm(formula = am ~ hp + factor(vs), family = binomial, data = mtcars)
#>        hp      vs1
#>  -0.00203 -0.03154

#code where I am trying to evaluate at the desired values. 
margins(mod2, at=list(hp=200, vs=1))

【问题讨论】:

    标签: r logistic-regression effect margins


    【解决方案1】:

    这是因为您已将 vs 更改为一个因子。 考虑以下

    library(margins)
    mod3 <- glm(am ~ hp + vs, data=mtcars, family=binomial)
    margins(mod3, at=list(hp=200, vs=1))
    
    # Average marginal effects at specified values
    # glm(formula = am ~ hp + vs, family = binomial, data = mtcars)
    # 
    #  at(hp) at(vs)        hp       vs
    #     200      1 -0.001783 -0.02803
    

    这里没有真正的理由将vs 变成一个因素;这是二分法。

    【讨论】:

    • 好的,谢谢。尽管在输出表中,hp 和 vs 变量有一列,因此它们都等于上面代码中指定的值。但是回归不是分离这两个变量的边际效应的目的吗?那么当我们试图查看 hp=200 时的边际效应时,vs=0 不应该吗?有没有办法做到这一点,而且在它=1和hp=0时也找到vs的边际效应?
    • 啊,好点 @juliah0494 会在几分钟内看看这个
    • @juliah0494 想一想,这实际上也是您可能将vs 设为一个因素的原因,对吧?为确保margins() 会首先产生差异而不是瞬时变化?
    • 是的,我相信是的。这是我之前收到的建议。但是,当我将 factor() 应用于 vs 时,我收到此错误:“属性错误 (.Data)
    • 在估计之前尝试将二进制转换为一个因子,并提供一个与原始变量具有相同水平的因子给at。例如,at=list(vs=factor(1, levels=levels(dat$vs)))
    猜你喜欢
    • 2015-09-21
    • 2019-01-21
    • 2016-12-08
    • 2019-10-18
    • 2019-05-06
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多