重复测量数据各次访视之间有一定的相关性,不能用一般线性模型分析,这类数据称之为Longitudinal data。类似的,同一个医院/班级不同受试者的数据,该数据同一个水平里不同受试者的数据也具有相关性,这类数据称之为cluster data。
------------------------ 以下参考SAS Help ----------------------------
Proc mixed中有Random和Repeated两种命令,Random用于随机效应,Repeated用于重复测量。可以参考SAS中关于mixed model的说明及效应的估计区分这两个命令的区别。
一般线性模型:y=Xβ+ε,ε为随机误差,假设独立
-
混合效应模型:y=Xβ+Zγ+ε,ε为随机误差,不要求独立及同质。
- β为未知的固定效应向量,X为已知的设计矩阵(即固定效应变量)。
不同受试者间均相同。 - γ为未知的随机效应向量,Z为已知的设计矩阵(即随机效应变量)。
不同受试者间可以不同。
γ服从均值为0,方差为G的Gaussian分布,γ~N(0,G)。
-->对应ramdom语句,g/gcorr输出矩阵 - ε为随机误差。
ε服从均值为0,方差为R的Gaussian分布,ε~N(0,R)
-->对应repeated语句,r/rcorr输出矩阵
- β为未知的固定效应向量,X为已知的设计矩阵(即固定效应变量)。
因变量y的方差可以表示为V=ZGZ’+R,between subject variation由Z和G决定,within subject variation由R决定,固定效应的变异由ε来决定。当R=σ2I且Z=0时(即没有随机效应),mixed model退化为标准线性模型。当未指定repeated语句时,此时R=σ2I且Z=0,即随着时间的变化,不同测量之间的相关性是相同的。
对于随机效应或者重复测量模型,需要指定Z、G的方差协方差矩阵。由Type=决定,对于repeated语句,Subject=中定义的变量中(例如受试者例数)决定了矩阵里block的数量,即每个受试者内的重复测量对应一个block。
R是对角线结构,其中S1指受试者1,T1/2/3为1、2、3个测量时间点,S2为受试者2,以此类推。基于各个受试者互相独立的假设下,对每个受试者各个时间点的测量都有相关矩阵 <complete independence is assumed across subjects when setting in subject=XX>。
R里的每一个block都是相同的。例如用r=1,2...输出各个受试者的相关矩阵,可以看出。只有当指定group=时,会按照不同的group变量计算不同的矩阵。
* Random:
用于定义混合效应。可以用于传统的方差成分模型,并且指定随机系数。随机效应可以是分类或连续变量,也可以定义多个Random 语句。
随机效应可以视为人群之间原始的差异。如中心为随机效应,则γ对于不同的中心有差别。
<Prox mixed uses the random statement to model between subject variation>
random语句在一个proc步中可以使用多次。
在random中想要输出矩阵:
random XX / type=XX subject=XX g gcorr; /* g=1 2 3 ...时可指定输出第1、2...例受试者*/
Ø Subject=:定义受试者,假设不同的受试者间是完全独立的,对于random语句,subject产生了一个区块对角化的G矩阵,即subject定义了所以出现在random中 效应均嵌套在每个subject level中
* Repated:
用于定义重复测量。
<repeated statement to model within subject variation>
<SUBJECT=option defines the blocks of ,and the TYPE= option specifies the structure of these blocks>
repeated只能使用一次。
在repeated中想要输出矩阵:
repeated XX / type=XX subject=XX r rcorr; /* r=1 2 3 ...时可以指定输出第1、2...例受试者*/
Ø Group=:按组别定义不同的协方差变量。<allow user to change the covariance parameters from one group to another>。
在只有repeated语句的MMRM,SAS输出的结果中,对应随机效应的Z矩阵为0。
- 例子:
近期碰到的一个重复测量设计,这个试验设计的是在每个访视点内的不同时间点进行重复测量,假定试验共有6次随访,每次随访中在服药后1、4、7三个时间点分别测量。分析的目的除了固定效应外,还希望检验不同组别与访视的交互作用,不同访视与时间点的交互作用,以及三者之间的交互作用,探索访视以及检测时间点对疗效的影响。
如果采用group=访视 或by 时间点进行分析,by 时间点实质上是按照by中的变量将数据集进行了分层,形成一个个小的子集,在每个子集中进行分析,因此无法分析交互效应。而group=是假定group中指定的变量不同水平之间的异质性,group=访视,即不同访视不同时间点的相关性是不同的,试验设计并没有这种假设,而且加上之后,模型需要估计的参数多了,出现了不收敛的情况。
最后考虑在subject=中加入受试者访视的嵌套效应,即每个受试者的每次访视中各个时间点的测量是独立且不重复的。
Proc mixed data=Tmp;
class group visit subjid timepoint;
model aval=baseline group visit group*visit group*timepoint
visit*timepoint group*visit*timepoint;
repeated timepoint / type=un subject=subjid(visit);
lsmeans group*visit*timepoint / Pdiff CL;
ods output diffs=diff
run;
data diff_; /* 取出不同组别同一个访视同一个时间点的差值 */
set diff;
if visit=_visit and timepoint=_timepoint and Group^=_Group;
run;