PLM 无法识别我的 id 变量名称
PLM is not recognizing my id variable name
我正在使用包 plm
中的 plm()
进行考虑固定效应的回归分析。我选择了双向方法来考虑时间和个体的影响。但是,在 运行 执行以下代码后,我不断收到此消息:
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
函数之后发生。从 运行ning View(table(index(pdata), useNA = "ifany"))
它显示没有大于 1 的值,因此我假设我的数据中没有重复的 obs。
尝试将数据参数放在plm
语句的第二个位置。如果 pdata
已经转换为 pdata.frame
,请在 plm
语句中省略 index
参数,即,试试这个:
reg <- plm(diff(TV,1) ~ diff(RERcp,1)+diff(GDPR.p,1)-diff(GDPR.r,1), data = pdata, effect = "twoways", model = "within")
我正在使用包 plm
中的 plm()
进行考虑固定效应的回归分析。我选择了双向方法来考虑时间和个体的影响。但是,在 运行 执行以下代码后,我不断收到此消息:
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
函数之后发生。从 运行ning View(table(index(pdata), useNA = "ifany"))
它显示没有大于 1 的值,因此我假设我的数据中没有重复的 obs。
尝试将数据参数放在plm
语句的第二个位置。如果 pdata
已经转换为 pdata.frame
,请在 plm
语句中省略 index
参数,即,试试这个:
reg <- plm(diff(TV,1) ~ diff(RERcp,1)+diff(GDPR.p,1)-diff(GDPR.r,1), data = pdata, effect = "twoways", model = "within")