R/it.sol.R

it.sol <- function(sdat, g.hat, d.hat, g.bar, t2, 
    a, b, conv = 1e-04) {
    n <- apply(!is.na(sdat), 1, sum)
    g.old <- g.hat
    d.old <- d.hat
    change <- 1
    count <- 0
    while (change > conv) {
        g.new <- postmean(g.hat, g.bar, n, d.old, 
            t2)
        sum2 <- apply((sdat - g.new %*% t(rep(1, ncol(sdat))))^2, 
            1, sum, na.rm = T)
        d.new <- postvar(sum2, n, a, b)
        change <- max(abs(g.new - g.old)/g.old, abs(d.new - 
            d.old)/d.old)
        g.old <- g.new
        d.old <- d.new
        count <- count + 1
    }
    # cat('This batch took', count, 'iterations until
    # convergence\n')
    adjust <- rbind(g.new, d.new)
    rownames(adjust) <- c("g.star", "d.star")
    adjust
}
yufree/xMSanalyzer documentation built on May 4, 2019, 6:35 p.m.