[R] How to obtain individual log-likelihood value from glm?

John Fox j|ox @end|ng |rom mcm@@ter@c@
Sat Aug 29 05:51:37 CEST 2020


Dear John

I think that you misunderstand the use of the weights argument to glm() 
for a binomial GLM. From ?glm: "For a binomial GLM prior weights are 
used to give the number of trials when the response is the proportion of 
successes." That is, in this case y should be the observed proportion of 
successes (i.e., between 0 and 1) and the weights are integers giving 
the number of trials for each binomial observation.

I hope this helps,
  John

John Fox, Professor Emeritus
McMaster University
Hamilton, Ontario, Canada
web: https://socialsciences.mcmaster.ca/jfox/

On 2020-08-28 9:28 p.m., John Smith wrote:
> If the weights < 1, then we have different values! See an example below.
> How  should I interpret logLik value then?
> 
> set.seed(135)
>   y <- c(rep(0, 50), rep(1, 50))
>   x <- rnorm(100)
>   data <- data.frame(cbind(x, y))
>   weights <- c(rep(1, 50), rep(2, 50))
>   fit <- glm(y~x, data, family=binomial(), weights/10)
>   res.dev <- residuals(fit, type="deviance")
>   res2 <- -0.5*res.dev^2
>   cat("loglikelihood value", logLik(fit), sum(res2), "\n")
> 
> On Tue, Aug 25, 2020 at 11:40 AM peter dalgaard <pdalgd using gmail.com> wrote:
> 
>> If you don't worry too much about an additive constant, then half the
>> negative squared deviance residuals should do. (Not quite sure how weights
>> factor in. Looks like they are accounted for.)
>>
>> -pd
>>
>>> On 25 Aug 2020, at 17:33 , John Smith <jswhct using gmail.com> wrote:
>>>
>>> Dear R-help,
>>>
>>> The function logLik can be used to obtain the maximum log-likelihood
>> value
>>> from a glm object. This is an aggregated value, a summation of individual
>>> log-likelihood values. How do I obtain individual values? In the
>> following
>>> example, I would expect 9 numbers since the response has length 9. I
>> could
>>> write a function to compute the values, but there are lots of
>>> family members in glm, and I am trying not to reinvent wheels. Thanks!
>>>
>>> counts <- c(18,17,15,20,10,20,25,13,12)
>>>      outcome <- gl(3,1,9)
>>>      treatment <- gl(3,3)
>>>      data.frame(treatment, outcome, counts) # showing data
>>>      glm.D93 <- glm(counts ~ outcome + treatment, family = poisson())
>>>      (ll <- logLik(glm.D93))
>>>
>>>        [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> 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.
>>
>> --
>> Peter Dalgaard, Professor,
>> Center for Statistics, Copenhagen Business School
>> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
>> Phone: (+45)38153501
>> Office: A 4.23
>> Email: pd.mes using cbs.dk  Priv: PDalgd using gmail.com
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>



More information about the R-help mailing list