R

时间:2016-09-20 03:43:30

标签: r metrics montecarlo categorical-data

这是我在StackExchange中提出的第一个问题。我是一个忠实的粉丝并使用许多版本来学习LaTex,R等。我试着寻找前一个问题,虽然有一些相似的问题,但对于我的问题没有任何结论。我感谢任何提供的帮助。

我正在进行蒙特卡罗,并研究不同的离散估计程序,即轨道,概率,多项式逻辑和有序概率,进行比较。

以下是我如何生成数据:

x_1 <- replicate(100, rnorm(500, mean = 0, sd = 2))
x_2 <- replicate(100, rnorm(500, mean = 0, sd = 2))
error <- replicate(100, rnorm(500, mean = 0, sd= 1 ))
y <- 5*x_1 + 10*x_2 + error 

然后我按照以下程序订购数据:

XB <- list()
for (i in 1:100){
    XB[[i]] <- 5*x_1[,i] + 10*x_2[,i]
}

vaar <- list()
for (i in 1:100){
    vaar[[i]] <- sqrt(var(XB[[i]]))
}

tau_1 <- list()
tau_2 <- list()
tau_3 <- list()

for (i in 1:100){
    tau_1[[i]] <- qnorm(.1, mean = mean(XB[[i]]), sd = vaar[[i]] + 1)
    tau_2[[i]] <- qnorm(.5, mean = mean(XB[[i]]), sd = vaar[[i]] + 1)
    tau_3[[i]] <- qnorm(.9, mean = mean(XB[[i]]), sd = vaar[[i]] + 1)
}

y_star <- matrix(0, ncol=ncol(y), nrow = nrow(y))
for (i in 1:100){
    for (j in 1:500){
        if(y[j,i] < tau_1[[1]]){
            y_star[j,i] <- 1
        }
        else if(y[j,i] >= tau_1[[1]] & y[j,i] < tau_2[[i]]){
            y_star[j,i] <- 2
        }
        else if(y[j,i] >= tau_2[[i]] & y[j,i] < tau_2[[i]]){
            y_star[j,i] <- 3
        }   
        else{
            y_star[j,i] <- 4
        }
    }
}

然后,我尝试使用此程序估计:

betas_oprob <- list()
for (j in 1:100){
    betas_oprob[[j]] <- polr(as.ordered(y_star[,j]) ~ 1+x_1[,j] + x_2[,j], method = "probit", Hess=TRUE)
}

我的问题是我不知道从哪里开始polr(。)函数。在第一次迭代之后,我收到此错误消息:

Error in polr(as.ordered(y_star[, j]) ~ 1 + x_1[, j] + x_2[, j], method = "probit",  
: attempt to find suitable starting values failed
In addition: Warning messages:
1: glm.fit: fitted probabilities numerically 0 or 1 occurred 
2: glm.fit: algorithm did not converge 
3: glm.fit: fitted probabilities numerically 0 or 1 occurred 

我应该从哪里开始估算?我确信我的分析方法没有得到优化。我现在正在学习R.

0 个答案:

没有答案