如何在多级回归中添加level2预测变量(包nlme)

时间:2014-08-06 09:45:36

标签: r multi-level nlme

我有一个关于R中多级回归模型的问题,特别是如何为我的2级"测量"添加预测变量。

请考虑以下示例(这不是真正的数据集,因此实际值可能没有多大意义):

date        id    count    bmi    poll
2012-08-05  1     3        20.5   1500
2012-08-06  1     2        20.5   1400
2012-08-05  2     0        23     1500
2012-08-06  2     3        23     1400

数据包含

  • 不同的人(" id" ......所以它是两个人)
  • 每个人的体重指数(" bmi",所以它不会在id内变化)
  • 每个人在特定日期的心脏病问题数量("计数)。因此,人1在8月5日有三个问题,而第2个人当天没有任何困难/问题
  • 在当天测量的污染物(如臭氧或二氧化硫)的数量

我的一般研究问题是,如果污染物的数量会影响人口中心脏问题的数量。 在第一步中,这可能是一个简单的线性回归:     lm(计数〜民意)

但是,我每天的数据都可以说是聚集在人群中。我有来自第1人的两项措施和来自第2人的两项措施。

所以我的基本想法是设置一个多人模型,其中person(id)作为我的2级变量。

我使用nlme软件包进行此分析:

lme(fixed=count ~ poll, random = ~poll|id, ...)

到目前为止没有问题。

但是,对第2级的真正影响可能不仅仅来自我有不同的人。相反,一个人的影响更可能来自他或她的bmi(以及许多其他与人相关的变量,如年龄,吸烟量等)。

做一个长期的短片:

如何在lme函数中指定此类二级预测变量?

或者换句话说:我如何设置一个模型,其中心脏问题和污染之间的关系是不同的/聚集/缓和一个人的体重指数(正如我所说的可能另外由这个人'吸烟量或年龄)

不幸的是,我不知道如何判断R,我想要什么。我知道oif其他软件(其中一个名为 HLM ),它能够做我想要的,但我很确定R也可以这样......

所以,非常感谢您的帮助!

deschen

1 个答案:

答案 0 :(得分:1)

简短回答:只要您正确指定随机效果,您就不必这样做。 lme函数自动检测哪些变量是1级或2级。使用Oxboys考虑此示例,其中每个主题被测量9次。暂时,让我在lmer包中使用lme4

library(nlme)
library(dplyr)
library(lme4)
library(lmerTest)

Oxboys %>%                                                #1
  filter(as.numeric(Subject)<25) %>%                      #2
  mutate(Group=rep(LETTERS[1:3], each=72)) %>%            #3
  lmer(height ~ Occasion*Group + (1|Subject), data=.) %>% #4     
  anova()                                                 #5  

在这里,我选择24个科目(#2)并将它们分成3组(#3)以使这些数据平衡。现在,这项研究的设计是一个分裂图设计,具有q = 9水平的重复测量因子(Occasion)和p = 3水平的主体间因子(组)。每组有n = 8个科目。场合是1级变量,而Group是2级。

在#4中,我没有指定哪个变量是1级或2级,但lmer为您提供了正确的输出。我怎么知道它是正确的?让我们检查固定效果的多级模型的自由度。如果您的数据是平衡的,lmerTest中使用的Kenward-Roger近似将为您提供精确的dfs和F / t比率according to this article。也就是说,在该示例中,用于组,场合及其交互的测试的dfs应分别为p-1 = 2,q-1 = 8和(p-1)*(q-1)= 16。主题错误项的df是(n-1)p = 21,主题:偶然错误项的df是p(n-1)(q-1)= 168。事实上,这些是&#34;确切的&#34;我们从anova输出(#5)得到的值。

我不知道lme用于近似dfs的算法,但lme确实为您提供了相同的dfs。所以我假设它是准确的。