library(rstan)
mcode <- '
data{
int <lower =1> Nrep[2];
int <lower =1> Nsubjects[2];
int <lower=1> nRowMan;
int <lower=1> man_ind[nRowMan,3];
real <lower=0> manlongx[nRowMan];
int <lower=1> nRowGrav;
int <lower=1> grav_ind[nRowGrav, 3];
real <lower=0> gravlongx[nRowGrav];
vector[2] basemu;
}
transformed data{
vector [2] mu_ln2;
vector [2] sigma_ln2;
real eta;
mu_ln2[1] <- 0.0;
mu_ln2[2] <- 0.0;
sigma_ln2[1] <- 0.5;
sigma_ln2[2] <- 0.5;
eta <- 1.0;
}
parameters{
vector <lower=0>[2] muoverall;
vector <lower=0>[2] mustudy[2];
vector <lower=0>[2] musubject[2, 30];
cov_matrix[2] A;
cov_matrix[2] B;
cov_matrix[2] C [2];
cov_matrix[2] D [2];
}
transformed parameters{
vector[2] xobserved[2,30,3];
for (a in 1:nRowMan) xobserved[man_ind[a,1],man_ind[a,2],man_ind[a,3],1] <- manlongx[a];
for (b in 1:nRowGrav) xobserved[grav_ind[b,1],grav_ind[b,2],grav_ind[b,3],2] <- gravlongx[b];
}
model {
A ~ lkj_cov(mu_ln2, sigma_ln2, eta);
B ~ lkj_cov(mu_ln2, sigma_ln2, eta);
muoverall~multi_normal(basemu, A);
for (study in 1:2){
mustudy[study] ~ multi_normal (muoverall, B);
C[study] ~ lkj_cov(mu_ln2, sigma_ln2, eta);
D[study] ~ lkj_cov(mu_ln2, sigma_ln2, eta);
for (subject in 1:Nsubjects[study]){
musubject[study, subject] ~ multi_normal(mustudy[study], C[study]);
xobserved[study, subject,1] ~ multi_normal(musubject[study, subject], D[study]);
}
}
}
generated quantities{
real bias;
bias<-muoverall[2]-muoverall[1];
}
'
load('full.dat')
#load('missing.dat')
datalist = list(
Nsubjects=c(25,26),
nRowMan =nrow(man_ind),
man_ind =man_ind,
manlongx =manlongx,
nRowGrav =nrow(grav_ind),
grav_ind =grav_ind,
gravlongx =gravlongx,
basemu=c(4,4),
Nrep=c(1,3))
modfit <- stan(model_code = mcode, data = datalist,iter = 1000, chains = 4)