【问题标题】:Extract all individual slope coefficient from pooled OLS estimation in R从 R 中的合并 OLS 估计中提取所有单个斜率系数
【发布时间】:2018-02-24 04:53:15
【问题描述】:

我遇到了一个问题,我想在合并回归中提取特定变量的所有单个系数。

我的数据看起来像这样,我在 X 上回归 Y。

Observation name date Y  X
1           A    1    Y1 X1
2           A    2    Y2 X2
3           B    1    Y3 X3
4           B    2    Y4 X4

使用plm 包和摘要,R 只给了我一个 X 系数。但是,我希望在每个单独的回归中都有 X 变量的系数。谁能帮我这个?

澄清一下,我想要的是下图中与 X_n,1 相关的所有 beta。对困惑感到抱歉。

【问题讨论】:

    标签: r plm coefficients


    【解决方案1】:

    您可以使用 broom 包中的 tidyaugmentplm 获取结果并将它们放入数据框中。

    library(plm)
    library(broom)
    
    data("Grunfeld", package = "plm")
    
    p <- plm(inv ~ value + capital, data = Grunfeld, model = "pooling")
    
    df <- tidy(p)
    
    #          term    estimate  std.error statistic      p.value
    # 1 (Intercept) -42.7143694 9.51167603 -4.490730 1.207357e-05
    # 2       value   0.1155622 0.00583571 19.802589 9.542703e-49
    # 3     capital   0.2306785 0.02547580  9.054808 1.347370e-16
    
    df$estimate
    
    # [1] -42.7143694   0.1155622   0.2306785
    
    augment(p)
    
    #         inv   value capital     .fitted      .resid
    # 1    317.60 3078.50    2.80  313.689629    3.910371
    # 2    391.80 4661.70   52.60  508.135423 -116.335423
    # 3    410.60 5387.10  156.90  616.023978 -205.423978
    # 4    257.70 2792.20  209.20  328.216223  -70.516223
    # 5    330.80 4313.20  203.40  502.648328 -171.848328
    # 6    461.20 4643.90  207.20  541.741311  -80.541311
    # 7    512.00 4551.20  255.20  542.101267  -30.101267
    # 8    448.00 3244.10  303.70  402.237879   45.762121
    # 9    499.60 4053.70  264.10  486.662133   12.937867
    # 10   547.50 4379.30  201.60  509.871765   37.628235
    

    【讨论】:

    • 嗨。首先,感谢您的回复,但这不是我想要的。我可以得到这个结果。我想要的是变量“值”的每个估计系数。例如,第一个估计的资本系数,第二个估计的资本系数等等
    • 首先感谢您的帮助。但是,这只会给出我的数据集的初始值,而不是估计的 beta?
    • 您的问题不清楚,或许您应该提供reproducible example,以便我能提供进一步的帮助。
    【解决方案2】:

    如果您想要实体的不同系数(在您的示例中由 name 分割),您可以使用 plm 包中的函数 pvcm() 来拟合每个个体的 OLS 模型或手动执行,请参阅下面的代码示例。

    以帮助页面 (?pvcm) 中的示例为基础:

    library(plm)
    data("Produc", package = "plm")
    
    form <- log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp
    
    pvcm(form, data = Produc, model = "within") # individual coefficients
    ## Coefficients:
    ##                (Intercept)  log(pcap)    log(pc)  log(emp)       unemp
    ## ALABAMA            8.49604 -1.4426440  0.2795010  1.835250  0.00735450
    ## ARIZONA            4.66528 -0.1627084 -0.0052207  1.075828 -0.00365798
    ## ARKANSAS           3.24565 -0.5056503  0.3212473  1.234017  0.00149221
    ## CALIFORNIA         0.27935  0.2639377  0.2484033  0.699135 -0.01074510
    ## [...]
    
    ###### same using OLS on splitted data for first entity (ALABAMA):
    l <- split(Produc, Produc$state)
    plm(form, data = l[[1]], model = "pooling")
    ## Coefficients:
    ## (Intercept)   log(pcap)     log(pc)    log(emp)       unemp 
    ##   8.4960384  -1.4426440   0.2795010   1.8352498   0.0073545 
    

    【讨论】:

    • 感谢您优雅的解决方案!
    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 2020-08-05
    • 2017-10-10
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2014-04-30
    相关资源
    最近更新 更多