You're not too far off. You need to do something like objfun <- function(p) { mu <- p[1] sigma <- p[2] -sum(dnorm(x,mean=mu,sd=sigma,log=TRUE)) }
optim(par=c(0,1),fn=objfun) # check ?optim for correct argument names Some points: - the main thing is that you have to define mu and sigma within your objective function - you're better off with the log-likelihood than the likelihood; by convention people usually try to minimize the negative log-likelihood rather than maximizing the likelihood - "nlmin" is an S-PLUS function. The analogues in R are nlm and optim. - your setting negative values to zero complicates your problem considerably. Can you use a gamma model instead? - the ML estimate of normal data (given that you haven't messed with negative values) is mu=mean(x), sd=sd(x)*sqrt(length(x)/(length(x)-1)) = sqrt(mean((x-mean(x))^2)) A lot of these questions are pretty basic; you really need to try to get some help off-list. You may not get too much more help here unless you explain what your situation is (are you doing this for a class, independent project, etc.) and give some indication that you've exhausted local resources ... cheers, Ben Bolker On Wed, 18 Dec 2002 [EMAIL PROTECTED] wrote: > Dear mailing list, > > I desperately need help on making a small program that is trying to find the > likelihood of a distribution. Anyone that has any ideas please feel free to > suggest them. > > Ok this is what I have done so far: > > I wanted 20 random numbers that were normally distributed, and I did this by > typing x<-rnorm(20). > I then wanted to change any negative values in the data set to zero and I > did this by x[x<0]<-0. > These numbers have come from the normal density > 1/sigma(2pi)1/2exp-{(x-mew)2/2sigma2}, what I want to do now and having > trouble with is that for each of these results (which can be substituted back > into the x in the eqation above) is to multiply all 20 results (in the above > equation form) together to form the likelihood. However the critical problem > that I am experiencing is that for each case I do not know the mew and sigma > eventhough that i know tthe x value. The reason why i dont know the vales of > sigma and mew is because after I have formed the program i want to use nlmin( > , ) to basically maximse the the likelihood so i find the values for mew > and sigma, this is what i am aiming finally to do. > My pathetic effort so far is: > > prod(dnorm(x,mean=mu,sd=sigma) > > However I know that this doesn't incorporate the fact that mew and sigma are > not known as when i input this it says that mu is not recognised but I dont > know how to make mu and sigma different to each other. > > If anyone has any ideas please feel free to suggest them as I will basically > try anything. > > Yours Faithfully, > > James Hutton > > [[alternate HTML version deleted]] > > ______________________________________________ > [EMAIL PROTECTED] mailing list > http://www.stat.math.ethz.ch/mailman/listinfo/r-help > -- 318 Carr Hall [EMAIL PROTECTED] Zoology Department, University of Florida http://www.zoo.ufl.edu/bolker Box 118525 (ph) 352-392-5697 Gainesville, FL 32611-8525 (fax) 352-392-3704 ______________________________________________ [EMAIL PROTECTED] mailing list http://www.stat.math.ethz.ch/mailman/listinfo/r-help