https://github.com/cran/HLSM
Raw File
Tip revision: 281f55f9f8ae3be814d154729507a7fb494e8a92 authored by Tracy Sweet on 06 December 2021, 12:00:02 UTC
version 0.9.0
Tip revision: 281f55f
LSM_C.R

MCMCfixedIntercept = function(nn,PP,KK,dd,XX,YY,ZZ,
		beta,intercept,MuBeta,SigmaBeta,MuZ,VarZ,
		tuneBetaAll,tuneInt,tuneZAll,
		niter,PriorA,PriorB)
{
    accBetaAll = rep(0,PP) 
    accIntAll = 0
    accZAll = rep(0,sum(nn))
    betaFinal = rep(0,niter*length(beta))
    ZZFinal = rep(0,niter*length(ZZ))
    InterceptFinal = rep(0, niter*length(intercept))
    Zvar1 = Zvar2= rep(0, niter)
    likelihood = rep(0,niter)

    out = .C('sampleFixedIntercept',as.integer(niter), 
             as.double(XX), as.double(YY), as.double(ZZ), 
             as.integer(nn), as.integer(PP), as.integer(dd), as.integer(KK),
             as.double(beta), as.double(intercept),
             as.double(MuBeta),as.double(SigmaBeta), 
             as.double(MuZ), as.double(VarZ), as.double(tuneBetaAll), 
             as.double(tuneZAll), as.double(accBetaAll), as.double(accZAll), 
             as.double(betaFinal), as.double(ZZFinal),
             as.double(Zvar1), as.double(Zvar2),as.double(likelihood),
             as.double(PriorA),as.double(PriorB))

    ## 1, 2-4, 5-8, 9-10, 11-12,
    
    ## 13-15, 16-18,

    ## 19-20, 21-23, 24-25
  

    betaFinal = array(out[[19]],dim = c(niter,PP,1))

    ZZFinal = list()
    accZ = list()
    ZZx = array(out[[20]],dim = c((sum(nn)*dd),niter))
    for(ni in 1:niter ){
	Zsm = list()
        n00 = n0 = 1	
    for(kk in 1:KK ){
        n1 = sum(nn[1:kk] )
        Zsm[[kk]] = array(ZZx[n0:(2*n1),ni],dim = c(nn[kk],dd))
        accZ[[kk]] = out[[18]][n00:(n1)]/(niter)
        n00 = (n1) + 1
	n0 = (2*n1) + 1
}
	ZZFinal[[ni]] = Zsm
}

    
    Zvar1 = out[[21]]
    Zvar2 = out[[22]]
    Zvar = data.frame(Zvar1,Zvar2)
    likelihood = out[[23]]

    accbeta = out[[17]]/(niter)
    
    draws = list( Beta= betaFinal, ZZ = ZZFinal, Zvar = Zvar,likelihood = likelihood)

    accrate = list(beta = accbeta,Z=accZ)

    return(list(draws = draws, acc = accrate)) 
    rm(out)
}


back to top