这是我在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.