Não consegui descobrir como executar a regressão linear em R in para um design de medida repetida. Em uma pergunta anterior (ainda sem resposta), me foi sugerido não usar, lm
mas usar modelos mistos. Eu usei lm
da seguinte maneira:
lm.velocity_vs_Velocity_response <- lm(Velocity_response~Velocity*Subject, data=mydata)
(mais detalhes sobre o conjunto de dados podem ser encontrados no link acima)
No entanto, não consegui encontrar na internet nenhum exemplo com o código R mostrando como executar uma análise de regressão linear.
O que eu quero é por um lado uma parcela dos dados com a linha de ajuste dos dados, e, por outro lado, o valor juntamente com o valor-p para o teste de significância para o modelo.
Existe alguém que possa fornecer algumas sugestões? Qualquer exemplo de código R pode ser de grande ajuda.
Editar
De acordo com a sugestão que recebi até agora, a solução para analisar meus dados para entender se existe uma relação linear entre as duas variáveis Velocity_response (derivada do questionário) e Velocity (derivada do desempenho) deve ser esta:
library(nlme)
summary(lme(Velocity_response ~ Velocity*Subject, data=scrd, random= ~1|Subject))
O resultado do resumo fornece isso:
> 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
>
Agora, eu não entendo onde posso obter o R ^ 2 e os valores p correspondentes, indicando-me se existe ou não uma relação linear entre as duas variáveis, nem entendo como meus dados podem ser plotados com a linha que se ajusta ao regressão.
Alguém pode ser tão gentil em me esclarecer? Eu realmente preciso da sua ajuda pessoal ...
nlme
pacote. Além disso, procure neste site o tópico, há muito escrito sobre isso aqui.Respostas:
O que você faz realmente depende dos objetivos da análise. Não sei exatamente quais são os objetivos da sua análise, mas analisarei vários exemplos e espero que um deles seja aplicável à sua situação.
Caso 1 : Uma variável quantitativa medida duas vezes
Digamos que você tenha realizado um estudo com seres humanos no qual os participantes fizeram um teste estatístico duas vezes e desejou descobrir se as pontuações médias na segunda medição eram diferentes da primeira (para determinar se o aprendizado ocorreu). Se as pontuações test1 e test2 estiverem armazenadas no quadro de dados d, você poderá fazer isso inteiramente usando a função lm (), como em:
O teste da interceptação é o teste da diferença entre test1 e test2. Observe que você não terá delta-R ^ 2 para a diferença entre test1 e test2 - em vez disso, sua medida do tamanho do efeito deve ser algo como o d de cohen.
Caso 2a : Uma variável quantitativa medida duas vezes, uma variável dicotômica, medida totalmente entre indivíduos
Digamos que tenhamos o mesmo desenho de estudo, mas queremos saber se ocorreram diferentes taxas de aprendizado para homens e mulheres. Portanto, temos uma variável quantitativa (desempenho do teste) que é medida duas vezes e uma variável dicotômica, medida uma vez. Supondo que test1, test2 e sexo estão todos contidos no quadro de dados d, também poderíamos testar este modelo usando apenas lm (), como em:
Supondo que o gênero esteja centrado (isto é, codificado, por exemplo, masculino = -5,5 e feminino = +,5), a interceptação nesse modelo é o teste da diferença entre o teste 1 e o teste 2, em média entre homens e mulheres. O coeficiente para gênero é a interação entre tempo e gênero. Para obter o efeito de gênero, calculado em média ao longo do tempo, você teria que fazer:
Caso 2b : Uma variável quantitativa medida duas vezes, uma variável quantitativa, medida apenas uma vez
Vamos supor que novamente tenhamos uma variável quantitativa medida duas vezes e uma variável quantitativa medida uma vez. Então, por exemplo, digamos que tínhamos uma medida do interesse da linha de base nas estatísticas e queríamos determinar se as pessoas que tinham níveis mais altos de interesse da linha de base aprendiam mais do tempo 1 ao tempo 2. Primeiro, teríamos que centralizar o interesse, como em :
Supondo que test1, test2 e interestc estejam todos no quadro de dados d, essa questão poderia ser testada de maneira muito semelhante ao caso 1a:
Mais uma vez, a interceptação nesse modelo testa se, em média entre os juros, as pontuações dos testes foram alteradas do tempo 1 para o tempo 2. No entanto, essa interpretação é válida apenas quando o interesse é centrado. O coeficiente de interesse é se o efeito do tempo depende do interesse da linha de base. Poderíamos obter o efeito do interesse, calculado a média ao longo do tempo, calculando a média dos testes 1 e 2, como acima, e testando o efeito do interesse nessa variável composta.
Caso 2c : Uma variável quantitativa medida duas vezes, uma variável categórica, medida apenas uma vez
Vamos supor que sua variável entre sujeitos fosse uma categoria, medida apenas uma vez. Então, por exemplo, vamos supor que você estava interessado em saber se pessoas de diferentes raças (brancas x asiáticas x negras x hispânicas) tinham quantidades diferentes de aprendizado de tempos em tempos 1 a 2. 2. Supondo que teste1, teste2 e raça estão no quadro de dados d , primeiro você precisa contrastar a corrida de código. Isso pode ser feito usando contrastes ortogonais planejados, códigos fictícios ou códigos de efeitos, dependendo das hipóteses / perguntas específicas que você deseja testar (recomendo consultar lm.setContrasts () se estiver procurando uma função auxiliar para fazer isso) . Supondo que a variável race já esteja com código de contraste, você usaria lm () de maneira muito semelhante aos dois casos acima, como em:
Supondo que os contrastes raciais estejam centralizados, a interceptação nesse modelo é, mais uma vez, o "efeito principal" do tempo. Os coeficientes para os contrastes raciais são as interações entre esses contrastes e o tempo. Para obter os efeitos omnibus da corrida, use o seguinte código:
Caso 3 : Uma variável quantitativa medida 3 vezes (isto é, uma manipulação interna de três níveis)
Vamos supor que você tenha adicionado um terceiro ponto de medida ao design do caso um. Portanto, seus participantes fizeram um teste de estatística três vezes em vez de duas. Aqui você tem algumas opções, dependendo se você deseja um teste abrangente das diferenças entre os períodos de tempo (às vezes não).
Por exemplo, digamos que sua hipótese principal seja que as pontuações dos testes aumentem linearmente de tempos em tempos 1 a 3. Supondo que test1, test2 e test3 estejam no quadro de dados d, essa hipótese pode ser testada criando primeiro o seguinte composto:
Em seguida, você testaria se um modelo de interceptação apenas usando lin como variável dependente possui uma interceptação diferente de 0, como em:
Isso permitirá que você teste se as pontuações das estatísticas aumentaram ao longo do tempo. Obviamente, você pode criar outros tipos de pontuações de diferenças personalizadas, dependendo de suas hipóteses particulares.
Se você se preocupa com os testes omnibus de significância, precisa usar a função Anova () do pacote veicular. A implementação específica é um pouco complicada. Basicamente, você especifica quais variáveis estão dentro dos assuntos e quais são entre assuntos usando lm (). Em seguida, você cria a parte dentro dos assuntos do modelo (ou seja, especifica qual teste1, teste2 e teste3 foram medidos primeiro, segundo e terceiro) e depois passa esse modelo para Anova () criando um quadro de dados chamado idata. Usando meu exemplo hipotético:
A instrução idesign diz ao Anova para incluir a variável de tempo (composta de teste1, teste2 e teste3) no modelo. Este código fornecerá seus testes completos dos efeitos do tempo nas pontuações dos testes.
Caso 4 : Uma variável quantitativa medida 3 vezes, uma variável quantitativa entre indivíduos
Este caso é uma extensão simples do Caso 3. Como acima, se você se importa apenas com 1 grau de testes de liberdade, pode simplesmente criar uma pontuação de diferença personalizada com sua variável dentro dos assuntos. Portanto, supondo que teste1, teste2, teste3 e interesse estejam todos no quadro de dados d e supondo que estamos interessados nos efeitos lineares do tempo nas pontuações dos testes (e como esses efeitos do tempo variam com o interesse da linha de base), você faria Os seguintes:
Em seguida, faça o seguinte (com interesse centrado na média):
Se você deseja testes omnibus, faça o seguinte:
Outros casos: omitirei estes por questões de brevidade, mas são extensões simples do que já descrevi.
Observe que os testes omnibus (univariados) de tempo em que o tempo tem mais de 2 níveis assumem esfericidade. Essa suposição se torna bastante insustentável à medida que você aumenta o número de níveis. Se você tiver alguns pontos de medição em seu design (por exemplo, 4+), recomendo que você use algo como modelagem multinível e mude para um pacote especializado para essa técnica (como nlme ou lme4 .
Espero que isto ajude!
fonte