Je voudrais tester la différence de réponse de deux variables à un prédicteur. Voici un exemple reproductible minimal.
library(nlme)
## gls is used in the application; lm would suffice for this example
m.set <- gls(Sepal.Length ~ Petal.Width, data = iris,
subset = Species == "setosa")
m.vir <- gls(Sepal.Length ~ Petal.Width, data = iris,
subset = Species == "virginica")
m.ver <- gls(Sepal.Length ~ Petal.Width, data = iris,
subset = Species == "versicolor")
Je peux voir que les coefficients de pente sont différents:
m.set$coefficients
(Intercept) Petal.Width
4.7771775 0.9301727
m.vir$coefficients
(Intercept) Petal.Width
5.2694172 0.6508306
m.ver$coefficients
(Intercept) Petal.Width
4.044640 1.426365
J'ai trois questions:
- Comment tester la différence entre les pentes?
- Comment puis-je tester la différence entre les variances résiduelles?
- Quelle est une manière simple et efficace de présenter ces comparaisons?
Une question connexe, Méthode pour comparer le coefficient variable dans deux modèles de régression , suggère de relancer le modèle avec une variable fictive pour différencier les pentes. Existe-t-il des options qui permettraient d'utiliser des ensembles de données indépendants?
Réponses:
Comment tester la différence entre les pentes?
Incluez un mannequin pour les espèces, laissez-le interagir avec et voyez si ce mannequin est significatif. Soit la longueur du sépale et la largeur de la pédale et les variables muettes pour les trois espèces. Le comparer le modèlePje Lje Pje S1, S2, S3
avec le modèle qui permet à l'effet de d'être différent pour chaque espèce:Pje
Les estimateurs GLS sont des MLE et le premier modèle est un sous-modèle du second, vous pouvez donc utiliser le test du rapport de vraisemblance ici. Les probabilités peuvent être extraites à l'aide de la4 4
logLik
fonction et les degrés de liberté pour le test seront de puisque vous avez supprimé paramètres pour arriver au sous-modèle.Quelle est une manière simple et efficace de présenter la comparaison?
Je pense que la façon la plus intéressante serait de tracer les lignes de régression pour chaque espèce sur les mêmes axes, peut-être avec des barres d'erreur basées sur les erreurs standard. Cela rendrait la différence (ou la non-différence) entre les espèces et leur relation avec très apparente.Pje
Edit: j'ai remarqué qu'une autre question a été ajoutée au corps. J'ajoute donc une réponse à cela:
Comment puis-je tester la différence entre les variances résiduelles?
Pour cela, vous devrez stratifier l'ensemble de données et ajuster des modèles distincts, car le modèle basé sur l'interaction que j'ai suggéré contraindra la variance résiduelle à être la même dans chaque groupe. Si vous ajustez des modèles distincts, cette contrainte disparaît. Dans ce cas, vous pouvez toujours utiliser le test du rapport de vraisemblance (la probabilité pour le modèle plus grand est maintenant calculée en additionnant les probabilités des trois modèles distincts). Le modèle "nul" dépend de ce avec quoi vous voulez le comparer
si vous voulez seulement tester la variance, tout en laissant les effets principaux dedans, alors le modèle "nul" devrait être le modèle avec les interactions que j'ai écrites ci-dessus. Les degrés de liberté pour le test sont alors de .2
Si vous voulez tester la variance conjointement avec les coefficients, alors le modèle nul devrait être le premier modèle que j'ai écrit ci-dessus. Le degré de liberté du test est alors de .6
la source
gls(Sepal.Length ~ species:Petal.Width, data = iris)
species
gls(Sepal.Length ~ species*Petal.Width, data=iris)
gls
modèle mais en permettant différentes variances résiduelles pour chaque espèce avec l'optionweights=varIdent(form=~1|Species)
(concernant la deuxième question)?Pour répondre à ces questions avec le code R, utilisez ce qui suit:
1. Comment puis-je tester la différence entre les pentes?
Réponse: Examinez la valeur p de l'ANOVA à partir de l'interaction de Petal.Width par espèce, puis comparez les pentes à l'aide de lsmeans :: lstrends, comme suit.
2. Comment puis-je tester la différence entre les variances résiduelles?
Si je comprends bien la question, vous pouvez comparer les corrélations de Pearson avec une transformée de Fisher, également appelée "r-to-z de Fisher", comme suit.
3. Quelle est une manière simple et efficace de présenter ces comparaisons?
"Nous avons utilisé une régression linéaire pour comparer la relation entre la longueur du sépale et la largeur du pétale pour chaque espèce. Nous n'avons trouvé aucune interaction significative dans les relations entre la longueur du sépale et la largeur du pétale pour I. Setosa (B = 0,9), I. Versicolor (B = 1,4), ni I. Virginica (B = 0,6); F (2, 144) = 1,6, p = 0,19. Une comparaison r-à-z de Fisher a indiqué que la corrélation de Pearson pour I. Setosa (r = 0,28) était significativement plus faible (p = 0,02) que I. Versicolor (r = 0,55). De même, la corrélation pour I. Virginica (r = 0,28) était significativement plus faible (p = 0,02) que celle observée pour I. Versicolor. "
Enfin, visualisez toujours vos résultats!
la source
Je suis d'accord avec la suggestion précédente. Vous devez adapter un modèle de régression multiple avec une variable fictive pour chaque ensemble de données. Cela vous permettra de tester si les interceptions diffèrent. Si vous souhaitez également savoir si les pentes diffèrent, vous devez également inclure les interactions entre les variables muettes et la variable en question. Il n'y a aucun problème avec le fait que les données sont indépendantes. Notez que s'ils sont à la fois des espèces indépendantes et (par exemple) différentes, vous ne pourrez pas dire si la différence que vous trouvez est due aux espèces ou aux ensembles de données différents, car ils sont parfaitement confondus. Cependant, il n'y a pas de test / carte de sortie de prison qui vous permettra de contourner ce problème sans rassembler un nouvel échantillon et relancer votre étude.
la source