Lors du calcul de modèles de régression avec R, j'utilise régulièrement la fonction relevel pour que mon modèle me donne également des résultats pour l'autre niveau. J'ai remarqué que parfois, mais pas souvent, cela changeait le modèle dans le sens où les niveaux d'autres facteurs qui étaient significatifs avant la mise à niveau ne le sont plus. Est-ce inhérent à la mise à jour ou exceptionnel et peut-être dû à un problème avec mes données? Cela montre-t-il que mes données ne répondent probablement pas à l'une des conditions préalables des modèles linéaires?
En rapport avec cela, est-ce correct si j'utilise Relevel, recalcule mon modèle, puis signale les valeurs de signification des deux modèles dans mon article? Si la signification diffère entre les deux modèles pour un certain facteur, je suppose que je devrais alors choisir un modèle moins optimiste?
Je suppose que ma question trahit que je n'en sais pas assez sur lm pour comprendre le besoin d'un niveau de base. Je pensais l'avoir bien compris;) D'une manière ou d'une autre, aucune des introductions que j'ai lues n'expliquait ce point, ou j'étais trop idiot pour le comprendre. Donc, si quelqu'un pouvait me diriger vers un site où le point d'avoir des niveaux de base en lm est expliqué ou l'expliquer eux-mêmes, ce serait bien aussi!
Edit: Voici un exemple minimal:
library(datasets)
sprays<-OrchardSprays
model<-lm(decrease~treatment+rowpos+colpos,data=sprays)
summary(model)
Une partie du résumé dit
treatmentC 20.625 9.731 2.120 0.03866 *
Donc, si le traitement == C, cela a une influence positive significative sur la «diminution». Maintenant, je relève le «traitement» en B pour savoir quelle influence le traitement == A a:
sprays$treatment<-relevel(sprays$treatment,"B")
summary(model)
Et maintenant le traitement == C n'est pas significatif dans ce nouveau modèle:
treatmentC 17.625 9.731 1.811 0.07567 .
Désolé d'avoir posté au mauvais endroit! Puis-je déplacer ma question vers stats statexchange ou dois-je en ouvrir une nouvelle là-bas?
la source
d <- data.frame(y=runif(300),f=factor(rep(LETTERS[1:3],each=100)); lm(y~f,data=d)
vous donnera un début, bien qu'il n'y ait bien sûr pas de changements significatifs dans ce cas (bien que les estimations de paramètres et les valeurs de p changeront certainement lorsque vous vous releverez).Réponses:
Supposons que le facteur
conditions
ait des niveauxA,B,C
et que vous régressiez votre variable de réponsey
sur les conditions utilisantmod <- lm(y ~ conditions)
. Maintenant ,summary(mod)
retourne la moyenne du niveau de référenceconditions
( par exempleA
) et la différence de moyens entre les conditionsB
etA
et la différence entre les conditionsC
etA
(rapporté respectivement(Intercept)
,conditions:B
etconditions:C
). Si vousconditions <- relevel(conditions, ref = 'B')
et réunissez à nouveau le modèle linéaire, vous obtiendrez maintenant la moyenne deB
, la différence entreA
etB
, et la différence entreC
etA
. Naturellement, les valeurs de p peuvent changer. Cela ne signifie pas qu'il y a un problème avec vos données. Cela ne signifie pas que vos données échouent nécessairement à une hypothèse du modèle linéaire. L'ajustement est le même et vous avez simplement changé les informations imprimées car vous avez changé le niveau de référence et utilisez des contrastes de traitement. Vous pouvez obtenir les mêmes tests d'hypothèse linéaire en utilisant l'originalmod
.En ce qui concerne les éléments à déclarer, dans de nombreux domaines, il est habituel de signaler s'il y a eu un effet statistiquement significatif de
conditions
(en utilisant la sortie deanova(mod)
) et de signaler la sortie de régression complète dans un tableau (en utilisant les niveaux de référence que vous souhaitez ). Les normes pour savoir comment et s'il faut signaler les tests deA
vsB
(par exemple) varient selon le domaine. Examinez de près les bons articles dans votre domaine.la source