Ce n'est pas un problème spécifique à R. R utilise un affichage conventionnel des coefficients.
Lorsque vous lisez une telle sortie de régression (dans un document, un manuel ou à partir d'un logiciel statistique), vous devez savoir quelles variables sont "continues" et lesquelles sont "catégoriques":
Les valeurs "continues" sont explicitement numériques et leurs valeurs numériques ont été utilisées telles quelles dans l'ajustement de régression.
Les variables "catégorielles" peuvent être de tout type, y compris celles qui sont numériques! Ce qui les rend catégoriques, c'est que le logiciel les a traités comme des «facteurs»: autrement dit, chaque valeur distincte trouvée est considérée comme un indicateur de quelque chose de distinct.
La plupart des logiciels traitent les valeurs non numériques (telles que les chaînes) comme des facteurs. La plupart des logiciels peuvent également être convaincus de traiter les valeurs numériques comme des facteurs. Par exemple, un code de service postal (code postal aux États-Unis) ressemble à un numéro mais n'est en réalité qu'un code pour un ensemble de boîtes aux lettres; cela n'aurait aucun sens d'ajouter, de soustraire et de multiplier les codes postaux par d'autres nombres! (Cette flexibilité est la source d'une erreur courante: si vous ne faites pas attention ou si vous ne le voulez pas, votre logiciel peut traiter une variable que vous considérez comme catégorique comme continue, ou vice-versa. Soyez prudent!)
Néanmoins, les variables catégorielles doivent être représentées d'une certaine manière sous forme de nombres afin d'appliquer les algorithmes d'ajustement. Il existe de nombreuses façons de les encoder . Les codes sont créés à l'aide de "variables factices". En savoir plus sur l'encodage des variables factices en effectuant une recherche sur ce site; les détails n'ont pas d'importance ici.
Dans la question , on nous dit que h
et f
sont des valeurs catégoriques ( « discrètes »). Par défaut, log(d)
et a
sont continus. C'est tout ce que nous devons savoir. Le modèle est
y= - 0,6779695+ 1,791294 journal ( d)+ 0.870735- 0,447570+ 0.542033+ 0,037362 a - 0,588362+ 0.816825+ 0.534440- 0,085658 a - 0,034970 a - 0,040637 a si h = h1 si h = h2 si h = h3 si f= f1 si f= f2 si f= f3 si h = h1 si h = h2 si h = h3
Les règles appliquées ici sont:
Le terme "interception", s'il apparaît, est une constante additive (première ligne).
Les variables continues sont multipliées par leurs coefficients, même dans les « interactions » comme h1:a
, h2:a
et les h3:a
termes. (Cela répond à la question d'origine.)
Toute variable (ou facteur) catégorielle est incluse uniquement dans les cas où la valeur de ce facteur apparaît.
Par exemple, supposons que , , et . La valeur ajustée dans ce modèle estJournal( d) = 2h = h3a = - 1F= f2
y^= - 0,6797 + 1,7913 × ( 2 ) + 0,5420 + 0,0374 × ( - 1 ) + 0,8168 - 0,0406 × ( - 1 ) .
Remarquez comment la plupart des coefficients du modèle n'apparaissent tout simplement pas dans le calcul, car ils h
peuvent prendre exactement l' une des trois valeurs , , et donc un seul des trois coefficients s'applique à et uniquement l'un des trois coefficients se multipliera dans l' interaction; de même, un seul coefficient s'applique dans un cas particulier.h 2 h 3 ( 0,870735 , - 0,447570 , 0,542033 ) ( - 0,085658 , - 0,034970 , - 0,040637 )h1h2h3( 0,870735 , - 0,447570 , 0,542033 )h
( - 0,085658 , - 0,034970 , - 0,040637 )a
h:a
f
g1
c
pourrait être déroutant dans ce cas particulier, parce que je choisis deux lettres pour représentent les niveaux g1, mais en général, c'est assez intuitif - et c'est du pur tex afin que nous puissions encore éditer le fichier source par la suite). Ci - joint un autre résumé où j'ai modifiég1
afin qu'il soit maintenant un facteur à quatre niveaux. Pourtant, avec des étiquettes 0/1 qui pourraient être plus déroutantes .Vous pouvez vérifier vos «contrastes» par défaut en
options()
recherchant:Si vos contrastes non ordonnés sont définis comme
contr.treatment
(comme ils devraient l'être à moins que vous ne les ayez modifiés), le premier niveau de chacun de vos facteurs sera défini comme ligne de base. Vous ne recevrez que des estimations pour les coefficients devant les variables fictives créées pour les autres niveaux du facteur. En effet, ces coefficients seront "à quel point en moyenne la variable de réponse est-elle différente à ce niveau du facteur, par rapport au niveau de base du facteur, ayant contrôlé tout le reste dans le modèle".Je suppose que d'après votre sortie, il y a un
h0
etf0
qui sont les niveaux de base pour h et f (sauf si vous avez une option non par défaut pour les contrastes, auquel cas il y a plusieurs possibilités; essayez?contr.treatment
pour de l'aide).C'est similaire avec l'interaction. Si mon paragraphe précédent est correct, l'estimation donnée pour
a
sera vraiment la pente poura
quandh=h0
. Les estimations données dans le résumé qui s'appliquent aux interactions sont la variation de la pente pour différents niveaux deh
.Donc, dans votre exemple où h = h1 et f = f2, essayez:
Oh, et vous pouvez aussi
predict()
faire beaucoup de choses utiles ... si vous voulez réellement prédire quelque chose (plutôt que d'écrire l'équation d'un rapport). Essayez?predict.lm
de voir ce quepredict()
fait un objet créé parlm
.la source
options()
. Vous devrez faire défiler beaucoup d'ordures pour trouver ce dont vous avez besoin. Vous pourriez essayeroptions()$contrasts
, qui ne produira que ce que vous voulez.