⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mixtheta2par.r

📁 这个包里面含有利用极大似然估计方法来拟合成组数据和条件数据的有限混合分布模型的函数
💻 R
字号:
## last modified June 2002

mixtheta2par <- function(mixtheta, mixpar, constr, mixprop = TRUE) 
{
    k <- nrow(mixpar)
    lentheta <- length(mixtheta)
    if (mixprop) {
        if (constr$conpi == "NONE") {
            lpi <- k - 1
            if (lpi > 0) {
                pi <- mixtheta[1:lpi]
                pi <- c(pi, 1 - sum(pi))
            }
            else pi <- mixpar[, 1]
        }
        else if (constr$conpi == "PFX" & sum(constr$fixpi) < 
            k - 1) {
            pi <- mixpar[, 1]
            lpi <- k - 1 - sum(constr$fixpi)
            lapi <- 1 - sum(mixtheta[1:lpi]) - sum(mixpar[constr$fixpi, 
                1])
            fpi <- c(mixtheta[1:lpi], lapi)
            pi[!constr$fixpi] <- fpi
        }
        else if (constr$conpi == "PFX" & sum(constr$fixpi) >= 
            k - 1) {
            lpi <- 0
            pi <- mixpar[, 1]
        }
    }
    else {
        lpi <- 0
        pi <- mixpar[, 1]
    }
    if (constr$conmu == "NONE") 
        mu <- mixtheta[(lpi + 1):(lpi + k)]
    else if (constr$conmu == "MFX") {
        mu <- mixpar[, 2]
        mu[!constr$fixmu] <- mixtheta[(lpi + 1):(lpi + sum(!constr$fixmu))]
    }
    else if (constr$conmu == "MEQ") 
        mu <- rep(mixtheta[lpi + 1], k)
    else if (constr$conmu == "MES") {
        mu <- mixpar[, 2]
        mu[1:2] <- mixtheta[(lpi + 1):(lpi + 2)]
        if (k >= 3) 
            mu[3:k] <- mu[1] + ((3:k) - 1) * (mu[2] - mu[1])
    }
    else if (constr$conmu == "MGC") {
        mu <- mixpar[, 2]
        mu[1:3] <- mixtheta[(lpi + 1):(lpi + 3)]
        if (k >= 4) 
            mu[4:k] <- mu[1] + ((mu[2] - mu[1])^2) * (1 - ((mu[3] - 
                mu[2])/(mu[2] - mu[1]))^((4:k) - 1))/((mu[2] - 
                mu[1]) - (mu[3] - mu[2]))
    }
    if (constr$consigma == "NONE") 
        sigma <- exp(mixtheta[(lentheta - k + 1):lentheta])
    else if (constr$consigma == "SFX") {
        sigma <- mixpar[, 3]
        sigma[!constr$fixsigma] <- exp(mixtheta[(lentheta - sum(!constr$fixsigma) + 
            1):lentheta])
    }
    else if (constr$consigma == "FCV") 
        sigma <- constr$cov * mu
    else if (constr$consigma == "CCV") {
        cov <- exp(mixtheta[lentheta])/mu[1]
        sigma <- cov * mu
    }
    else if (constr$consigma == "SEQ") 
        sigma <- rep(exp(mixtheta[lentheta]), k)
    else if (constr$consigma == "BINOM") 
        sigma <- sqrt(mu - mu^2/constr$size)
    else if (constr$consigma == "NBINOM") 
        sigma <- sqrt(mu^2/constr$size + mu)
    else if (constr$consigma == "POIS") 
        sigma <- sqrt(mu)
    data.frame(pi = pi, mu = mu, sigma = sigma)
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -