Ajay Shah
2005-May-30 17:19 UTC
[R] Trying to write a linear regression using MLE and optim()
I wrote this: # Setup problem x <- runif(100) y <- 2 + 3*x + rnorm(100) X <- cbind(1, x) # True OLS -- lm(y ~ x) # OLS likelihood function -- ols.lf <- function(theta, K, y, X) { beta <- theta[1:K] sigma <- exp(theta[K+1]) e <- (y - X%*%beta)/sigma logl <- sum(log(dnorm(e))) return(logl) } optim(c(2,3,0), ols.lf, gr=NULL, method="BFGS", lower=-Inf, upper=Inf, control=list(trace=2, fnscale=-1), # Now for the "..." stuff K, y, X) I get: Error in fn(par, ...) : argument "X" is missing, with no default In addition: Warning message: numerical expression has 100 elements: only the first used in: 1:K Execution halted If someone can show me the way, it'll be most appreciated. :-)
Gabor Grothendieck
2005-May-31 06:06 UTC
[R] Trying to write a linear regression using MLE and optim()
On 5/30/05, Ajay Shah <ajayshah at mayin.org> wrote:> > I wrote this: > > # Setup problem > x <- runif(100) > y <- 2 + 3*x + rnorm(100) > X <- cbind(1, x) > > # True OLS -- > lm(y ~ x) > > # OLS likelihood function -- > ols.lf <- function(theta, K, y, X) { > beta <- theta[1:K] > sigma <- exp(theta[K+1]) > e <- (y - X%*%beta)/sigma > logl <- sum(log(dnorm(e))) > return(logl) > } > > optim(c(2,3,0), ols.lf, gr=NULL, > method="BFGS", lower=-Inf, upper=Inf, > control=list(trace=2, fnscale=-1), > # Now for the "..." stuff > K, y, X)The last line should be: K=K, y=y, X=X) and also you have to set K.> > > I get: > > Error in fn(par, ...) : argument "X" is missing, with no default > In addition: Warning message: > numerical expression has 100 elements: only the first used in: 1:K > Execution halted > > If someone can show me the way, it'll be most appreciated. :-) > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >