R中的面板回归错误

时间:2016-03-19 10:57:22

标签: r plm

我正在运行不平衡的面板回归。

独立变量是总收入 Dependent Varibales是DEX,GRW,Debt和Life。 时间就是一年 分组是国家

我已成功执行以下命令:

tino=read.delim("clipboard")
tino
summary(tino)
Dep<- with(tino, cbind(Gross, index=c("Country, Year"))            
Ind<- tino[ , c('DEX', 'GRW' , 'Debt', 'Life')] 
install.packages("plm")
library('plm')          
pandata<-plm.data(tino)
tino          
summary(pandata)  
summary(Dep)
summary(Ind)

但是,当我在下面运行命令获取结果时,我收到错误。

pooling<- plm(Dep~Ind, data = pandata, model= "pooling") 

给出错误

Error in model.frame.default(terms(formula, lhs = lhs, rhs = rhs, data = data,: invalid type (list) for variable 'Ind'

请帮忙。

由于

1 个答案:

答案 0 :(得分:0)

如果无法访问您的数据,则无法确认这是否有效,但我将尝试在您的代码中指出可能导致错误的几个问题。

这条线很好:

tino=read.delim("clipboard")

这是您开始犯错的地方:

Dep<- with(tino, cbind(Gross, index=c("Country, Year"))            
Ind<- tino[ , c('DEX', 'GRW' , 'Debt', 'Life')] 

with()通常用于从data.frame创建新的向量。它所做的只是允许您删除$表示法来引用data.frame中的变量而不是其他任何内容。从您的代码读取开始,您可能会认为with()实际上正在修改tino对象,而不是data对象。

此外,当您想构建一个用于回归模型的data.frame时,您需要在一个data.frame或matrix中使用所有右侧和左侧变量,而不是将它们分开。这是因为大多数建模函数使用“公式”和model.frame()参数进行操作,这些参数在建模之前传递给pandata <- plm.data(tino, index = c("Country", "Year")) pooling <- plm(Gross ~ DEX + GRW + Debt + Life, data = pandata, model = "pooling") summary(pooling) 以预处理数据。

这意味着您可能想要执行以下操作,跳过上述所有内容:

pandata2 <- plm.data(tino[ , c('Gross', 'DEX', 'GRW' , 'Debt', 'Life')], index = c("Country", "Year"))
pooling2 <- plm(Gross ~ ., data = pandata2, model = "pooling")

如果您有很多右侧变量,您可以使用以下内容对data.frame进行子集化:

.

使用IMyInterfaceName.extension表示法作为“数据中所有其他列的简写”。