Как мне выполнить совместный тест Вальда на коэффициентах регрессии данных панели с некоторыми конкретными значениями? - PullRequest
1 голос
/ 14 апреля 2019

Я хотел бы сделать простой совместный тест Вальда на мои коэффициенты регрессии с фиксированными эффектами, но я хочу установить ограничение на что-то отличное от нуля. Более конкретно я хотел бы проверить: H0: ai = 0 и b = 1 для каждого i или, в основном, извлеченные перехваты из модели с фиксированными эффектами (ai) (я знаю, что в модели с фиксированными эффектами нет перехвата, но вы все равно можете извлечь их с помощью команды fixef (), и они должны быть близки к нулю, если модель с фиксированными эффектами правильная модель) равна нулю для каждого i и мои коэффициенты (bi) равны 1.

Вот что у меня есть:

library(plm)


form <- R_excess ~ I(beta_MKT_RF*MKT_RF) + I(beta_HML*HML) + I(beta_SMB*SMB)
reg1 <- plm(form, data=nlspd, model="within")

summary(reg1, vcov =function(x) vcovSCC(x, type="HC3", maxlag=12))

А вот результат, как вы видите, все мои коэффициенты близки к 1:

Call:
plm(formula = form, data = nlspd, model = "within")

Balanced Panel: n = 10, T = 624, N = 6240

Residuals:
       Min.     1st Qu.      Median     3rd Qu.        Max. 
-7.8706e-02 -9.0319e-03  3.8278e-05  8.9624e-03  1.1349e-01 

Coefficients:
                         Estimate Std. Error t-value  Pr(>|t|)    
I(beta_MKT_RF * MKT_RF) 1.0023818  0.0072942 137.422 < 2.2e-16 ***
I(beta_HML * HML)       0.9985867  0.0527123  18.944 < 2.2e-16 ***
I(beta_SMB * SMB)       0.9731437  0.0355880  27.345 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares:    18.067
Residual Sum of Squares: 1.5037
R-Squared:      0.91677
Adj. R-Squared: 0.91661
F-statistic: 7808.71 on 3 and 623 DF, p-value: < 2.22e-16

Я также могу получить перехватчики с фиксированным эффектом, используя:

summary(fixef(reg1), vcov =function(x) vcovSCC(x, type="HC3", maxlag=12))
      Estimate  Std. Error t-value  Pr(>|t|)    
1   0.00127680  0.00062245  2.0512  0.040285 *  
2   0.00136923  0.00062251  2.1995  0.027877 *  
3   0.00104805  0.00062246  1.6837  0.092283 .  
4   0.00132979  0.00062259  2.1359  0.032727 *  
5  -0.00061048  0.00062252 -0.9807  0.326795    
6   0.00085262  0.00062247  1.3697  0.170816    
7  -0.00104724  0.00062250 -1.6823  0.092557 .  
8  -0.00089731  0.00062275 -1.4409  0.149672    
9  -0.00174805  0.00062292 -2.8062  0.005028 ** 
10 -0.00271173  0.00062343 -4.3497 1.385e-05 ***

Теперь я хочу провести совместный тест Вальда по этим коэффициентам, чтобы проверить, является ли для каждого i: H0: ai = 0 и b = 1.

Редактировать: Это отличается от F-теста на Фиксированных эффектах, так как я проверяю ненулевую гипотезу.

1 Ответ

0 голосов
/ 15 апреля 2019

Вопрос , упомянутый в комментариях @ Helix123, делает не совсем то, что вам нужно (и при этом речь не идет о проверке, что все коэффициенты равны нулю), но этосвязанные с.В частности, если вы хотите проверить только то, что фиксированные эффекты равны нулю, вы можете найти ответы там.

В вашем случае, однако, в дополнение к гипотезе о фиксированных эффектах мы также проверяем, все другие коэффициенты принимают некоторое ненулевое значение.Вот почему это создает проблемы.

Если вы хотите проверить, скажем, что I(beta_HML * HML) имеет нулевой коэффициент, тогда ограниченная модель, предоставленная для pFtest (см. Принятый ответ в связанном вопросе), будетreg2 как в

form <- R_excess ~ -1 + I(beta_MKT_RF * MKT_RF) + I(beta_SMB * SMB)
reg2 <- plm(form, data = nlspd, model = "pooling") # Note "pooling", which sets fixed effects to zero

Если вы хотите проверить, что коэффициент этой переменной равен 1, то вы можете использовать reg3 в

form <- R_excess - I(beta_HML * HML) ~ -1 + I(beta_MKT_RF * MKT_RF) + I(beta_SMB * SMB)
reg3 <- plm(form, data = nlspd, model = "pooling") # Note "pooling", which sets fixed effects to zero

Поскольку ваша гипотеза оИз всех трех оставшихся коэффициентов нам на самом деле нечего оценивать справа.Бывает, что plm это не нравится и выдает ошибку empty model.

Если бы мы использовали lm, был бы другой вариант, скажем, offset(beta_MKT_RF * MKT_RF) в формуле, которыйустановит коэффициент на 1, и он не будет оценен.Однако plm не допускает offset.

Тем не менее, кажется, что более простой вариант - использовать lm, как предложено в связанном вопросе.В частности,

data("Produc", package = "plm")
mU <- lm(log(gsp) ~ -1 + log(emp) + factor(state), data = Produc)
mR <- lm(log(gsp) ~ -1 + offset(log(emp)), data = Produc)
library(lmtest)
lrtest(mR, mU)
# Likelihood ratio test
#
# Model 1: log(gsp) ~ -1 + offset(log(emp))
# Model 2: log(gsp) ~ -1 + log(emp) + factor(state)
#   #Df  LogLik Df  Chisq Pr(>Chisq)    
# 1   1 -2187.9                         
# 2  50  1467.3 49 7310.4  < 2.2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

, так что mU содержит фиксированные эффекты и неограниченно оценивает эффект log(emp), тогда как mR не содержит фиксированных эффектов и фиксирует эффект от log(emp) до 1.

Вы не предоставили свои данные, но они должны быть близки к

mU <- lm(R_excess ~ -1 + I(beta_MKT_RF * MKT_RF) + I(beta_HML * HML) +
           I(beta_SMB * SMB) + factor(var), data = nlspd)
mR <- lm(R_excess ~ -1 + offset(beta_MKT_RF * MKT_RF) + offset(beta_HML * HML) +
           offset(beta_SMB * SMB), data = nlspd)
lrtest(mR, mU)

, где var - переменная размера поперечного сечения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...