Je n'ai pas réussi à comprendre comment effectuer une régression linéaire dans R pour un plan de mesures répétées. Dans une question précédente (toujours sans réponse), il m'a été suggéré de ne pas utiliser lm
mais plutôt d'utiliser des modèles mixtes. J'ai utilisé lm
de la manière suivante:
lm.velocity_vs_Velocity_response <- lm(Velocity_response~Velocity*Subject, data=mydata)
(plus de détails sur l'ensemble de données peuvent être trouvés sur le lien ci-dessus)
Cependant, je n'ai pu trouver sur Internet aucun exemple avec un code R montrant comment effectuer une analyse de régression linéaire.
Ce que je veux, c'est d'une part un tracé des données avec la ligne correspondant aux données, et d'autre part la valeur avec la valeur p pour le test de signification pour le modèle.
Y a-t-il quelqu'un qui peut faire des suggestions? Tout exemple de code R pourrait être d'une grande aide.
Modifier
Selon la suggestion que j'ai reçue jusqu'à présent, la solution pour analyser mes données afin de comprendre s'il existe une relation linéaire entre les deux variables Velocity_response (dérivant du questionnaire) et Velocity (dérivant de la performance) devrait être la suivante:
library(nlme)
summary(lme(Velocity_response ~ Velocity*Subject, data=scrd, random= ~1|Subject))
Le résultat du résumé donne ceci:
> summary(lme(Velocity_response ~ Velocity*Subject, data=scrd, random= ~1|Subject))
Linear mixed-effects model fit by REML
Data: scrd
AIC BIC logLik
104.2542 126.1603 -30.1271
Random effects:
Formula: ~1 | Subject
(Intercept) Residual
StdDev: 2.833804 2.125353
Fixed effects: Velocity_response ~ Velocity * Subject
Value Std.Error DF t-value p-value
(Intercept) -26.99558 25.82249 20 -1.0454288 0.3083
Velocity 24.52675 19.28159 20 1.2720292 0.2180
SubjectSubject10 21.69377 27.18904 0 0.7978865 NaN
SubjectSubject11 11.31468 33.51749 0 0.3375754 NaN
SubjectSubject13 52.45966 53.96342 0 0.9721337 NaN
SubjectSubject2 -14.90571 34.16940 0 -0.4362299 NaN
SubjectSubject3 26.65853 29.41574 0 0.9062674 NaN
SubjectSubject6 37.28252 50.06033 0 0.7447517 NaN
SubjectSubject7 12.66581 26.58159 0 0.4764880 NaN
SubjectSubject8 14.28029 31.88142 0 0.4479188 NaN
SubjectSubject9 5.65504 34.54357 0 0.1637076 NaN
Velocity:SubjectSubject10 -11.89464 21.07070 20 -0.5645111 0.5787
Velocity:SubjectSubject11 -5.22544 27.68192 20 -0.1887672 0.8522
Velocity:SubjectSubject13 -41.06777 44.43318 20 -0.9242591 0.3664
Velocity:SubjectSubject2 11.53397 25.41780 20 0.4537754 0.6549
Velocity:SubjectSubject3 -19.47392 23.26966 20 -0.8368804 0.4125
Velocity:SubjectSubject6 -29.60138 41.47500 20 -0.7137162 0.4836
Velocity:SubjectSubject7 -6.85539 19.92271 20 -0.3440992 0.7344
Velocity:SubjectSubject8 -12.51390 22.54724 20 -0.5550080 0.5850
Velocity:SubjectSubject9 -2.22888 27.49938 20 -0.0810519 0.9362
Correlation:
(Intr) Velcty SbjS10 SbjS11 SbjS13 SbjcS2 SbjcS3 SbjcS6 SbjcS7 SbjcS8 SbjcS9 V:SS10 V:SS11 V:SS13 Vl:SS2 Vl:SS3
Velocity -0.993
SubjectSubject10 -0.950 0.943
SubjectSubject11 -0.770 0.765 0.732
SubjectSubject13 -0.479 0.475 0.454 0.369
SubjectSubject2 -0.756 0.751 0.718 0.582 0.362
SubjectSubject3 -0.878 0.872 0.834 0.676 0.420 0.663
SubjectSubject6 -0.516 0.512 0.490 0.397 0.247 0.390 0.453
SubjectSubject7 -0.971 0.965 0.923 0.748 0.465 0.734 0.853 0.501
SubjectSubject8 -0.810 0.804 0.769 0.624 0.388 0.612 0.711 0.418 0.787
SubjectSubject9 -0.748 0.742 0.710 0.576 0.358 0.565 0.656 0.386 0.726 0.605
Velocity:SubjectSubject10 0.909 -0.915 -0.981 -0.700 -0.435 -0.687 -0.798 -0.469 -0.883 -0.736 -0.679
Velocity:SubjectSubject11 0.692 -0.697 -0.657 -0.986 -0.331 -0.523 -0.607 -0.357 -0.672 -0.560 -0.517 0.637
Velocity:SubjectSubject13 0.431 -0.434 -0.409 -0.332 -0.996 -0.326 -0.378 -0.222 -0.419 -0.349 -0.322 0.397 0.302
Velocity:SubjectSubject2 0.753 -0.759 -0.715 -0.580 -0.360 -0.992 -0.661 -0.389 -0.732 -0.610 -0.563 0.694 0.528 0.329
Velocity:SubjectSubject3 0.823 -0.829 -0.782 -0.634 -0.394 -0.622 -0.984 -0.424 -0.799 -0.667 -0.615 0.758 0.577 0.360 0.629
Velocity:SubjectSubject6 0.462 -0.465 -0.438 -0.356 -0.221 -0.349 -0.405 -0.995 -0.449 -0.374 -0.345 0.425 0.324 0.202 0.353 0.385
Velocity:SubjectSubject7 0.961 -0.968 -0.913 -0.740 -0.460 -0.726 -0.844 -0.496 -0.986 -0.778 -0.718 0.886 0.674 0.420 0.734 0.802
Velocity:SubjectSubject8 0.849 -0.855 -0.807 -0.654 -0.406 -0.642 -0.746 -0.438 -0.825 -0.988 -0.635 0.783 0.596 0.371 0.649 0.709
Velocity:SubjectSubject9 0.696 -0.701 -0.661 -0.536 -0.333 -0.526 -0.611 -0.359 -0.676 -0.564 -0.990 0.642 0.488 0.304 0.532 0.581
Vl:SS6 Vl:SS7 Vl:SS8
Velocity
SubjectSubject10
SubjectSubject11
SubjectSubject13
SubjectSubject2
SubjectSubject3
SubjectSubject6
SubjectSubject7
SubjectSubject8
SubjectSubject9
Velocity:SubjectSubject10
Velocity:SubjectSubject11
Velocity:SubjectSubject13
Velocity:SubjectSubject2
Velocity:SubjectSubject3
Velocity:SubjectSubject6
Velocity:SubjectSubject7 0.450
Velocity:SubjectSubject8 0.398 0.828
Velocity:SubjectSubject9 0.326 0.679 0.600
Standardized Within-Group Residuals:
Min Q1 Med Q3 Max
-1.47194581 -0.46509026 -0.05537193 0.39069634 1.89436646
Number of Observations: 40
Number of Groups: 10
Warning message:
In pt(q, df, lower.tail, log.p) : NaNs produced
>
Maintenant, je ne comprends pas où je peux obtenir le R ^ 2 et les valeurs de p correspondantes m'indiquant s'il existe une relation linéaire entre les deux variables ou non, ni avoir compris comment mes données peuvent être tracées avec la ligne correspondant à la régression.
Quelqu'un peut-il être si gentil de m'éclairer? J'ai vraiment besoin de votre aide, les gars ...
nlme
package. En outre, recherchez le sujet sur ce site, il y a beaucoup d' écrit à ce sujet ici.Réponses:
Ce que vous faites dépend vraiment des objectifs de l'analyse. Je ne sais pas exactement quels sont les objectifs de votre analyse, mais je vais passer en revue plusieurs exemples, et j'espère que l'un d'eux sera applicable à votre situation.
Cas 1 : une variable quantitative mesurée deux fois
Supposons que vous ayez mené une étude sur un sujet humain dans laquelle vous avez demandé aux participants de passer un test de statistiques deux fois et que vous vouliez savoir si les scores moyens de la deuxième mesure étaient différents de la première mesure (pour déterminer si l'apprentissage s'est produit). Si les scores test1 et test2 sont stockés dans la trame de données d, vous pouvez le faire entièrement en utilisant la fonction lm (), comme dans:
Le test de l'ordonnée à l'origine est le test de la différence entre test1 et test2. Notez que vous n'aurez pas de delta-R ^ 2 pour la différence entre test1 et test2 - à la place, votre mesure de la taille de l'effet devrait être quelque chose comme le d de Cohen.
Cas 2a : une variable quantitative mesurée deux fois, une variable dichotomique, mesurée totalement entre les sujets
Disons que nous avons le même plan d'étude, mais nous voulons savoir si différents taux d'apprentissage se sont produits pour les hommes et les femmes. Nous avons donc une variable quantitative (performance du test) qui est mesurée deux fois, et une variable dichotomique, mesurée une fois. En supposant que test1, test2 et sexe sont tous contenus dans la trame de données d, nous pourrions également tester ce modèle uniquement en utilisant lm (), comme dans:
En supposant que le sexe est centré (c.-à-d. Codé, par exemple, homme = -,5 et femme = +,5), l'ordonnée à l'origine dans ce modèle est le test de la différence entre le test 1 et le test 2, moyenne pour les hommes et les femmes. Le coefficient de genre est l'interaction entre le temps et le sexe. Pour obtenir l'effet du sexe, en moyenne dans le temps, vous devez faire:
Cas 2b : une variable quantitative mesurée deux fois, une variable quantitative, mesurée une seule fois
Supposons à nouveau que nous avons une variable quantitative mesurée deux fois et une variable quantitative mesurée une fois. Ainsi, par exemple, supposons que nous avions une mesure d'intérêt de base pour les statistiques et que nous voulions déterminer si les personnes qui avaient un niveau d'intérêt de base plus élevé ont appris davantage de temps 1 à temps 2. Nous devons d'abord centrer l'intérêt, comme dans :
En supposant que test1, test2 et interestc sont tous dans la trame de données d, cette question pourrait alors être testée de manière très similaire au cas 1a:
Une fois de plus, l'ordonnée à l'origine dans ce modèle teste si, en moyenne à travers l'intérêt, les scores aux tests ont changé du temps 1 au temps 2. Cependant, cette interprétation ne tient que lorsque l'intérêt est centré. Le coefficient d'intérêt est de savoir si l'effet du temps dépend de l'intérêt de base. Nous pourrions obtenir l'effet d'intérêt, moyenné dans le temps, en faisant la moyenne ensemble des tests 1 et 2, comme ci-dessus, et en testant l'effet d'intérêt sur cette variable composite.
Cas 2c : une variable quantitative mesurée deux fois, une variable catégorielle, mesurée une seule fois
Supposons que votre variable inter-sujets soit une catégorie, mesurée une seule fois. Ainsi, par exemple, supposons que vous vouliez savoir si les personnes de races différentes (blanches vs asiatiques vs noires vs hispaniques) ont eu différentes quantités d'apprentissage du temps 1 au temps 2. En supposant que test1, test2 et race sont dans la trame de données d , vous devez d'abord comparer la race du code. Cela pourrait être fait en utilisant des contrastes orthogonaux planifiés, des codes factices ou en utilisant des codes d'effets, selon les hypothèses / questions spécifiques que vous souhaitez tester (je recommande de consulter lm.setContrasts () si vous recherchez une fonction d'aide pour le faire) . En supposant que la variable raciale est déjà codée par contraste, vous utiliseriez lm () de manière très similaire aux deux cas ci-dessus, comme dans:
En supposant que les contrastes raciaux sont centrés, l'ordonnée à l'origine dans ce modèle est, encore une fois, «l'effet principal» du temps. Les coefficients des contrastes raciaux sont les interactions entre ces contrastes et le temps. Pour obtenir les effets omnibus de la race, utilisez le code suivant:
Cas 3 : une variable quantitative mesurée 3 fois (c.-à-d. Une manipulation intra-sujet à trois niveaux)
Supposons que vous ayez ajouté un troisième point de mesure à la conception à partir du premier cas. Ainsi, vos participants ont passé un test de statistiques trois fois au lieu de deux. Ici, vous avez deux choix, selon que vous souhaitez un test omnibus des différences entre les points de temps (parfois vous ne le faites pas).
Par exemple, disons que votre hypothèse principale est que les résultats des tests augmenteront linéairement du temps 1 au temps 3. En supposant que test1, test2 et test3 sont dans la trame de données d, cette hypothèse pourrait être testée en créant d'abord le composite suivant:
Ensuite, vous testez si un modèle d'interception uniquement utilisant lin comme variable dépendante a une interception différente de 0, comme dans:
Cela vous permettra de vérifier si les scores de statistiques ont augmenté au fil du temps. Vous pouvez bien sûr créer d'autres types de scores de différence personnalisés, en fonction de vos hypothèses particulières.
Si vous vous souciez des tests omnibus importants, vous devez utiliser la fonction Anova () du package de voiture. La mise en œuvre spécifique est un peu compliquée. Fondamentalement, vous spécifiez les variables à l'intérieur des sujets et celles qui sont entre les sujets à l'aide de lm (). Vous créez ensuite la partie intra-sujets du modèle (c.-à-d., Spécifiez lesquels des tests1, test2 et test3 ont été mesurés en premier, deuxième et troisième), puis passez ce modèle à Anova () en créant un bloc de données appelé idata. En utilisant mon exemple hypothétique:
L'instruction idesign indique à Anova d'inclure la variable de temps (composée de test1, test2 et test3) dans le modèle. Ce code vous donnera vos tests omnibus des effets du temps sur les résultats des tests.
Cas 4 : une variable quantitative mesurée 3 fois, une variable quantitative inter-sujets
Ce cas est une simple extension du cas 3. Comme ci-dessus, si vous ne vous souciez que de 1 degré de liberté, vous pouvez simplement créer un score de différence personnalisé avec votre variable intra-sujets. Donc, en supposant que test1, test2, test3 et l'intérêt sont tous dans la trame de données d, et en supposant que nous nous intéressons aux effets linéaires du temps sur les résultats des tests (et comment ces effets du temps varient avec l'intérêt de base), vous feriez le suivant:
Ensuite, procédez comme suit (avec un intérêt moyen):
Si vous souhaitez des tests omnibus, procédez comme suit:
Autres cas: je vais les omettre par souci de concision, mais ce sont de simples extensions de ce que j'ai déjà décrit.
Veuillez noter que les tests omnibus (univariés) du temps où le temps a plus de 2 niveaux supposent tous une sphéricité. Cette hypothèse devient assez intenable à mesure que vous augmentez le nombre de niveaux. Si vous avez plusieurs points de mesure dans votre conception (par exemple, 4+), je vous recommande fortement d'utiliser quelque chose comme la modélisation à plusieurs niveaux et de passer à un package spécialisé pour cette technique (comme nlme ou lme4 .
J'espère que cela t'aides!
la source