R中重复测量的线性回归


12

我无法弄清楚如何在R in中执行线性回归以进行重复测量设计。在上一个问题(仍未回答)中,建议我不要使用lm而是使用混合模型。我lm以以下方式使用:

lm.velocity_vs_Velocity_response <- lm(Velocity_response~Velocity*Subject, data=mydata)

(有关数据集的更多详细信息,请参见上面的链接)

但是,我无法在Internet上找到任何带有R代码的示例,该示例显示了如何执行线性回归分析。

我想要的是,一方面是数据的图,一条线与数据相吻合,另一方面,值与p值一起用于模型的显着性检验。R2

有没有人可以提供一些建议?任何R代码示例都可能有很大帮助。


编辑
根据我到目前为止收到的建议,分析我的数据以了解两个变量Velocity_response(源自调查表)和Velocity(源自绩效)之间是否存在线性关系的解决方案应为:

library(nlme)
summary(lme(Velocity_response ~ Velocity*Subject, data=scrd, random= ~1|Subject))

摘要的结果如下:

    > 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
> 

现在,我不明白在哪里可以得到R ^ 2和相应的p值,表明两个变量之间是否存在线性关系,也无法理解如何用拟合回归。

任何人都可以这样启发我吗?我真的需要你们的帮助


Zuur等人的“带R的混合效应模型和生态学扩展”。很好地介绍了线性混合效应模型,该模型较少关注理论,而更多地关注该方法的应用。
罗兰

尊敬的罗兰德,我相信那本书很有用,但我宁愿在网上寻找一些东西……您有什么建议的网页吗?
L_T 2012年

1
正如我在您以前的文章中所说的那样,lm()有一个与之相关的图。因此,如果您的模型是M1,则可以使用plot(M1)。
彼得·弗洛姆

亲爱的@PeterFlom是的,但是您还告诉我,避免使用lm进行重复测量设计。因此,我的问题是是否必须使用lm来分析我的数据或其他函数。有什么建议吗?
L_T 2012年

1
就像我说的,研究多层次模型。在R中,您可以查看nlme包装。另外,在此站点上搜索主题,这里有很多有关该主题的文章。
彼得·弗洛姆

Answers:


17

您要做的实际上取决于分析的目标。我不确定您的分析目标是什么,但是我将列举几个示例,希望其中一个适用于您的情况。

情况1:一个定量变量两次测量

假设您进行了一项人类主题研究,您让参与者进行了两次统计测试,并且您想确定第二次测量的平均分数是否与第一次测量不同(以确定是否发生学习)。如果分数test1和test2存储在数据帧d中,则可以完全使用lm()函数来完成此操作,如下所示:

mod <- lm(test2 - test1 ~ 1, data = d)
summary(mod)

截距的测试是test1和test2之间差异的测试。请注意,对于test1和test2之间的差异,您将没有delta-R ^ 2;相反,您对效果大小的度量应类似于cohen d。

情况2a:一个量化变量被两次测量,一个二分变量,被测者之间完全被测量

假设我们有相同的研究设计,但我们想知道男性和女性的学习率是否不同。因此,我们有一个量化变量(测试性能),该变量被测量两次,一个二分变量,被测量一次。假设test1,test2和gender都包含在数据帧d中,我们还可以仅使用lm()测试此模型,如下所示:

mod <- lm(test2 - test1 ~ gender, data = d)
summary(mod)
lm.sumSquares(mod) # lm.sumSquares() is located in the lmSupport package, and gives the change in R^2 due to the between-subjects part of the model

假设性别居中(例如,编码为男性= -.5,女性= +.5),则此模型中的截距是检验男性和女性之间平均值的检验1和检验2之间的差异。性别系数是时间与性别之间的相互作用。要获得跨时间平均的性别影响,您必须执行以下操作:

mod <- lm(rowMeans(cbind(test2, test1)) ~ gender, data = d)
summary(mod)

情况2b:一个定量变量测量两次,一个定量变量,仅测量一次

再次假设我们有一个量化变量被测量两次,一个量化变量被测量一次。因此,举例来说,假设我们对统计数据的基线兴趣进行了衡量,并且我们想确定基线兴趣水平较高的人从时间1到时间2是否学到更多。我们首先必须集中兴趣,例如:

d$interestc <- d$interest - mean(d$interest)

假设test1,test2和interestc都在数据帧d中,则可以与案例1a非常相似地测试此问题:

mod <- lm(test2 - test1 ~ interestc, data = d)
summary(mod)
lm.sumSquares(mod)

再次,此模型中的截距测试了从兴趣1到时间2的平均得分是否变化。但是,这种解释仅在兴趣居中时有效。利息系数是时间的影响是否取决于基准利息。通过将上述的test1和test 2进行平均,并测试此复合变量上的目标效果,可以得到在时间上平均的目标效果。

情况2c:一个定量变量测量了两次,一个分类变量,仅测量了一次

假设您的主题间变量是一个类别,仅测量一次。因此,例如,假设您对不同种族(白人,亚裔,黑人与西班牙裔)的人在时间1到时间2是否有不同的学习量感兴趣。假定test1,test2和种族在数据框d中,您首先需要对比代码竞争。可以使用计划的正交对比,伪代码或效果代码来完成此操作,具体取决于要测试的特定假设/问题(如果您要查找帮助函数,则建议查看lm.setContrasts())。 。假设race变量已经进行了对比编码,则可以使用lm()与上述两种情况非常类似,如下所示:

