具有复杂互动条件的R中的平均边际效应

时间:2019-02-24 18:02:20

标签: r linear-regression lm margins marginal-effects

我正在使用R来计算以下模型的线性回归,以及找出年龄对披萨在特定点(20,30,40,50,55)的边际影响。

mod6.22c <- lm(pizza ~ age + income + age*income +
                                I((age*age)*income), data = piz4)

我遇到的问题是在使用margins命令时,R没有看到以 I((年龄x年龄)x收入)插入lm的交互项。当交互项为 variable1 x variable1 形式时,margins命令将仅产生准确的平均边际效果。我也无法在表 table $ newvariable <-table $ variable1 ^ 2 中创建新变量,因为margins命令不会将 newvariable 标识为与< em> variable1 。

到目前为止,情况一直很好,我的交互作用项只是二次或xy交互作用,但是现在我需要计算交互作用项 AGE的平均边际效应模型中包含^ 2xINCOME ,但是我似乎可以使摘要lm输出正确的唯一方法是使用I(age ^ 2 *(income))或在表中创建一个新变量。如前所述,margins命令无法读取I(age ^ 2 *(income)),并且如果我创建了一个新变量,margins命令将无法识别变量之间的相关性,并且产生的平均边际效应是不正确的

我收到的错误:

> summary(margins(mod6.22c, at = list(age= c(20,30,40,50,55)), 
                   variables = "income"))
    Error in names(classes) <- clean_terms(names(classes)) : 
    'names' attribute [4] must be the same length as the vector [3]

我先感谢您的帮助。

数据摘要: 比萨是比萨的年度支出,女性,健康,大学和研究生是虚拟变量,收入以每年数千美元计,年龄为几岁。

    > head(piz4)
  pizza female hs college grad income age agesq
1   109      1  0       0    0   19.5  25   625
2     0      1  0       0    0   39.0  45  2025
3     0      1  0       0    0   15.6  20   400
4   108      1  0       0    0   26.0  28   784
5   220      1  1       0    0   19.5  25   625
6   189      1  1       0    0   39.0  35  1225

使用的库:

library(data.table)
library(dplyr)
library(margins)

tldr

这有效:

  

mod6.22 <-lm(比萨饼〜年龄+收入+年龄*收入,数据= piz4)

**summary(margins(mod6.22, at = list(age= c(20,30,40,50,55)), variables = "income"))**

factor     age    AME     SE      z      p   lower  upper
 income 20.0000 4.5151 1.5204 2.9697 0.0030  1.5352 7.4950
 income 30.0000 3.2827 0.9049 3.6276 0.0003  1.5091 5.0563
 income 40.0000 2.0503 0.4651 4.4087 0.0000  1.1388 2.9618
 income 50.0000 0.8179 0.7100 1.1520 0.2493 -0.5736 2.2095
 income 55.0000 0.2017 0.9909 0.2036 0.8387 -1.7403 2.1438

这不起作用:

  

mod6.22c <-lm(比萨饼〜年龄+收入+年龄*收入+ I((年龄*年龄)*收入),数据= piz4)

**summary(margins(mod6.22c, at = list(age= c(20,30,40,50,55)), variables = "income"))**
Error in names(classes) <- clean_terms(names(classes)) : 
  'names' attribute [4] must be the same length as the vector [3]

如何获得阅读互动变量I((年龄*年龄)*收入)的利润?

0 个答案:

没有答案