我正在运行不平衡的面板回归。
独立变量是总收入 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'
请帮忙。
由于
答案 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
表示法作为“数据中所有其他列的简写”。