Johannes Radinger
2015-Mar-21 13:05 UTC
[R] Optimization to fit data to custom density distribution
Hi, I am looking for a way to fit data (vector of values) to a density function using an optimization (ordinary least squares or maximum likelihood fit). For example if I have a vector of 100 values generated with rnorm: rnorm(n=100,mean=500,sd=50) How can I fit these data to a Gaussian density function to extract the mean and sd value of the underlying normal distribution. So the result should roughly meet the parameters of the normal distribution used to generate the data. The results will ideally be closer the true parameters the more data (n) are used to optimize the density function. Any suggestions? /Johannes [[alternative HTML version deleted]]
Prof Brian Ripley
2015-Mar-21 13:16 UTC
[R] Optimization to fit data to custom density distribution
One way using the standard R distribution: library(MASS) ?fitdistr No optimization is needed to fit a normal distribution, though. On 21/03/2015 13:05, Johannes Radinger wrote:> Hi, > > I am looking for a way to fit data (vector of values) to a density function > using an optimization (ordinary least squares or maximum likelihood fit). > For example if I have a vector of 100 values generated with rnorm: > > rnorm(n=100,mean=500,sd=50) > > How can I fit these data to a Gaussian density function to extract the mean > and sd value of the underlying normal distribution. So the result should > roughly meet the parameters of the normal distribution used to generate the > data. The results will ideally be closer the true parameters the more data > (n) are used to optimize the density function.That's a concept called 'consistency' from the statistical theory of estimation. If you skipped that course, time to read up (but it is off-topic here). -- Brian D. Ripley, ripley at stats.ox.ac.uk Emeritus Professor of Applied Statistics, University of Oxford 1 South Parks Road, Oxford OX1 3TG, UK
Johannes Radinger
2015-Mar-21 14:27 UTC
[R] Optimization to fit data to custom density distribution
Thanks for the fast response. The fitdistr() function works well for the predefined density functions. However, what is the recommended approach to optimize/fit a density function described by two superimposed normal distributions? In my case it is N1(mean=0,sd1)*p+N2(mean=0,sd2)*(1-p). With fitdistr one can only choose among the 15 distributions. Probably this needs an approach using optim()? However I am so far unfamiliar with these packages. So any suggestion ist welcome. :) /Johannes On Sat, Mar 21, 2015 at 2:16 PM, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:> One way using the standard R distribution: > > library(MASS) > ?fitdistr > > No optimization is needed to fit a normal distribution, though. > > > On 21/03/2015 13:05, Johannes Radinger wrote: > >> Hi, >> >> I am looking for a way to fit data (vector of values) to a density >> function >> using an optimization (ordinary least squares or maximum likelihood fit). >> For example if I have a vector of 100 values generated with rnorm: >> >> rnorm(n=100,mean=500,sd=50) >> >> How can I fit these data to a Gaussian density function to extract the >> mean >> and sd value of the underlying normal distribution. So the result should >> roughly meet the parameters of the normal distribution used to generate >> the >> data. The results will ideally be closer the true parameters the more data >> (n) are used to optimize the density function. >> > > That's a concept called 'consistency' from the statistical theory of > estimation. If you skipped that course, time to read up (but it is > off-topic here). > > -- > Brian D. Ripley, ripley at stats.ox.ac.uk > Emeritus Professor of Applied Statistics, University of Oxford > 1 South Parks Road, Oxford OX1 3TG, UK >[[alternative HTML version deleted]]