mod <- lm(test2 - test1 ~ race, data = d)
summary(mod)
lm.sumSquares(mod)

假设种族对比处于中心位置,则该模型中的截距再次是时间的“主要影响”。种族对比的系数是这些对比与时间之间的相互作用。要获得种族的综合效果,请使用以下代码:

Anova(mod, type = 3)

情况3:一个量化变量进行了3次测量(即,三级受试者内部操纵)

假设您从第一种情况向设计添加了第三点测量。因此,您的参与者参加了一次统计测试,而不是两次。在这里,您有两种选择,具体取决于您是否希望对时间点之间的差异进行综合测试(有时不需要)。

例如,假设您的主要假设是测试得分从时间1到时间3线性增加。假设test1,test2和test3在数据帧d中,则可以通过首先创建以下组合来测试该假设:

d$lin <- d[, paste("test", sep = "", 1:3)] %*% c(-1, 0, 1)

然后,您将测试使用lin作为因变量的仅拦截模型是否具有不同于0的拦截,如下所示:

mod <- lm(lin ~ 1, data = d)
summary(mod)

这将为您测试统计数据分数是否随着时间增加。当然,您可以根据自己的特定假设创建其他类型的自定义差异评分。

如果您关心重要的综合测试,则需要使用汽车包装中的Anova()函数。具体实现有些复杂。基本上,您可以使用lm()指定哪些变量在主题内,哪些在主题间。然后,您可以创建模型的对象内部分(即,指定首先测量test1,test2和test3中的哪个,第二个和第三个),然后通过创建一个称为idata的数据框将该模型传递给Anova()。使用我的假设示例:

mod <- lm(cbind(test1, test2, test3) ~ 1, data = d) # No between-subjects portion of the model
idata <- data.frame(time = c("time1", "time2", "time3")) # Specify the within-subjects portion of the model
mod.A <- Anova(mod, idata = idata, idesign = ~time, type = 3) # Gives multivariate tests.  For univariate tests, add multivariate = FALSE
summary(mod.A)

idesign语句告诉Anova在模型中包括时间变量(由test1,test2和test3组成)。此代码将为您提供时间对考试成绩的综合测试。

案例4:一个量化变量进行了3次测量,一个对象间量化变量

此案例是案例3的简单扩展。如上所述,如果您只关心1个自由度测试,则可以使用对象内部变量轻松创建自定义差异评分。因此,假设test1,test2,test3和兴趣都在数据帧d中,并且假设我们对时间对测试分数的线性影响(以及时间的影响随基线兴趣的变化)感兴趣,则可以下列:

d$lin <- d[, paste("test", sep = "", 1:3)] %*% c(-1, 0, 1)

然后,执行以下操作(以均值为中心的兴趣):

mod <- lm(lin ~ interestc, data = d)
summary(mod)
lm.sumSquares(mod)

如果要进行综合测试,请执行以下操作:

mod <- lm(cbind(test1, test2, test3) ~ interest, data = d) # We now have a between-subjects portion of the model
idata <- data.frame(time = c("time1", "time2", "time3"))
mod.A <- Anova(mod, idata = idata, idesign = ~time * interest, type = 3) # The idesign statement assumes that we're interested in the interaction between time and interest
summary(mod.A)

其他情况: 为简洁起见,我将省略它们,但是它们只是我已经描述的简单扩展。

请注意,当时间超过2个级别时,(单变量)时间综合测试均假设为球形。随着级别的增加,这种假设变得难以为继。如果您的设计中有很多测量点(例如4个以上),我强烈建议您使用诸如多级建模之类的方法,并转到专用于此技术的软件包(例如nlmelme4)

希望这可以帮助!


亲爱的帕特里克@ user1188407,非常感谢您提供这样的答案。不幸的是,我的情况可能符合您在最后一句话中写的内容...因此,我需要一个R代​​码示例来了解如何处理我的数据。确实,如果您看一下先前stackoverflow.com/questions/12182373/…中描述的实验设计,您会发现我测量了4倍的变量(即在4种条件下测得的速度)
L_T

我想找到一个变量(velocity_response)是否存在线性关系,该变量表示四种情况下的感知速度。因此,每个参与者都经历了4个条件,然后评估了对这些条件的感知。我想知道表演是否与感觉有关……
L_T 2012年

好吧,如果您想使用多级建模解决方案,则可以利用许多不同的在线资源。首先,您应该看一下nlme软件包这个小插图。小插图有点过时(2002),当我学习多层次建模时,我发现它很有用。最后,您可以查看nlme软件包制造商出版的
Patrick S. Forscher,2012年

亲爱的帕特里克@ user1188407谢谢。我研究了多级模型,然后得出了这个公式来分析我的数据:lme(Velocity_response〜Velocity * Subject,data = scrd,random =〜1 | Subject)您能否确认我这个公式对分析是正确的?想要执行我的数据?但是,我既不知道如何获得R ^ 2和p值,也不清楚如何绘制带有点和拟合回归线的图形。请你帮助我好吗?我不是静态人……
L_T 2012年

根据我对您的研究的理解(并假设您已将数据格式化为个人期间格式),该公式对我来说似乎是正确的。通过将分析结果保存到一个对象中(如我在示例中所做的那样)并获得该对象的摘要,可以得到p值。但是,由于多级模型和传统回归之间存在差异(例如,效果大小度量-多级模型中没有标准度量),因此我强烈建议您在使用该技术之前先详细了解一下。似乎其他用户推荐了几个不错的选择。
Patrick S. Forscher,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.