Ошибка в dnorm: как обращаться с нечисловым аргументом математической функции - PullRequest
0 голосов
/ 18 июня 2019

каждый. Я хочу использовать dnorm в R, чтобы сделать оценку максимального правдоподобия для ols, но это показывает, что «Нечисловой аргумент математической функции», интересно, можете ли вы оказать некоторую помощь моему коду.

Хотя многие книги показывают, что мы можем использовать mle для оценки ols вручную, мне интересно, можно ли использовать dnorm в качестве кочевника в stata. И dnorm также является важной частью всей моей функции вероятности.

Если мой код следующий:

slope1 <- -.3;slope2 <- .3;slope3 <- 1.8; slope4 <- 0.5;intercept1 <- 1.5    # generating data from C_1
age <- sample(seq(-2,2,len=201), 40)
grade <- sample(seq(-2,2,len=201), 40)
not_smsa <- sample(seq(-2,2,len=201), 40)
wage <- intercept1 + slope1*age +slope2*grade + slope3*not_smsa + rnorm(length(age),0,.15) # add some noise

# model matrix `X` and response `Y`
X <- cbind(1, age , grade , not_smsa )
Y <- wage
K<- ncol(X)
mydata <- cbind.data.frame(X,Y)
# initial guess on coefficients
ans <- lm(wage ~ age + grade + not_smsa, 
          data = mydata)
vi <- c(coef(ans))
#log likelihood function
ols.nll <- function (beta) {
  eta <- (Y-X %*% beta)/sigma
  p <- dnorm(Y,eta,sigma)
  -sum(log(p),na.rm=T)
}
#mle
fit <- optim(vi, ols.nll , method = "BFGS", hessian = TRUE)
fit$par

Спасибо за внимание, с нетерпением жду вашей помощи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...