Closed utterances-bot closed 2 years ago
bonjour, merci pour ce tutoriel qui est vraiment très bien et qui m'aide énormément. Si je peux toutefois suggérer une amélioration qui serait utile pour les novices comme moi, ce serait de rajouter ponctuellement une petite phrase d'interprétation/explication des sorties, car cela aiderait bien à la compréhension. Encore merci
Bonjour, Merci encore pour vos tutoriels très édifiants. Ils sont complets et personnellement m'apporte beaucoup, cependant j'ai une petite question s'il vous plaît: Actuellement je travaille sur des données d'enquête pondérées (package "survey" et "weights" déjà installés) et j'aimerais avoir un p-for-trend (autrement dit une p-value de test de tendance) pour des variables de ma base (binaire et continue) en fonction d'une variable catégorielle à 3 classes. D'après vos tutos je pense que la fonction "svyolr" est celle qui me permettra d'avoir ce p-for-trend: me recommandez vous cette approche par une regression logistique ordinale? Si oui dans le script présenté j'aimerais savoir à quoi correspond le "t-value" lorsqu'on execute la fonction "svyolr"... Merci pour vos éclaircissements
Bonjour Merci beaucoup pour ce tutoriel très clair, mais je suis confronté à un problème sur le format de ma variable dépendante , j'ai le message suivant :
cplt1<-glm(NB~sex,data=A,family = binomial(link = logit)) Error in weights * y : non-numeric argument to binary operator
Alors que ma variable NB est une variable texte "oui/non", si je passe en 0/1, l'analyse des tableaux all-in-one la considère comme quantitative ....
Je vous remercie par avance de votre aide.
Il faut la convertir en un facteur avec factor()
. De plus, il est important que vous modifier l'ordre du facteur pour que la première modalité soit celle de référence (voir la fonction relevel()
).
Cdlt
Je vous remercie très chaleureusement pour votre réponse. Bonne journée.
Le mar. 8 déc. 2020 à 14:07, Joseph notifications@github.com a écrit :
Il faut la convertir en un facteur avec factor(). De plus, il est important que vous modifier l'ordre du facteur pour que la première modalité soit celle de référence (voir la fonction relevel()).
Cdlt
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/larmarange/analyse-R/issues/110#issuecomment-740608436, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASBKN6H5C374WNI3CD5A3GLSTYQJ5ANCNFSM4JNMPP2Q .
Pouvez-vous parler sur les hypothèses d'utilisation des regressions logiques? Car je veux bien l'appliquer à mes données, mais elles sont à mesures répétées. J'ai lu sur plusieurs sites (et un livre de stats) qu'il n'est pas possible d'utiliser cette méthode avec des mésures répétées...
En effet, dans le cadre d'une régression logistique classique (avec glm
) les différentes observations sont supposées indépendantes. Or ce n'est pas le cas avec des observations répétées. Dans une telle situation, vous devez tenir compte de la répétition en réalisant un modèle mixte avec une variable aléatoire (fonction glmer
du package lme4
) ou bien réalisé un modèle dit GEE (voir la fonction geeglm
du package geepack
).
Vous pouvez jeter un oeil à http://larmarange.github.io/analyse-R/modeles-a-effets-aleatoires.html mais ce chapitre (non finalisé) est encore trop ardu dans sa rédaction me semble t il.
Bonjour, déjà merci pour vos webinaires, ils sont fabuleux !
J'ai plusieurs erreurs qui sortent lorsque je lance les opérations sur mon modèle de régression logistique multinomiale. Après avoir lancé la commande pour set ma valeur de référence, je lance un check de VIF, et reçoit "in multinom (...) group '0' 'na' are empty". Si je continue sur le code en ignorant ce message, divers autres erreurs apparaissent au fur et à mesure que j'éxecute les autres : "NaNs produced" (avec odds.ratio et step), "broom::tidy failed to tidy the model" (avec tbl_regression et ggcoef_multinom). J'imagine qu'il s'est passé quelque chose lors de la création du modèle, mais comment l'analyser et trouver l'origine de l'erreur (puis bien sur, le corriger) ?
J'ai également une autre question : peut-on définir comme une référence pour chacune des variables explicatives ? Par exemple, déterminer une observation globale de référence comprenant une modalité de chaque variable explicative que je définirai moi-même. Si oui, comment ?
Merci d'avance !
Bonjour,
difficile de vous répondre sans exemple reproductible (voir http://adv-r.had.co.nz/Reproducibility.html )
En premier lieu, je ne suis pas certain que la fonction car::vif()
fonctionne avec les modèles nnet::multinom()
. Voir https://stackoverflow.com/questions/61083073/vif-function-from-car-package-returns-nas-when-assessing-multinomial-logistic
Pour questionr::odds.ratio()
et broom::tidy()
, il faudrait un exemple reproductible pour comprendre d'où vient l'erreur.
peut-on définir comme une référence pour chacune des variables explicatives ? Par exemple, déterminer une observation globale de référence comprenant une modalité de chaque variable explicative que je définirai moi-même. Si oui, comment ?
Je ne suis pas sur d'avoir compris la question.
Bonjour Joseph,
Merci pour ce retour rapide !
Je n'ai pas réussi à attacher proprement mes données avec la fonction dput, mais je vous ajoute le fichier .csv en pièce jointe, ainsi que le code (c'est ce que je fais de mon côté).
J'ai rajouté des commentaires là où les erreurs viennent, ainsi que la base de la création de mon dataframe au cas où je l'aurais mal pensé et que cela induirait ces erreurs.
Je vous remercie d'avance pour votre temps et votre aide !
Julia
Le mer. 23 juin 2021 à 09:22, Joseph @.***> a écrit :
Bonjour,
difficile de vous répondre sans exemple reproductible (voir http://adv-r.had.co.nz/Reproducibility.html )
En premier lieu, je ne suis pas certain que la fonction car::vif() fonctionne avec les modèles nnet::multinom(). Voir https://stackoverflow.com/questions/61083073/vif-function-from-car-package-returns-nas-when-assessing-multinomial-logistic
Pour questionr::odds.ratio() et broom::tidy(), il faudrait un exemple reproductible pour comprendre d'où vient l'erreur.
peut-on définir comme une référence pour chacune des variables explicatives ? Par exemple, déterminer une observation globale de référence comprenant une modalité de chaque variable explicative que je définirai moi-même. Si oui, comment ?
Je ne suis pas sur d'avoir compris la question.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/larmarange/analyse-R/issues/110#issuecomment-866596070, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUSQI2P4TEL2U7O5QH55Z6LTUGDRXANCNFSM4JNMPP2Q .
--
Bonjour Joseph,
Une fois de plus merci pour ce tutoriel que vous nous partagez et qui nous aide beaucoup en soutien statistique dans notre quotidien. Je vous contacte car j'aimerais avoir votre avis sur un package développé par Touloumis en 2013, le package "multgee" qui permet l'analyse de modèles GEE pour les outcomes à plus de 2 modalités (multinomiaux et ordinaux) : https://cran.r-project.org/web/packages/multgee/multgee.pdf https://onlinelibrary.wiley.com/doi/full/10.1111/biom.12054
Les 2 principales fonctions sont nomLORgee et ordLORgee. Son approche consiste à estimer des Odds ratio locaux à partir du paramètre "alpha" (intercept) qui prend en compte les covariables, les modalités de la variable réponse, et la mesure des corrélations et non indépendance des données. La sortie R nous présente des coefficients, erreurs standards et p-value classiques, et en plus une matrice d'OR locaux dont je n'arrive pas à comprendre l'interprétation.
J'aimerais savoir si ces OR locaux sont différents des OR classiques, estimés à partir de l'exponentiel du coefficient "beta" des covariables dans un modèle uni ou multivarié, et comment les interpréter ? Et comment obtenir des OR associés aux covariables dans un modèle GEE multinomial car la méthode exp(coef(modèle)) semble ne pas marcher.
Merci d'avance.
Le package multgee
est effectivement le plus adapté pour des modèles GEE logistiques multinomiaux et ordinaux.
Concernant la question sur les sorties R, aurions-vous un exemple concret (voir http://adv-r.had.co.nz/Reproducibility.html ) ?
Merci beaucoup pour votre réponse rapide.
En effet voici un exemple issu de la librairie de la fonction "nomLORgee", celle sur laquelle j'ai des difficultés actuellement dans l'analyse de mes données :
library(multgee) data(housing) fitmod <- nomLORgee(y ~ factor(time), data = housing, id = id, repeated = time) summary(fitmod)
fitmod <- nomLORgee(y ~ factor(time), data = housing, id = id,
- repeated = time) summary(fitmod) GEE FOR NOMINAL MULTINOMIAL RESPONSES version 1.6.0 modified 2017-07-10
Link : Baseline Category Logit
Local Odds Ratios: Structure: time.exch Model: 3way Homogenous scores: TRUE
call: nomLORgee(formula = y ~ factor(time), data = housing, id = id, repeated = time)
Summary of residuals: Min. 1st Qu. Median Mean 3rd Qu. Max. -0.498615 -0.363966 -0.126836 -0.002905 0.501385 0.889580
Number of Iterations: 2
Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1
Local Odds Ratios Estimates: [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 0.000 0.000 1.359 1.882 1.359 1.882 1.359 1.882 [2,] 0.000 0.000 1.882 3.687 1.882 3.687 1.882 3.687 [3,] 1.359 1.882 0.000 0.000 1.359 1.882 1.359 1.882 [4,] 1.882 3.687 0.000 0.000 1.882 3.687 1.882 3.687 [5,] 1.359 1.882 1.359 1.882 0.000 0.000 1.359 1.882 [6,] 1.882 3.687 1.882 3.687 0.000 0.000 1.882 3.687 [7,] 1.359 1.882 1.359 1.882 1.359 1.882 0.000 0.000 [8,] 1.882 3.687 1.882 3.687 1.882 3.687 0.000 0.000
p-value of Null model: < 0.0001
la variable "time" a 3 modalités : 6, 12, 24
exp(coef(fitmod)) beta10 factor(time)6:1 factor(time)12:1 factor(time)24:1 beta20 factor(time)6:2 factor(time)12:2 factor(time)24:2 4.00000000 0.08121302 0.05251965 0.05984777 3.02222222 0.32972804 0.22912259 0.21441438
Merci d'avance et désolé pour cette illustration car je ne suis pas parvenu à reproduire cet exemple via (http://adv-r.had.co.nz/Reproducibility.html )
Ce sont les premiers coefficients qui sont les plus importants et qui correspondent aux différents odds ratios. Les local OR traduisent quant à eux les ajustements pris en compte par le GEE pour tenir de la répétition des observations.
Il n'y a pas de méthode tidy
pour ces modèles. Mais il est possible d'avoir recours aux fonctions génériques coef()
et confint()
. La fonction générique tidy_model()
que j'ai développé dans JLutils
fonctionne aussi pour ces modèles. Voir exemple ci-dessous.
library(multgee)
#> Le chargement a nécessité le package : gnm
data(housing)
fitmod <- nomLORgee(y ~ factor(time), data = housing, id = id,
repeated = time)
summary(fitmod)
#> GEE FOR NOMINAL MULTINOMIAL RESPONSES
#> version 1.6.0 modified 2017-07-10
#>
#> Link : Baseline Category Logit
#>
#> Local Odds Ratios:
#> Structure: time.exch
#> Model: 3way
#> Homogenous scores: TRUE
#>
#> call:
#> nomLORgee(formula = y ~ factor(time), data = housing, id = id,
#> repeated = time)
#>
#> Summary of residuals:
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> -0.498615 -0.363966 -0.126836 -0.002905 0.501385 0.889580
#>
#> Number of Iterations: 2
#>
#> Coefficients:
#> Estimate san.se san.z Pr(>|san.z|)
#> beta10 1.38629 0.16667 8.3178 < 2.2e-16 ***
#> factor(time)6:1 -2.51068 0.21679 -11.5813 < 2.2e-16 ***
#> factor(time)12:1 -2.94657 0.23682 -12.4421 < 2.2e-16 ***
#> factor(time)24:1 -2.81595 0.22938 -12.2763 < 2.2e-16 ***
#> beta20 1.10599 0.17197 6.4312 < 2.2e-16 ***
#> factor(time)6:2 -1.10949 0.19952 -5.5607 < 2.2e-16 ***
#> factor(time)12:2 -1.47350 0.20820 -7.0772 < 2.2e-16 ***
#> factor(time)24:2 -1.53984 0.20433 -7.5361 < 2.2e-16 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Local Odds Ratios Estimates:
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#> [1,] 0.000 0.000 1.359 1.882 1.359 1.882 1.359 1.882
#> [2,] 0.000 0.000 1.882 3.687 1.882 3.687 1.882 3.687
#> [3,] 1.359 1.882 0.000 0.000 1.359 1.882 1.359 1.882
#> [4,] 1.882 3.687 0.000 0.000 1.882 3.687 1.882 3.687
#> [5,] 1.359 1.882 1.359 1.882 0.000 0.000 1.359 1.882
#> [6,] 1.882 3.687 1.882 3.687 0.000 0.000 1.882 3.687
#> [7,] 1.359 1.882 1.359 1.882 1.359 1.882 0.000 0.000
#> [8,] 1.882 3.687 1.882 3.687 1.882 3.687 0.000 0.000
#>
#> p-value of Null model: < 0.0001
coef(fitmod)
#> beta10 factor(time)6:1 factor(time)12:1 factor(time)24:1
#> 1.386294 -2.510680 -2.946568 -2.815951
#> beta20 factor(time)6:2 factor(time)12:2 factor(time)24:2
#> 1.105992 -1.109487 -1.473498 -1.539845
exp(coef(fitmod))
#> beta10 factor(time)6:1 factor(time)12:1 factor(time)24:1
#> 4.00000000 0.08121300 0.05251965 0.05984775
#> beta20 factor(time)6:2 factor(time)12:2 factor(time)24:2
#> 3.02222222 0.32972801 0.22912260 0.21441433
confint(fitmod)
#> 2.5 % 97.5 %
#> beta10 1.0596337 1.7129550
#> factor(time)6:1 -2.9355743 -2.0857855
#> factor(time)12:1 -3.4107321 -2.4824036
#> factor(time)24:1 -3.2655290 -2.3663738
#> beta20 0.7689289 1.4430559
#> factor(time)6:2 -1.5005438 -0.7184306
#> factor(time)12:2 -1.8815702 -1.0654259
#> factor(time)24:2 -1.9403234 -1.1393666
exp(confint(fitmod))
#> 2.5 % 97.5 %
#> beta10 2.88531390 5.54532386
#> factor(time)6:1 0.05310021 0.12420951
#> factor(time)12:1 0.03301702 0.08354218
#> factor(time)24:1 0.03817673 0.09382032
#> beta20 2.15745426 4.23361336
#> factor(time)6:2 0.22300886 0.48751675
#> factor(time)12:2 0.15235070 0.34458108
#> factor(time)24:2 0.14365749 0.32002165
source(url("https://raw.githubusercontent.com/larmarange/JLutils/master/R/tidy_model.R"))
tidy_model(fitmod, conf.int = TRUE, exponentiate = TRUE)
#> term estimate std.error statistic p.value conf.low conf.high
#> 1 beta10 3.99998256 0.16667 8.31777 0 2.88531390 5.54532386
#> 2 beta20 3.02221498 0.17197 6.43115 0 2.15745426 4.23361336
#> 3 factor(time)12:1 0.05251954 0.23682 -12.44208 0 0.03301702 0.08354218
#> 4 factor(time)12:2 0.22912215 0.20820 -7.07719 0 0.15235070 0.34458108
#> 5 factor(time)24:1 0.05984784 0.22938 -12.27633 0 0.03817673 0.09382032
#> 6 factor(time)24:2 0.21441541 0.20433 -7.53609 0 0.14365749 0.32002165
#> 7 factor(time)6:1 0.08121300 0.21679 -11.58133 0 0.05310021 0.12420951
#> 8 factor(time)6:2 0.32972708 0.19952 -5.56072 0 0.22300886 0.48751675
Created on 2021-06-23 by the reprex package (v2.0.0)
Pour rappel, c'est un modèle multinomial et la variable y
prend trois valeurs : 0, 1, 2
Bonjour, merci beaucoup pour votre intervention et pour ces illustrations.
En effet j'en étais arrivé aux mêmes conclusions que vous, que les OR qui nous interressent sont ceux obtenus à partir de l'exponentiel des coefficients du modèle. Cependant ces OR obtenus me semblent très faibles. Vous remarquerez qu'ils sont tous inférieurs à 1 (les OR qui correspondent aux modalités de la covariable "time"), et c'est le cas également lorsque j'applique cette formule aux données sur lesquelles je travaille. J'obtiens toujours des chiffres très bas, pour mon outcome à 3 catégories.
C'est ce qui m'interroge le plus sur la pertinence des OR obtenus par cette fonction.
Gildas
Tout dépend de vos données. S'il y a peu d'individus dont la situation change au cours du temps, il est normal que les OR soient faibles
D'accord je comprends. Merci beaucoup pour vos explications !
Bonjour, Je voulais savoir s'il y a une fonction plus simple qui permet de générer les résultats(OR, IC95%, p-value) d'analyse multivariée et univariées d'une régression logistique dans un même tableau d'un coup svp? J'essaie d'utiliser tbl_régression mais ça me génère uniquement les résultat de la régression multivariée. J'ai 25 variable indépendante à utiliser pour l'analyse univariée et ceux pour 5 critères de jugements....Merci
Bonjour
tbl_uvregression()
permets de réaliser les multiples régressions univariées en une seule opération et un seul tableau.
tbl_merge()
permets de fusionner deux tableaux en un seul.
J'ai ajouté un exemple concret dans le chapitre sur la régression logistique : https://larmarange.github.io/analyse-R/regression-logistique.html#gtsummary
Pour la régression logistique, vous pouvez également regarder du côté de l'extension finalfit
également présentée dans ce chapitre.
Bonjour, Merci beaucoup de votre retour. 🙏🏾
Le 27 juin 2021 à 13:28, Joseph @.***> a écrit :
Bonjour
tbl_uvregression() permets de réaliser les multiples régressions univariées en une seule opération et un seul tableau.
tbl_merge() permets de fusionner deux tableaux en un seul.
J'ai ajouté un exemple concret dans le chapitre sur la régression logistique : https://larmarange.github.io/analyse-R/regression-logistique.html#gtsummary
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
Régression logistique binaire, multinomiale et ordinale
undefined
http://larmarange.github.io/analyse-R/regression-logistique.html