Я новичок в bayesm package (и вообще байесовское моделирование). У меня есть прецедент, который мотивировал текущие усилия: необходимость в многомерной модели пробит, которую я могу обернуть в Python. Упаковка bayesm обеспечивает такой метод, rmvpGibbs()
. У меня есть некоторые трудности с его запуском, потому что я продолжаю получать исключение, жалуясь на то, что параметр определения дисперсии (V
) имеет «неправильное измерение».R: Ошибка измерения входного сигнала (байесм: `rmvpGibbs()`)
Я просто пытаюсь установить игрушку с данными Scotch, размещенными в библиотеке, прежде чем перейти к моему прецеденту. Вот моя настройка.
#Capture number of equations (scotches)
p<-ncol(Scotch)
#Capture number of observations
n<-nrow(Scotch)
#Capture the number of covariates (coefficients to be estimated)
d<-1
#Capture regressor data
z<-matrix(d)
#Construct design matrix (kronecker product of d-dimensional array of regressors and Ip for each equation)
X3_tmp<-z %x% diag(p)
X3<-X3_tmp
for(i in 2:n) {X3=rbind(X3,X3_tmp)}
#Capture number of columns k
k<-ncol(X3)
#Convert to long format
scotch_long<-melt(Scotch)
#Capture dependent data
y3<-scotch_long$value
#Capture regressors
#X3<-matrix(1,length(y3),1)
#Consolidate in list
Data3=list(p=nrow(Scotch),y=y3,X=X3)
#Capture priors for coefficients
betabar3<-c(rep(0,k))
A3<-0.01*diag(k)
#Capture priors for variance (start with default)
nu3<-(n-1)+3
V3<-nu3*diag(p)
#Consolidate in list
Prior3=list(betabar=betabar3,A=A3,nu=nu3,V=V3)
#Define initial values
beta0_3<-rep(0,p)
sigma0_3<-diag(p)
sigma0_3[lower.tri(sigma0_3)]<-.5
sigma0_3[upper.tri(sigma0_3)]<-.5
#Define number of iterations
R3<-10000
#Define keep behavior
keep3=1
#Consolidate in list
MCMC3=list(beta0=beta0_3,sigma0=sigma0_3,R=R3,keep=keep3)
#Fit model
simOut3=rmvpGibbs(Data3,Prior3,MCMC3)
Вызов rmvpGibbs()
терпит неудачу за исключением "V is of incorrect dimension"
. Однако, когда я проверить состояние непосредственно (от источника) ...
if(sum(dim(V)==c(p,p)) != 2) pandterm("V is of incorrect dimension")
... Я считаю, что sum(dim(V)==c(p,p))
делает действительно равен 2 (как и ожидалось). Любые советы о том, почему это происходит, будут очень признательны. (. Вы можете также критический разбор настройки, если вы так склонны)
Обратите внимание, что если вы предоставили фактический набор входных данных «Scotch» для тестирования и устранения неполадок, это было бы полезно при воспроизведении проблемы. – Roger