[R-sig-ME] Predicted probabilites with CIs for multilevel logistic regression with prior weights
Mollie Brooks
mo|||eebrook@ @end|ng |rom gm@||@com
Mon Jun 10 19:46:21 CEST 2019
> On 10Jun 2019, at 19:40, <d.luedecke using uke.de> <d.luedecke using uke.de> wrote:
>
> I think that Sam is talking about “sampling” or “survey” weights (as compared to analytical or frequency weights, used by “normal” regression models).
>
> The issue you’re referring to is referenced by another issue (https://github.com/glmmTMB/glmmTMB/issues/440 <https://github.com/glmmTMB/glmmTMB/issues/440>),
Yes, I (mebrooks) am the one who referenced it and the user (mmeierer) said it fit their needs for "sample weights".
> which in turn shows an example from Cross Validated:
> https://stats.stackexchange.com/questions/57107/use-of-weights-in-svyglm-vs-glm <https://stats.stackexchange.com/questions/57107/use-of-weights-in-svyglm-vs-glm>
>
> If I use that example, and add a third model fitted with glmmTMB, I get following result when comparing the weights from the fitted objects:
>
> library(glmmTMB)
> glm2 <- glmmTMB(re78 ~ treat, weights = w , data = lalonde)
> cbind(glm1$weights, glm11$weights, glm2$frame$`(weights)`)
> #> [,1] [,2] [,3]
> #> 1 1.4682453 2.108394 2.108394
> #> 2 0.9593877 1.377677 1.377677
> #> 3 0.7489954 1.075554 1.075554
> #> 4 0.7319955 1.051143 1.051143
> #> 5 0.7283328 1.045883 1.045883
> #> 6 0.7244569 1.040317 1.040317
>
> As you can see, “glm” and “glmmTMB” produce the same weights, while the survey-package has different weights… I’m not sure that the weights implemented in glmmTMB are actually “sampling” weights (for surveys, as implemented in the survey package),
Ok. I don’t know the survey package and don’t have time to look into it now. Feel free to follow up on issue 285 if you have more insight.
cheers,
Mollie
> or how to reproduce such weights using glmmTMB.
>
> Von: Mollie Brooks <mollieebrooks using gmail.com>
> Gesendet: Montag, 10. Juni 2019 19:04
> An: Sam Crawley <sam_crawley using warpmail.net>; Help Mixed Models <r-sig-mixed-models using r-project.org>
> Cc: d.luedecke using uke.de
> Betreff: Re: [R-sig-ME] Predicted probabilites with CIs for multilevel logistic regression with prior weights
>
>
>
>
>> On 10Jun 2019, at 17:33, <d.luedecke using uke.de <mailto:d.luedecke using uke.de>> <d.luedecke using uke.de <mailto:d.luedecke using uke.de>> wrote:
>>
>>> mixed models in R do correctly not account for sampling weights
>>
>> Should be: mixed models in R do *currently* not account for sampling weights
>
> I’m still trying to get a handle of the different definitions of "weights" but I believe we implemented sampling weights in glmmTMB. We do this by weighting the log-likelihood contribution of each observation. I think this is different from prior weights if you mean Bayesian priors. There has been some discussion of the different implementations of "weights" in different R functions (link below) and we still need to update the documentation for glmmTMB
> https://github.com/glmmTMB/glmmTMB/issues/285 <https://github.com/glmmTMB/glmmTMB/issues/285>
>
> Here’s a binomial example:
>
> library(glmmTMB)
> set.seed(123)
> n=100
> dat=data.frame(trials=rpois(n, lambda=50), rownum=1:n)
> dat$success=rbinom(n, dat$trials, prob=.3)
> dat$rep=sample(1:5, size=n, replace=TRUE) #each observation is repeated 1 to 5 times
> rows=rep(dat$rownum, each=1, times=dat$rep)
> dat_disaggregated=dat[rows, ]
>
>
> summary(glmmTMB(cbind(success, trials-success)~1, weights=rep, dat, family=binomial))
> summary(glmmTMB(cbind(success, trials-success)~1, dat_disaggregated, family=binomial))
>
>
> and it works with non-integer weights
>
>
> summary(glmmTMB(cbind(success, trials-success)~1, weights=rep/5, dat, family=binomial))
>
>
> cheers,
> Mollie
>
>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: R-sig-mixed-models <r-sig-mixed-models-bounces using r-project.org <mailto:r-sig-mixed-models-bounces using r-project.org>> Im
>> Auftrag von d.luedecke using uke.de <mailto:d.luedecke using uke.de>
>> Gesendet: Montag, 10. Juni 2019 17:31
>> An: 'Sam Crawley' <sam_crawley using warpmail.net <mailto:sam_crawley using warpmail.net>>;
>> r-sig-mixed-models using r-project.org <mailto:r-sig-mixed-models using r-project.org>
>> Betreff: Re: [R-sig-ME] Predicted probabilites with CIs for multilevel
>> logistic regression with prior weights
>>
>> Hi Sam,
>>
>> you could the "ggeffects" package
>> (https://strengejacke.github.io/ggeffects/ <https://strengejacke.github.io/ggeffects/>), and there is also an example
>> for a logistic mixed effects model
>> (https://strengejacke.github.io/ggeffects/articles/practical_logisticmixedmo <https://strengejacke.github.io/ggeffects/articles/practical_logisticmixedmo>
>> del.html), which might help you.
>>
>> For binomial models, using weights often results in the following warning:
>> #> non-integer #successes in a binomial glm!
>>
>> However, CIs for the predicted probabilities can be calculated nevertheless
>> (at least in my quick example). Note that afaik, mixed models in R do
>> correctly not account for sampling weights. However, Thomas Lumley, author
>> of the survey-package, works on a survey-function for mixed models
>> (https://github.com/tslumley/svylme <https://github.com/tslumley/svylme>), probably the GitHub version is quite
>> stable (haven't tested yet).
>>
>> An alternative would be the "scale_weights()" function from the
>> sjstats-package
>> (https://strengejacke.github.io/sjstats/articles/mixedmodels-statistics.html <https://strengejacke.github.io/sjstats/articles/mixedmodels-statistics.html>
>> #rescale-model-weights-for-complex-samples ), which rescales sampling
>> weights so they can be used as "weights" for the mixed models function you
>> have in R (lme4, lme, ...).
>>
>> Based on that function, I have a small example that demonstrates how to
>> compute predicted probabilities for mixed models with (sampling) weights
>> (ignore the warnings, this is just for demonstration purposes):
>>
>> library(lme4)
>> library(sjstats) # for scale_weights() and sample data
>> library(ggeffects) # for ggpredict()
>>
>> data(nhanes_sample)
>> set.seed(123)
>> nhanes_sample$bin <- rbinom(nrow(nhanes_sample), 1, prob = .3)
>> nhanes_sample <- scale_weights(nhanes_sample, SDMVSTRA, WTINT2YR)
>>
>> m <- glmer(
>> bin ~ factor(RIAGENDR) * age + factor(RIDRETH1) + (1 | SDMVPSU),
>> family = binomial(),
>> data = nhanes_sample,
>> weights = svywght_a
>> )
>>
>> ggpredict(m, c("age", "RIAGENDR")) %>% plot()
>>
>>
>> Best
>> Daniel
>>
>> -----Ursprüngliche Nachricht-----
>> Von: R-sig-mixed-models <r-sig-mixed-models-bounces using r-project.org <mailto:r-sig-mixed-models-bounces using r-project.org>> Im
>> Auftrag von Sam Crawley
>> Gesendet: Montag, 10. Juni 2019 10:36
>> An: r-sig-mixed-models using r-project.org <mailto:r-sig-mixed-models using r-project.org>
>> Betreff: [R-sig-ME] Predicted probabilites with CIs for multilevel logistic
>> regression with prior weights
>>
>> Hello all,
>>
>> I am doing a multilevel binomial logistic regression using lme4, and the
>> survey data I am using requires weights to be used. I would like to
>> calculate various predicted probabilities with confidence intervals based on
>> the estimated model. The predict function obviously doesn't give me standard
>> errors, and the recommended method to get these is to use the bootMer
>> function.
>>
>> However, in my case, the weights provided are not integers, and the bootMer
>> function exits with an error if the weights are not integers (I raised a
>> GitHub issue about this, and was pointed to this list:
>> https://github.com/lme4/lme4/issues/524 <https://github.com/lme4/lme4/issues/524> ).
>>
>> So my question is, what is the best way to calculate the predicted
>> probabilities (with confidence intervals) in my case?
>>
>> I would appreciate any help you can give me, and I'm happy to provide more
>> details if required.
>>
>> Thanks,
>> Sam Crawley.
>>
>> _______________________________________________
>> R-sig-mixed-models using r-project.org <mailto:R-sig-mixed-models using r-project.org> mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
>>
>> --
>>
>> _____________________________________________________________________
>>
>> Universitätsklinikum Hamburg-Eppendorf; Körperschaft des öffentlichen
>> Rechts; Gerichtsstand: Hamburg | www.uke.de <http://www.uke.de/>
>> Vorstandsmitglieder: Prof. Dr. Burkhard Göke (Vorsitzender), Prof. Dr. Dr.
>> Uwe Koch-Gromus, Joachim Prölß, Marya Verdel
>> _____________________________________________________________________
>>
>> SAVE PAPER - THINK BEFORE PRINTING
>>
>> _______________________________________________
>> R-sig-mixed-models using r-project.org <mailto:R-sig-mixed-models using r-project.org> mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
>>
>> --
>>
>> _____________________________________________________________________
>>
>> Universitätsklinikum Hamburg-Eppendorf; Körperschaft des öffentlichen Rechts; Gerichtsstand: Hamburg | www.uke.de <http://www.uke.de/>
>> Vorstandsmitglieder: Prof. Dr. Burkhard Göke (Vorsitzender), Prof. Dr. Dr. Uwe Koch-Gromus, Joachim Prölß, Marya Verdel
>> _____________________________________________________________________
>>
>> SAVE PAPER - THINK BEFORE PRINTING
>>
>> _______________________________________________
>> R-sig-mixed-models using r-project.org <mailto:R-sig-mixed-models using r-project.org> mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models <https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models>
>
>
> Universitätsklinikum Hamburg-Eppendorf; Körperschaft des öffentlichen Rechts; Gerichtsstand: Hamburg | www.uke.de <http://www.uke.de/>
> Vorstandsmitglieder: Prof. Dr. Burkhard Göke (Vorsitzender), Prof. Dr. Dr. Uwe Koch-Gromus, Joachim Prölß, Marya Verdel
>
> SAVE PAPER - THINK BEFORE PRINTING
>
[[alternative HTML version deleted]]
More information about the R-sig-mixed-models
mailing list