This is a very basic question, but I am a bit confused with optim. I
want to get the MLEs using optim which could replace the newton-raphson
code I have below which also gives the MLEs. The function takes as input
a vector x denoting whether a respondent answered an item correctly
(x=1) or not (x=0). It also takes as input a vector b_vector, and these
are parameters of test items (Rasch estimates in this case)

For example, here is how my current function operates.

> rasch.max(c(1,1,0,0), c(-1,.5,0,1))
theta is about 0.14 , se 1.063972 

I'm not quite sure how to accomplish the same thing using optim. Can
anyone offer a suggestion?

rasch.max <- function(x, b_vector){
   p  <- numeric(length(b_vector))
   theta <- log(sum(x)/(length(x)/sum(x))) # This is a starting value
for theta
   rasch <- function(theta,b) 1/ (1 + exp(b-theta))
   old   <- 0
   updated   <- 5
   while(abs(old-updated) > .001){
      old <- updated
      for(k in seq(along=b_vector)) p[k] <- rasch(theta,b_vector[k])
      first_deriv  <- sum(x) - sum(p)
      second_deriv <- sum((1-p)*-p)
      change       <- (first_deriv/second_deriv)
      theta        <- theta - change # This is the updated theta
      updated      <- change
      }
cat('theta is about', round(theta,2), ', se', 1/sqrt(-second_deriv),
'\n')
}

Harold

> version
               _                         
platform       i386-pc-mingw32           
arch           i386                      
os             mingw32                   
system         i386, mingw32             
status                                   
major          2                         
minor          3.0                       
year           2006                      
month          04                        
day            24                        
svn rev        37909                     
language       R                         
version.string Version 2.3.0 (2006-04-24)

	[[alternative HTML version deleted]]

