我有一个关于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
数据包含
我的一般研究问题是,如果污染物的数量会影响人口中心脏问题的数量。 在第一步中,这可能是一个简单的线性回归: lm(计数〜民意)
但是,我每天的数据都可以说是聚集在人群中。我有来自第1人的两项措施和来自第2人的两项措施。
所以我的基本想法是设置一个多人模型,其中person(id)作为我的2级变量。
我使用nlme软件包进行此分析:
lme(fixed=count ~ poll, random = ~poll|id, ...)
到目前为止没有问题。
但是,对第2级的真正影响可能不仅仅来自我有不同的人。相反,一个人的影响更可能来自他或她的bmi(以及许多其他与人相关的变量,如年龄,吸烟量等)。
做一个长期的短片:
如何在lme函数中指定此类二级预测变量?
或者换句话说:我如何设置一个模型,其中心脏问题和污染之间的关系是不同的/聚集/缓和一个人的体重指数(正如我所说的可能另外由这个人'吸烟量或年龄)
不幸的是,我不知道如何判断R,我想要什么。我知道oif其他软件(其中一个名为 HLM ),它能够做我想要的,但我很确定R也可以这样......
所以,非常感谢您的帮助!
deschen
答案 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。所以我假设它是准确的。