Bayesm包中的R - 正定矩阵

时间:2014-12-28 00:10:44

标签: r hierarchical-data bayesian

我是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)如何找到β系数的标准误差?

0 个答案:

没有答案