我是R的新手,我完全依赖谷歌来帮助我航行。我正在研究贝叶斯分层线性模型。我的情况与链接上的情况非常相似:http://www.r-tutor.com/gpu-computing/rbayes/rhierlmc
类别由Catcode定义。我试图估计模型中各种回归量的β系数。代码工作正常,我正在获得所有回归量的beta值,除了一个 - 总体而言。我将此变量添加到模型中的那一刻,我收到错误:
Error in chol.default(XpX/sigmasq + A) :
the leading minor of order 7 is not positive definite
订单号(此处为7)可以是1到7之间的任何值,具体取决于模型中整体的位置
完整代码:
library(bayesm)
str(Hier_Rank)
codeFactors <- factor(Hier_Rank$Catcode)
codeLevels <- levels(codeFactors)
lengthofCodeLevels <- length(codeLevels);
lengthofCodeLevels
regdata <-NULL
for (i in 1:lengthofCodeLevels) {
filter = Hier_Rank$Catcode == codeLevels[i]
y = Hier_Rank$Sales[filter]
X = cbind(1, Hier_Rank$Price[filter], Hier_Rank$Adspends[filter] ,Hier_Rank$US.small.min[filter], Hier_Rank$US.mid.min[filter], Hier_Rank$US.large.min[filter], Hier_Rank$Overall[filter])
regdata[[i]] = list(y=y, X=X)
}
Data <− list(regdata=regdata)
Mcmc <− list(R=2000)
system.time(
output<-bayesm::rhierLinearModel(
Data=Data,
Mcmc=Mcmc))
beta.2 <− mean(as.vector(output$betadraw[, 2, 201:2000]))
beta.2
beta.3 <− mean(as.vector(output$betadraw[, 3, 201:2000]))
beta.3
beta.4 <− mean(as.vector(output$betadraw[, 4, 201:2000]))
beta.4
beta.5 <− mean(as.vector(output$betadraw[, 5, 201:2000]))
beta.5
beta.6 <− mean(as.vector(output$betadraw[, 6, 201:2000]))
beta.6
beta.7 <− mean(as.vector(output$betadraw[, 7, 201:2000]))
beta.7
除了测试版7之外,我得到了所有测试版的值,我得到了错误:
Error in output$betadraw[, 7, 201:2000] : subscript out of bounds
数据如下:
Sales Price Adspends US.small.min US.mid.min US.large.min Overall CatCode
10 0.5 123 1 0 0 5 1
20 0.7 133 0 4 0 4 2
24 0.8 400 0 0 6 3.5 3
30 0.66 155 3 0 0 6 1
34 0.4 166 0 8 0 7 2
35 0.3 229 6 0 0 4.5 1
有人可以帮忙吗?
我对此代码有其他问题。 1)如何修改面板数据的相同代码 2)如何找到β系数的标准误差?