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 <[email protected]
<mailto:[email protected]>> 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)




______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to