我想使用PLM包在R中估计一些面板数据模型。由于在理论方面的知识受限,我严格按照“计量经济学学院”(这里是代码)的说明进行操作。我根据自己的数据(独立/依赖变量)定制了该代码,但没有改变其他语法/公式。
现在出现了问题:
所有模型都可以估计,其结果也可以总结和解释,除了随机效应模型。在这里,我收到以下错误消息:
由于政策限制,我不允许上传数据。但是我可以提供信息,这是资产负债表数据。被解释的因变量是一段时间内资产负债表余额的标准偏差,应该由不同的资产负债表余额解释。这些主要是类型为“位置a/平均值”的比率(1到4的比率)。作为附加独立变量,考虑了资产负债表上的资产平均总额。
再次强调:实际上一切都正常,只有最后一个模型(随机)产生了所述错误。
最终问题可能是由比率定义引起的吗?它们使用变量“平均值”(这也是自己的独立变量)定义?
编辑:Traceback-Code
现在出现了问题:
所有模型都可以估计,其结果也可以总结和解释,除了随机效应模型。在这里,我收到以下错误消息:
Error in solve.default(crossprod(X.m)) :
system is computationally singular: reciprocal condition number = 9.57127e-023
有没有人能给我指点一下这个错误实际上是什么意思?可能的潜在原因是什么,我应该如何更正代码以获得结果?
编辑: 更准确地说,这是我使用的R代码的部分:
# read in data
mydata<- read.csv2("Panel.csv")
attach(mydata)
# define dependant variable
sd1 <- cbind(sd)
# define independant variable
x <- cbind(ratio1, ratio2, ratio3, ratio4, mean)
# Set data as panel data
pdata <- plm.data(mydata, index=c("id","t"))
# Pooled OLS estimator
pooling <- plm(sd1 ~ x, data=pdata, model= "pooling")
summary(pooling)
# Between estimator
between <- plm(sd1 ~ x, data=pdata, model= "between")
summary(between)
# First differences estimator
firstdiff <- plm(sd1 ~ x, data=pdata, model= "fd")
summary(firstdiff)
# Fixed effects or within estimator
fixed <- plm(sd1 ~ x data=pdata, model= "within")
summary(fixed)
# Random effects estimator
random <- plm(sd1 ~ x, data=pdata, model= "random")
summary(random)
由于政策限制,我不允许上传数据。但是我可以提供信息,这是资产负债表数据。被解释的因变量是一段时间内资产负债表余额的标准偏差,应该由不同的资产负债表余额解释。这些主要是类型为“位置a/平均值”的比率(1到4的比率)。作为附加独立变量,考虑了资产负债表上的资产平均总额。
再次强调:实际上一切都正常,只有最后一个模型(随机)产生了所述错误。
最终问题可能是由比率定义引起的吗?它们使用变量“平均值”(这也是自己的独立变量)定义?
编辑:Traceback-Code
> random <- plm(sd1 ~ x, data=pdata, model= "random")
Error in solve.default(crossprod(X.m)) :
system is computationally singular: reciprocal condition number = 1.65832e-022
> traceback()
8: solve.default(crossprod(X.m))
7: solve(crossprod(X.m))
6: diag(solve(crossprod(X.m)) %*% crossprod(X.sum))
5: swar(object, data, effect)
4: ercomp.formula(formula, data, effect, method = random.method)
3: ercomp(formula, data, effect, method = random.method)
2: plm.fit(formula, data, model, effect, random.method, inst.method)
1: plm(sd1 ~ x, data = pdata, model = "random")
X.m
(其内积为solve(crossprod(X.m))
)没有完全秩——X.m
的列之间存在(至少在数值上)线性依赖关系。这可能是由于以下原因之一:1)尝试估计比观测量还要多的参数;2)某些列之间存在完美相关性。如果没有可重现的示例或错误的traceback()
,很难进一步说明。 - fabians