计算 R 中两个不同回归之间的差异

Compute the difference between two different regressions in R

我正在尝试计算变量“效率比”(ER) 在 2014 年和 2011 年之间(即 ∆=2014-2011)变化的系数和相应的 p 值。我已经使用合并 OLS 计算了 2011 年和 2014 年的个体回归。我不知道下一步是计算这种变化的结果(估计系数和 p 值)。我试图得出关于 ER 变量的因变量的敏感性是否不太正相关的结论。

下面,我展示了 2011 年和 2014 年的个别回归,以及我的部分数据库。 对于如何在 R 中执行此操作的任何见解,我将不胜感激。谢谢。


pdata2011<-pdata.frame(paneldata2011, index = c("BANKS","YEARS"))

pooled2011<-plm(VCTC ~ ER + log(TA) + log(GDP), data = pdata2011,  model = "pooling")


pdata2014<-pdata.frame(paneldata2014, index = c("BANKS","YEARS"))

pooled2014<-plm(VCTC ~ ER + log(TA) + log(GDP), data = pdata2014, model = "pooling")
  BANKS YEARS    VCTC         ER           TA         GDP
    1   2014    0.00000000  0.8559100   235193.8    534678.1
    1   2011    0.16887878  1.5123620   301355.0    522645.5
    2   2014    0.87297022  0.6225519   809343.3    1801480.1
    2   2011    0.85148515  0.6321466   777083.1    1789140.7
    3   2014    0.24422236  0.4315355   2573915.1   10438529.2
    3   2011    0.24970615  0.4156023   1853465.0   7551500.4
    4   2014    0.33174224  0.3927662   2457455.2   10438529.2
    4   2011    0.28012834  0.4291702   1877624.1   7551500.4
    5   2014    0.31638913  0.3525573   2697975.7   10438529.2
    5   2011    0.32945877  0.3633482   1949372.7   7551500.4
    6   2014    0.22575998  0.3450020   3320881.7   10438529.2
    6   2011    0.21708543  0.3596391   2456488.5   7551500.4
...
    34  2014    0.94692763  0.7477073   274119.0    17521746.5
    34  2011    0.93822571  0.7259823   216827.0    15542581.1
    35  2014    0.86932004  0.5752208   1687155.0   17521746.5
    35  2011    0.85889245  0.6049802   1313867.0   15542581.1

可以按照@LynnL的建议去做,就是加入一个交互项。如果 ER 的影响之间存在显着差异(即不为零),则此项将为您提供较小的 p 值。

最好下次提供数据,因为我们不知道YEARS等是什么,也不知道这两个data.frames是否可以合并。下面我建议使用一个zscore来查看2个系数之间的差异:

library(plm)

使用数据的前 12 行,假设这是组合数据集:

    df = structure(list(BANKS = c(1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 
5L, 6L, 6L), YEARS = c(2014L, 2011L, 2014L, 2011L, 2014L, 2011L, 
2014L, 2011L, 2014L, 2011L, 2014L, 2011L), VCTC = c(0, 0.16887878, 
0.87297022, 0.85148515, 0.24422236, 0.24970615, 0.33174224, 0.28012834, 
0.31638913, 0.32945877, 0.22575998, 0.21708543), ER = c(0.85591, 
1.512362, 0.6225519, 0.6321466, 0.4315355, 0.4156023, 0.3927662, 
0.4291702, 0.3525573, 0.3633482, 0.345002, 0.3596391), TA = c(235193.8, 
301355, 809343.3, 777083.1, 2573915.1, 1853465, 2457455.2, 1877624.1, 
2697975.7, 1949372.7, 3320881.7, 2456488.5), GDP = c(534678.1, 
522645.5, 1801480.1, 1789140.7, 10438529.2, 7551500.4, 10438529.2, 
7551500.4, 10438529.2, 7551500.4, 10438529.2, 7551500.4)), class = "data.frame", row.names = c(NA, 
-12L))

你从这里开始,运行带有交互项的回归:

df$YEARS = factor(df$YEARS)
pooled2011<-plm(VCTC ~ ER + log(TA) + log(GDP),model = "pooling",data=pdata.frame(subset(df,YEARS==2011),index=c("BANKS","YEARS")))

pooled2014<-plm(VCTC ~ ER + log(TA) + log(GDP),model = "pooling",data=pdata.frame(subset(df,YEARS==2014),index=c("BANKS","YEARS")))

在每个基于 6 个数据点的回归中。 运行 整个数据集。

b1 <- summary(pooled2011)$coefficients["ER",1]
se1 <- summary(pooled2011)$coefficients["ER",2]
b2 <- summary(pooled2014)$coefficients["ER",1]
se2 <- summary(pooled2014)$coefficients["ER",2]

差异只是两个回归系数之间的差异(假设所有变量都在同一尺度上),您可以报告标准误差:

compare.coeff <- function(b1,se1,b2,se2){
delta = b1-b2
se = sqrt(se1^2+se2^2)
Zscore = (delta)/se
p_value = 2*pnorm(-abs(Zscore))
c(delta=delta,se=se,Zscore=Zscore,p_value=p_value)
}

compare.coeff(b1,se1,b2,se2)
     delta         se     Zscore    p_value 
-1.7461849  7.4390338 -0.2347328  0.8144162 

你也可以看看books or chapters like this, basically anything that describes the use of the interaction term. I also answered a similar question before,你也可以看看