- 已编辑
各位大神好,小弟想估计如下的似然函数,但是遇到题中所描述的问题,想请问下怎么解决,看起来应该是说矩阵的维度不对,我仔细研究了一下,因为是有两组待估参数beta,我不清楚这个在R里面怎么去表示,敬请指教
代码中有其它问题,也烦请指出,谢谢!
代码如下:
slope1 <- -.3;slope2 <- .3;slope3 <- 1.8; slope4 <- 0.5;intercept1 <- 1.5
age <- sample(seq(-2,2,len=201), 400)
grade <- sample(seq(-2,2,len=201), 400)
not_smsa <- sample(seq(-2,2,len=201), 400)
wage <- intercept1 + slope1*age +slope2*grade + slope3*not_smsa + rnorm(length(age),0,.15)
X <- cbind(1, age , grade , not_smsa )
Y <- wage
N<- length(y)
mydata <- cbind.data.frame(X,Y)
ans <- lm(ln_wage ~ age + grade + not_smsa + south,
data = xtlogit_data)
vi <- c(coef(ans) , coef(ans) , 0.5)
fmm.nll <- function (beta) {
mu1 <- X %*% beta[1]
sigma1 <- sqrt((t((Y-X %*% beta[1]))%*%(Y-X %*% beta[1]))/N)
mu2 <- X %*% beta[2]
sigma2 <- sqrt((t((Y-X %*% beta[2]))%*%(Y-X %*% beta[2]))/N)
c1 <- dnorm(Y,mu1,sigma1)
c2 <- dnorm(Y,mu1,sigma1)
pi <- exp(mu1)/(exp(mu1)+exp(mu2))
tot=pi*c1+(1-pi)*(c2)
-sum(log(tot),na.rm=T)
}
fit <- optim(vi, fmm.nll , method = "BFGS", hessian = TRUE)
fit$par