[R] LogLikelihood of a Distribution Given Fixed Parameters
Rolf Turner
r.turner at auckland.ac.nz
Tue Apr 29 02:07:40 CEST 2014
Indeed it should be lower=FALSE. Duhhhh! Sorry 'bout that!
cheers,
Rolf
On 29/04/14 02:51, Jacob Warren (RIT Student) wrote:
> Thanks Rolf. That took care of it. It should be lower=FALSE through
> right? I want the upper tail because my values are right censored?
> Regards,
> Jake
>
>
> On Fri, Apr 25, 2014 at 12:50 AM, Rolf Turner <r.turner at auckland.ac.nz
> <mailto:r.turner at auckland.ac.nz>> wrote:
>
>
> As usual I am too lazy to fight my way through the rather convoluted
> code presented, but it seems to me that you just want to calculate a
> log likelihood. And that is bog-simple:
>
> The log likelihood for i.i.d. data is just the sum of log f(y_i)
> where the y_i are your observed values and f() is the density
> function of the distribution that you have in mind.
>
> Where there is (right) censoring you take the sum of log f(y_i) over all
> the non-censored values and then add k*(1-F(cens.time)) where k is
> the number of censored values and F() is the cumulative distribution
> function corresponding to f().
>
> In your case it would appear that f(y) = dlnorm(y,1.66,0.25) and
> F(y) = plnorm(y,1.66,0.25). Note that instead of using
> 1-F(cens.time) you can use plnorm(cens.time,1.66,0.25,__lower=TRUE)
> and that instead of taking logs explicitly you can set log=TRUE in
> the calls to dlnorm() and plnorm().
>
> cheers,
>
> Rolf Turner
>
>
> On 25/04/14 07:27, Jacob Warren (RIT Student) wrote:
>
> I'm trying to figure out if there is a way in R to get the
> loglikelihood of
> a distribution fit to a set of data where the parameter values
> are fixed.
> For example, I want to simulate data from a given alternate
> lognormal
> distribution and then I will fit it to a lognormal distribution
> with null
> parameter values to see what the likelihood of the null
> distribution is
> given random data from the alternate distribution.
>
> I have been using fitdistrplus for other purposes but I cannot
> use it to
> fix both parameter values.
>
> Here is an example of what I've been working with...
>
> nullmu<-1.66 #set null mu
> altmu<-1.58 #set alt mu
> sd.log<-0.25 #set common sigma
> cens.time<-6 #if simulated times are greater than this turn them
> into right
> censored times
>
> #simulating lognormal data (time) from altnative dist
> (sim<-rlnorm(n=samplesize, meanlog=altmu, sdlog=sd.log))
> #if the time was > cens.time replace time with cens.time
> (sim[which(sim>cens.time)]<-__cens.time)
> sim
>
> #create a variable indicating censoring
> (cens<-sim)
> cens[which(sim==cens.time)]<-__NA
> cens
>
> #create the data frame to be passed to fitdistcens and fitdist
> (x<-data.frame(left=sim,right=__cens))
>
>
> #if there is censored data use fitdistcens else use fitdist
> ifelse(length(which(is.na <http://is.na>(__cens)))>0,
> simfit<-fitdistcens(censdata=__x, distr="lnorm"),
> simfit<-fitdist(data=x[,1], distr="lnorm")
> )
>
> #Now I can get the loglikelihood of the MLE fitted distribution
> simfit$loglik
>
> #I want to get the loglikelihood of the distribution with the null
> parameterization
> #This is what I can't get to work
> #I can't seem to find any function that allows me to set both
> parameter
> values
> #so I can get to loglikelihood of the of the parameterization
> given the data
> nulldist<-fitdistcens(__censdata=x, distr="lnorm",
> start=list(meanlog=nullmu,
> sdlog=sd.log)
>
> #Then I want to do a likelihood ratio test between the two
> distributions
> pchisq((-2*simfit$loglik--2*__nulldist$loglik), df=2,
> lower.tail=FALSE)
>
>
>
More information about the R-help
mailing list