我为probit写了一个mle,但似乎我的代码中的某些部分出错了,并显示“'vmmin'中的初始值不是有限的。”
它是由R完成的。作为一个新生,我已经咨询了堆栈溢出的一些技巧,但它们都没有用。一些示例只能用于模拟数据。 我的代码如下
setwd("C:\\Users\\ThinkPad\\Desktop\\MSL for R")
xtlogit_data <- read_dta("xtlogit_data.dta")
y <- unlist(xtlogit_data["union"])
X <- cbind(1, as.matrix(xtlogit_data[c("age", "grade", "not_smsa",
"south")]))
ans_probit <- glm(union ~ age + grade + not_smsa + south,
family = gaussian(link = "identity"),
data = xtlogit_data)
initval <- c(coef(ans_probit))
probitml <- function(parm,y,X){
nx <- ncol(X)
Xb <- c(X %*% parm[1:nx])
mp <- pnorm(Xb)
mpll <- y*log(mp)+(1 - y)*(1 - log(mp))
return(-sum(mpll,log=TRUE,na.rm=FALSE))
}
ans_probitml <- optim(par = initval, fn = probitml, method = "BFGS",
control = list(trace = 1, maxit = 500), y = y,
X = X,hessian = TRUE)
数据位于百度SkyDrive中:https://pan.baidu.com/s/1NCwt3pimR9dwXBPU1Dg0yw代码:jvvf
感谢您的耐心和耐心,我期待您的反馈