我正在使用面板数据集:
在下面的代码中,我将所有变量都转换为字符,并希望通过最后一行的pdata.frame命令让R知道我正在使用面板数据。但是,现在的问题是,即使在stringAsFactors = FALSE时,命令pdata.frame仍将变量x2和x3(个体和时间指示器)转换为因子。
#Regressions
df=read_excel("C:/Users/Luuk/Desktop/Master Thesis EME/Data/indep_dep_indlevel.xlsx")
df_dep=data.frame(df[,79])
count=as.data.frame(rep(1:3669, times=1, each=3))
df=cbind(count,df[,3:79])
df_indep=data.frame(df[,c(1:5,8,10:15,17:25,27:44,45,53:77)])
dflm=cbind(df_dep,df_indep)
dflm1 <- data.frame(lapply(dflm, as.character), stringsAsFactors=FALSE)
names(dflm1)[c(2:66)] <- c(paste("x", 1:65, sep=""))
names(dflm1)[1] <- "y"
dflm2=pdata.frame(dflm1,index=c("x1","x2"),stringsAsFactors=FALSE)
因此,以下汇总的OLS模型估计给出了错误:
class(x)中的错误<-setdiff(class(x),“ pseries”):
将类“因素”添加到无效的对象
另外:警告消息:
在model.response(mf,“ numeric”)中:
使用带有因子响应的type =“ numeric”将被忽略
xnam <- paste("x", 3:65, sep="")
Formula <- formula(paste("y ~ ", paste(xnam, collapse=" + ")))
fit=plm(Formula, data=dflm2,model="pooling")
如何使汇总的OLS估算程序起作用?
答案 0 :(得分:0)
运行带有池选项的面板模型等效于仅运行一个简单的OLS lm(y〜x)。我不明白,如果您试图获得汇总估算值,为什么还需要做更多的事情。我无法重现您的错误,使用与您为此目的创建的xlsx文件类似的步骤(请参阅我的代码)。请提供一个重现您的错误的最小工作示例。
df=read_excel("~/Downloads/strtest.xlsx")
df_dep=data.frame(df[,1])
df2=data.frame(lapply(df, as.character), stringsAsFactors=FALSE)
names(df2)[c(1:3)] <- c(paste("x", 1:3, sep=""))
df2=cbind.data.frame(c(1,2,3,80),df2)
names(df2)[1]='y'
df3=pdata.frame(df2,index=c("x1","x2"),stringsAsFactors=FALSE)
plm(y~x1+x2+x3, data=df3,model="pooling")