Я написал 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)
данные находятся в baidu SkyDrive: https://pan.baidu.com/s/1NCwt3pimR9dwXBPU1Dg0yw код : jvvf
Спасибо за ваше внимание и терпение, я с нетерпением жду ваших отзывов