Hi,
perhaps you can send X.csv in a private message. It is easier to have a
reproducible example than reading the code line by line.
Best,
Uwe Ligges
On 24.06.2010 00:27, Dennis wrote:> Dear R users:
>
> I was trying to fit a HMM with mixture of Gaussian into the dataset, and I
> tried to implement it by R2Winbugs. But I got the following errer.
> *
> Error in FUN(X[[1L]], ...) :
> .C(..): 'type' must be "real" for this format*
>
> Does anybody know what's the problem? Does R2Winbugs accept some matrix
as
> inits? I would really appreciate your help. Thank you very much.
>
> The attached are codes of R and Winbugs.
>
-------------------------------------------------------------------------------------------------------------------------
> library(R2WinBUGS)
> library(MCMCpack)
> library(coda)
>
> ## the input of the dataset
>
> X=read.csv("X.csv",header=FALSE)
> X=as.matrix(X) # transform the data into matrix
>
> ## parameter setting
>
> N=nrow(X) # # of servers
> T=ncol(X) # Time
> m=sum(X)/(N*T) # mean of the training set
>
> M=matrix(m,nrow=N,ncol=T)
> s=sum((X-M)^2)/(N*T) # std of the training set
>
> K=3 # # of clusters
> alpha=0.5 # parameter for Dirichlet distn
> sigmae=0.5 # var of cluster mean mu
> q1=rep(1/K,K) # prior for Z(n,1)
>
> ## MCMC sampling
>
>
data=list("X","m","s","N","T","K","alpha","sigmae","q1")
> inits=function(){list(a0=rbeta(1,1,1),
> qx=matrix(rgamma(K^2,alpha,1),nrow=K), sigma0.r=rbeta(K,1,1))}
>
model.sim=bugs(data,inits,model.file="model.txt",parameters=c("mu","sigma"),
>
n.chains=3,n.iter=3500,n.burnin=500,n.thin=1,bugs.directory="C:/Users/t-wec/Desktop/WinBUGS14",codaPkg=T,debug=T)
> mcmcout=read.bugs(model.sim)
> summary(mcmcout)
>
------------------------------------------------------------------------------------------------------------------------
> model
> {
> # cluster parameters mu and tau
>
> tau1<- (1-a*a)*taue
> taue<- 1/sigmae
>
> for (k in 1:K)
> {
> # cluster mean mu
>
> mu[k,1] ~ dnorm(m,tau1)
>
> for (t in 2:T)
> {
> mu[k,t] ~ dnorm(meanmu[k,t],taue)
> meanmu[k,t]<- m*(1-a)+a*mu[k,t-1]
> }
>
> # cluster varicance tau
>
> sigma0.r[k] ~ dbeta(1,1)
> sigma.r[k]<- s*sigma0.r[k]
> sigma[k]<- sigma.r[k]*sigma.r[k]
> tau[k]<- 1/sigma[k]
> }
>
> # cluster indicator Z and observation X
>
> for (n in 1:N)
> {
> Z[n,1] ~ dcat(q1[1:K])
> X[n,1] ~ dnorm(mu[Z[n,1],1],tau[Z[n,1]])
>
> for (t in 2:T)
> {
> Z[n,t] ~ dcat(q[Z[n,t-1],1:K])
> X[n,t] ~ dnorm(mu[Z[n,t],t],tau[Z[n,t]])
> }
> }
>
> # prior on transition matrix Q
> # each row of Q has a Dirichlet prior realized by Gamma
>
> for (k in 1:K)
> {
> for (l in 1:K)
> {
> q[k,l]<- qx[k,l]/sum(qx[k,1:K])
> qx[k,l] ~ dgamma(alpha,1)
> }
> }
>
> # prior on regression coefficient: uniform on [-1,1]
>
> a0 ~ dbeta(1,1)
> a<- a0*2-1
> }
>
>
> Wei Chen
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.