Dear Sirs,
The BUGS program below is meant to implement a slightly simplified
version of the Press-Shigemasu Factor analysis for 4 variables, 2
independent priors. I get the error message "unable to choose update method
for psi(1,1)", which according to the manual indicates a restriction has
been violated. But I don't see it. Perhaps I am blind but conditionally
everything looks normal or Wishart. Like everyone else, I would be
extremely grateful for any help!!!
<<PressFactor.txt>>
model PressFactor {
for ( j in 1:m) {
lamt[j,1:p] ~ dmnorm( mu.lam[1:p], var.lam [1:p ,1:p ]);
}
psi[1:p,1:p]~dwish(r[1:p ,1:p ],10);
for ( i in 1:N) {
f[i, 1:m] ~ dmnorm( mu.fac[1:m ], var.fac [1:m ,1:m ]);
for ( j in 1:p) {
mu[i, j] <- lamt[1, j]*f[i, 1] + lamt[2, j]*f[i, 2];
}
x[i, 1:p] ~ dmnorm(mu[i,1:p ], psi [1:p ,1:p ]);
}
for ( i1 in 1:m) {
mu.fac[i1] <- 0;
for ( j1 in 1:m) {
var.fac[i1, j1] <- equals(i1, j1);
}
}
for ( i2 in 1:p) {
mu.lam[i2] <- 1;
for ( j2 in 1:p) {
var.lam[i2, j2] <- pscale*psi[i2, j2];
}
}
for ( i3 in 1:p) {
for ( j3 in 1:p) {
r[i3, j3] <- i3*equals(i3, j3);
}
}
}
list(N=50, p=4, m=2, pscale=1,
x = structure(.Data=c(
2.0, -1.9, -3.9, -2.5,
0.4, 0.1, 0.7, 1.1,
-0.0, 1.4, 2.0, 0.1,
-2.6, 0.6, 2.2, 1.4,
2.2, 0.7, 3.7, -0.6,
1.2, 1.2, -0.0, 2.1,
-2.4, 3.7, 0.3, 0.8,
-1.8, 0.1, 3.3, 1.5,
-0.4, 0.7, 1.5, 0.7,
0.4, 1.8, -0.7, -1.2,
1.4, 2.1, 3.8, -0.5,
-0.6, 1.1, 2.3, 1.9,
-2.5, -0.4, 1.4, -2.5,
0.7, 2.0, 0.1, -0.7,
0.3, 1.7, 1.2, -0.8,
-1.3, -3.7, -3.7, -1.5,
-1.9, -1.0, -2.6, -0.8,
1.7, 2.1, 3.2, 0.3,
-1.6, -1.9, -2.7, -3.1,
-3.7, -1.3, 0.1, -0.3,
0.2, 2.5, 1.2, -0.7,
1.3, 1.4, 1.4, 1.0,
0.1, 0.7, 2.9, 2.6,
0.0, 0.8, 0.7, 1.2,
-0.5, 0.1, -1.1, 3.1,
-1.6, -4.4, -6.3, 0.7,
2.4, 1.1, 3.0, 1.2,
0.8, -0.8, -3.3, -0.7,
-2.4, -3.2, -4.3, -2.1,
1.4, 0.7, 0.0, -0.3,
-1.6, -1.6, -0.9, -3.2,
0.6, 2.3, 1.9, -1.5,
1.0, 0.8, 2.8, -2.4,
0.1, -0.0, -0.6, -3.3,
1.6, 0.0, -1.2, -3.1,
-0.5, 1.2, 3.5, 3.4,
0.6, -2.2, 1.3, 0.3,
-0.6, -1.6, 1.8, -1.0,
-1.3, -1.8, -1.5, -1.4,
1.0, -0.6, 0.9, -1.8,
3.4, -0.4, -2.6, -1.3,
-1.9, -2.1, -2.9, -0.4,
1.3, 3.6, 4.2, 0.2,
-2.7, -1.6, -2.0, -1.6,
-0.4, 0.0, -1.0, -0.9,
-1.0, -0.7, -2.8, -1.7,
2.5, 1.8, 5.2, 2.2,
-0.5, -1.0, 1.0, 2.3,
-0.7, -1.1, -1.8, -2.5,
2.2, 0.2, -1.3, 1.3),.Dim=c(50,4)))
model PressFactor {
for ( j in 1:m) {
lamt[j,1:p] ~ dmnorm( mu.lam[1:p], var.lam [1:p ,1:p ]);
}
psi[1:p,1:p]~dwish(r[1:p ,1:p ],10);
for ( i in 1:N) {
f[i, 1:m] ~ dmnorm( mu.fac[1:m ], var.fac [1:m ,1:m ]);
for ( j in 1:p) {
mu[i, j] <- lamt[1, j]*f[i, 1] + lamt[2, j]*f[i, 2];
}
x[i, 1:p] ~ dmnorm(mu[i,1:p ], psi [1:p ,1:p ]);
}
for ( i1 in 1:m) {
mu.fac[i1] <- 0;
for ( j1 in 1:m) {
var.fac[i1, j1] <- equals(i1, j1);
}
}
for ( i2 in 1:p) {
mu.lam[i2] <- 1;
for ( j2 in 1:p) {
var.lam[i2, j2] <- pscale*psi[i2, j2];
}
}
for ( i3 in 1:p) {
for ( j3 in 1:p) {
r[i3, j3] <- i3*equals(i3, j3);
}
}
}
list(N=50, p=4, m=2, pscale=1,
x = structure(.Data=c(
2.0, -1.9, -3.9, -2.5,
0.4, 0.1, 0.7, 1.1,
-0.0, 1.4, 2.0, 0.1,
-2.6, 0.6, 2.2, 1.4,
2.2, 0.7, 3.7, -0.6,
1.2, 1.2, -0.0, 2.1,
-2.4, 3.7, 0.3, 0.8,
-1.8, 0.1, 3.3, 1.5,
-0.4, 0.7, 1.5, 0.7,
0.4, 1.8, -0.7, -1.2,
1.4, 2.1, 3.8, -0.5,
-0.6, 1.1, 2.3, 1.9,
-2.5, -0.4, 1.4, -2.5,
0.7, 2.0, 0.1, -0.7,
0.3, 1.7, 1.2, -0.8,
-1.3, -3.7, -3.7, -1.5,
-1.9, -1.0, -2.6, -0.8,
1.7, 2.1, 3.2, 0.3,
-1.6, -1.9, -2.7, -3.1,
-3.7, -1.3, 0.1, -0.3,
0.2, 2.5, 1.2, -0.7,
1.3, 1.4, 1.4, 1.0,
0.1, 0.7, 2.9, 2.6,
0.0, 0.8, 0.7, 1.2,
-0.5, 0.1, -1.1, 3.1,
-1.6, -4.4, -6.3, 0.7,
2.4, 1.1, 3.0, 1.2,
0.8, -0.8, -3.3, -0.7,
-2.4, -3.2, -4.3, -2.1,
1.4, 0.7, 0.0, -0.3,
-1.6, -1.6, -0.9, -3.2,
0.6, 2.3, 1.9, -1.5,
1.0, 0.8, 2.8, -2.4,
0.1, -0.0, -0.6, -3.3,
1.6, 0.0, -1.2, -3.1,
-0.5, 1.2, 3.5, 3.4,
0.6, -2.2, 1.3, 0.3,
-0.6, -1.6, 1.8, -1.0,
-1.3, -1.8, -1.5, -1.4,
1.0, -0.6, 0.9, -1.8,
3.4, -0.4, -2.6, -1.3,
-1.9, -2.1, -2.9, -0.4,
1.3, 3.6, 4.2, 0.2,
-2.7, -1.6, -2.0, -1.6,
-0.4, 0.0, -1.0, -0.9,
-1.0, -0.7, -2.8, -1.7,
2.5, 1.8, 5.2, 2.2,
-0.5, -1.0, 1.0, 2.3,
-0.7, -1.1, -1.8, -2.5,
2.2, 0.2, -1.3, 1.3),.Dim=c(50,4)))
|