PLM не распознает имя моей переменной id - PullRequest
0 голосов
/ 06 марта 2019

Я новичок в r, и я делаю регрессионный анализ с учетом фиксированных эффектов с использованием plm (). Я выбрал метод twoways для учета как времени, так и индивидуальных эффектов. Однако после запуска приведенного ниже кода я продолжаю получать это сообщение:

Error in pdata.frame(data, index) : 
  variable id does not exist (individual index)

Вот код:

pdata<-DATABASE[,c(2:4,13:21)]
pdata$id<-group_indices(pdata,ISO3.p,Productcode)
coutnin<-dcast.data.table(pdata,ISO3.p+Productcode~.,value.var = "id")
setcolorder(pdata,neworder=c("id","Year"))
pdata<-pdata.frame(pdata,index=c("id","Year"))
reg<-plm(pdata,diff(TV,1)~diff(RERcp,1)+diff(GDPR.p,1)-diff(GDPR.r,1),effect="twoways",model="within",index = c("id","Year"))

Обратите внимание, что структура pdata показывает, что в переменной id есть несколько уровней в числовой форме. Сначала я пытался использовать переменную строкового типа, но получаю один и тот же результат:

Classes ‘data.table’ and 'data.frame':  1211800 obs. of  13 variables:
 $ id         : int  4835 6050 13158 15247 17164 18401 19564 23553 24895 27541 ...
 $ Year       : int  1996 1996 1996 1996 1996 1996 1996 1996 1996 1996 ...
 $ Productcode: chr  "101" "101" "101" "101" ...
 $ ISO3.p     : Factor w/ 171 levels "ABW","AFG","AGO",..: 8 9 20 22 27 28 29 34 37 40 ...
 $ e          : num  0.245 -0.238 1.624 0.693 0.31 ...
 $ RERcp      : num  -0.14073 -0.16277 1.01262 0.03908 -0.00243 ...
 $ RERpp      : num  -0.1712 NA NA NA -0.0952 ...
 $ RER_GVC    : num  -3.44 NaN NA NA NaN ...
 $ GDPR.p     : num  27.5 26.6 23.5 20.3 27.8 ...
 $ GDPR.r     : num  30.4 30.4 30.4 30.4 30.4 ...
 $ GVCPos     : num  0.141 0.141 0.141 0.141 0.141 ...
 $ GVCPar     : num  0.436 0.436 0.436 0.436 0.436 ...
 $ TV         : num  17.1 17.1 17.1 17.1 17.1 ...
 - attr(*, ".internal.selfref")=<externalptr> 

Когда я конвертирую data.table в pdata.frame, я не получаю никаких предупреждений, это происходит только после того, как я запускаю функцию plm. При запуске View (table (index (pdata), useNA = "ifany")) он не отображает значение больше 1, поэтому я предполагаю, что в моих данных нет дубликатов obs.

Буду очень признателен за любую помощь, заранее спасибо!

1 Ответ

0 голосов
/ 07 марта 2019

Попробуйте поместить аргумент данных на второе место в операторе plm.Если pdata уже преобразован в pdata.frame, пропустите аргумент index в операторе plm, т. Е. Попробуйте следующее:

reg <- plm(diff(TV,1) ~ diff(RERcp,1)+diff(GDPR.p,1)-diff(GDPR.r,1), data = pdata, effect = "twoways", model = "within")
...