使用 plm 函数创建面板数据时 class(x) 出错

Error in class(x) while creating panel data using plm function

我正在尝试使用 plm 函数从我从 Excel.

导入的平衡面板数据汇集模型来创建面板数据

当我 运行 代码时,出现以下错误:

Error in class(x) <- setdiff(class(x), "pseries") : invalid to set the class to matrix unless the dimension attribute is of length 2 (was 0)

library(plm)
library(readxl)
library(tidyr)
library(rJava)
library(xlsx)
library(xlsxjars)

all_met<- read_excel("data.xlsx", sheet = "all_met")
attach(all_met)

Y_all_met <- cbind(methane)
X_all_met <- cbind(gdp, ecogr, trade)

pdata_all_met <- plm.data(all_met, index=c("id","time"))

pooling_all_met <- plm(Y_all_met ~ X_all_met, data=pdata_all_met, model= "pooling")

在 运行 编写代码后,我应该得到我的数据的汇总 ols 回归的汇总统计信息。有人可以告诉我如何解决这个问题吗?提前致谢。

第一名:

避免使用 plm.data 并使用 pdata.frame

pdata_all_met <- pdata.frame(all_met, index=c("id","time"))

如果 plm.data 没有给您一个弃用警告,请使用更新版本的包。

第二(并解决问题):

如果您使用 plmdata 参数,请在公式中指定列名,而不是全局环境中的变量,即,试试这个:

plm(methane ~ gdp + ecogr + trade, data=pdata_all_met, model= "pooling")

如果回归中使用的变量被声明为因子,请检查数据结构,您可以通过键入以下内容来完成:str(all_met).

如果是,那么您应该将其声明为双精度或数字(尽量不要使用 as.numeric() 函数,它可能会更改数据中的值)。

我个人已通过导入代码中的下一个规范更改了它:

data <- read_csv("C:/Users/Uness/Desktop/Mydata.csv", 
    col_types = cols(variable1 = col_double(), 
        variable2 = col_double()))
View(data)

其中 variable1 和 variable2 是我使用的变量的名称,如果您复制代码,请务必更改它;)