Régression linéaire avec des facteurs dans R

10

J'essaie de comprendre comment fonctionnent exactement les facteurs dans R. Disons que je veux exécuter une régression en utilisant des exemples de données dans R:

> data(CO2)
> colnames(CO2)
[1] "Plant"     "Type"      "Treatment" "conc"      "uptake"   
> levels(CO2$Type)
[1] "Quebec"      "Mississippi"
> levels(CO2$Treatment)
[1] "nonchilled" "chilled"   
> lm(uptake ~ Type + Treatment, data = CO2)

Call:
lm(formula = uptake ~ Type + Treatment, data = CO2)

Coefficients:
 (Intercept)   TypeMississippi  Treatmentchilled  
       36.97            -12.66             -6.86  

Je comprends cela TypeMississippiet Treatmentchilledsont traités comme des booléens: pour chaque ligne, l'absorption initiale est 36.97, et nous soustrayons 12.66si elle est de type Mississippi et 6.86si elle a été réfrigérée. J'ai du mal à comprendre quelque chose comme ça:

 > lm(uptake ~ Type * Treatment, data = CO2)

 Call:
 lm(formula = uptake ~ Type * Treatment, data = CO2)

 Coefficients:
                 (Intercept)                   TypeMississippi  
                      35.333                            -9.381  
            Treatmentchilled  TypeMississippi:Treatmentchilled  
                      -3.581                            -6.557  

Que signifie multiplier deux facteurs ensemble dans un lm?

sylowtheorems
la source

Réponses:

17

Pour développer la réponse de @ John: dans les formules de R, vous avez quelques opérateurs que vous pouvez appliquer aux termes: "+" les ajoute simplement, ":" signifie que vous ajoutez un terme (ou plusieurs termes) qui se réfèrent à leur interaction ( voir ci-dessous), "*" signifie les deux, c'est-à-dire: les "effets principaux" sont ajoutés, et le ou les termes d'interaction sont également ajoutés.

Alors, que signifie cette interaction? Eh bien, dans le cas de variables continues, c'est bien un terme qui est ajouté qui est simplement le multiple des deux variables. Si vous avez la taille et le poids comme prédicteurs et que vous l'utilisez out ~ height * weightcomme formule, le modèle linéaire contiendra donc trois `` variables '', à savoir le poids, la taille et leur produit (il contient également l'interaction, mais c'est moins intéressant ici).

Bien que je suggère le contraire ci-dessus: cela fonctionne exactement de la même manière pour les variables catégorielles, mais maintenant le «produit» s'applique à la (série de) variable (s) fictive (s) pour chaque variable catégorielle. Supposons que votre taille et votre poids soient désormais catégoriques, chacun avec trois catégories (S (mall), M (edium) et L (arge)). Ensuite, dans les modèles linéaires, chacun d'eux est représenté par un ensemble de deux variables muettes qui sont soit 0 soit 1 (il existe d'autres façons de coder, mais c'est la valeur par défaut dans R et la plus couramment utilisée). Disons que nous utilisons S comme catégorie de référence pour les deux, puis nous avons à chaque fois deux mannequins height.M et height.L (et similaire pour le poids).

Alors maintenant, le modèle out ~ height * weightcontient maintenant les 4 variables muettes + tous les produits de toutes les combinaisons factices (je n'écris pas explicitement les coefficients ici, ils sont implicites):

(intercept) + height.M + height.L + weight.M + weight.L + height.M * weight.M + height.L * weight.M + height.M * weight.L + height.L * weight.L.

Dans la ligne ci-dessus, `` * '' fait à nouveau référence à un produit simple, mais cette fois-ci des variables muettes, de sorte que chaque produit lui-même est également soit 1 (lorsque tous les facteurs sont 1) ou 0 (quand au moins un ne l'est pas).

Dans ce cas, les 8 `` variables '' permettent des résultats (moyens) différents dans toutes les combinaisons des deux variables: l'effet d'avoir un poids important n'est plus le même pour les petites personnes (pour elles, l'effet est simplement formé par le terme weight.L) comme pour les grandes personnes (ici, l'effet est weight.L + height.L * weight.L)

Nick Sabbe
la source
7

Pour faire suite à la réponse de John, les formules dans lm n'utilisent pas la notation arithmétique, elles utilisent une notation symbolique compacte pour décrire les modèles linéaires (en particulier la notation Wilkinson-Rogers, il y a un bon bref résumé ici http: //www.physiol .ox.ac.uk / ~ raac / R.shtml ).

Fondamentalement, l'inclusion de A * B dans la formule du modèle signifie que vous ajustez A, B et A: B (l'interaction de A et B). Si le terme d'interaction est statistiquement significatif, cela suggère que l'effet du traitement est différent pour chacun des types.

Marius
la source
3

Il serait peut-être utile de rechercher une «formule» d'aide. Vous ne multipliez pas, vous dites que vous voulez aussi les deux effets principaux et leur interaction.

John
la source
1
(+1) bien que cela ressemble plus à un commentaire pour moi.
Dmitrij Celov