Comment faire une régression logistique dans R lorsque le résultat est fractionné (un rapport de deux comptes)?


24

J'examine un article qui a l'expérience biologique suivante. Un dispositif est utilisé pour exposer les cellules à différentes quantités de contrainte de cisaillement fluide. À mesure qu'une plus grande contrainte de cisaillement est appliquée aux cellules, un plus grand nombre d'entre elles commencent à se détacher du substrat. À chaque niveau de contrainte de cisaillement, ils comptent les cellules qui restent attachées, et comme ils connaissent le nombre total de cellules qui étaient attachées au début, ils peuvent calculer une fixation fractionnelle (ou détachement).

Si vous tracez la fraction adhérente en fonction de la contrainte de cisaillement, le résultat est une courbe logistique. En théorie, chaque cellule individuelle est une observation unique, mais il y a évidemment des milliers ou des dizaines de milliers de cellules, donc l'ensemble de données serait gigantesque, s'il était configuré de la manière habituelle (chaque ligne étant une observation).

Donc, naturellement, ma question (comme indiqué dans le titre) devrait avoir un sens maintenant. Comment faire une régression logistique en utilisant le résultat fractionnaire comme DV? Existe-t-il une transformation automatique qui peut être effectuée dans glm?

Dans le même ordre d'idées, s'il y avait potentiellement 3 mesures (fractionnaires) ou plus, comment procéder pour une régression logistique multinomiale?


Voici quelques exemples concernant une régression logistique à résultats multivariés:http://www.ats.ucla.edu/stat/r/dae/mlogit.htm
marbel

1
Ce que vous décrivez ne semble pas avoir des observations indépendantes (puisque les cellules ne se réattachent probablement pas lorsque le cisaillement augmente, le nombre toujours attaché à chaque paramètre de contrainte plus élevé ne doit pas être supérieur au nombre précédent); cette dépendance doit être prise en compte. (Cela rappelle la situation avec les courbes de croissance.) --- vous ne pouvez pas simplement brancher les chiffres dans un GLM comme s'ils étaient indépendants ... et aucune des réponses ne semble résoudre ce problème.
Glen_b -Reinstate Monica

2
@Glen_b Chaque expérience se ferait avec différentes cellules, c'est-à-dire en commençant par une fixation "100%" et en appliquant une valeur différente de la contrainte de cisaillement.
thecity2

Ah ok. Cela donnerait des résultats indépendants.
Glen_b -Reinstate Monica

Réponses:


37

La glmfonction Rpermet de spécifier 3 formules pour un modèle de régression logistique.

La plus courante est que chaque ligne du bloc de données représente une observation unique et la variable de réponse est soit 0 soit 1 (ou un facteur à 2 niveaux, ou une autre variable avec seulement 2 valeurs uniques).

Une autre option consiste à utiliser une matrice à 2 colonnes comme variable de réponse, la première colonne étant le nombre de «succès» et la deuxième colonne étant le nombre de «échecs».

Vous pouvez également spécifier la réponse en tant que proportion entre 0 et 1, puis spécifier une autre colonne comme 'poids' qui donne le nombre total d'où provient la proportion (donc une réponse de 0,3 et un poids de 10 est identique à 3 ' succès et 7 «échecs»).

L'une ou l'autre des deux dernières façons correspondrait à ce que vous essayez de faire, la dernière semble la plus directe pour la façon dont vous décrivez vos données.


9

Pour commencer, si vous avez une variable dépendante qui est une proportion, vous pouvez utiliser la régression bêta. Cela ne s'étend pas (avec mes connaissances limitées) à de multiples proportions.

Pour un aperçu de la régression bêta et une implémentation R, consultez betareg .


Merci! Cela ressemble à ce dont j'ai besoin pour le cas binomial.
thecity2

2

J'ai utilisé nnet::multinom(le paquet nnet fait partie de MASS) dans un but similaire, il accepte une entrée continue dans [0, 1].

Si vous avez besoin d'une référence: C. Beleites et. Al.: Classement spectroscopique Raman des tissus des astrocytomes: en utilisant des informations de référence souples. Anal Bioanal Chem, 2011, vol. 400 (9), pp. 2801-2816


Génial! J'ai ce paquet et je ne savais pas qu'il avait cette capacité.
thecity2

@cbeleites: Est-ce que cela permet à la personne à charge d'être [0,1]? Je pensais que c'était une fonction pour une personne à charge nominale (les prédicteurs devraient être mis à l'échelle à [0,1] ...
B_Miner

@B_Miner: oui, la personne à charge peut être en [0, 1]. La fonction s'adapte à un réseau neuronal artificiel sans couche cachée et avec sigmoïde logistique. Et oui, il est recommandé de mettre à l'échelle les prédicteurs à peu près à [0, 1] également pour une meilleure convergence.
cbeleites prend en charge Monica le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.