我有一个重复测量样本,要求每个参与者在 5 年内完成一项睡眠调查(基线至随访的第 4 年)。每个调查项目都相当相关(例如,当您上床睡觉时与您的睡眠时间相关),因此我们有兴趣采用类似 PCA 的方法并使用每台 PC 上的负载来创建随时间变化的综合得分(例如,综合根据每个时间点的这些假设的“PC”“加载”得分)。然后,我们希望在混合模型中采用每个参与者的时变复合测量来预测我们感兴趣的纵向结果。
我们最初对所有数据(所有参与者和所有时间点)执行 PCA,但这里有一些假设。但是,经过进一步思考,我开始质疑 PCA 是否能够区分基于参与者或基于时间的可变性。因此,我正在寻找一种方法来对重复测量样本执行类似的降维方法。
根据我发现的一些以前的堆栈问题,看起来 MFA 可能是一个不错的选择。但是我在网上看到的所有例子都不包括纵向分析。
1. MFA 看起来是正确的方法吗?
2. 如果是这样,下面的代码是否正确library(FactoMineR)
下面是一个示例数据集,说明了我认为我会运行的结构和代码:
library(FactoMineR)
set.seed(123)
ex_dat <- data.frame(ID = rep(1:4, each=4),
visit = rep(c("baseline", "y1", "y2", "y3"), 4),
var1 = rnorm(16),
var2 = rnorm(16)^2,
var3 = log(rnorm(16, mean=3, sd=1)))
dat <- ex_dat %>% pivot_wider(id_cols = ID,
names_from = visit,
values_from = c("var1", "var2", "var3")) %>% data.frame()
> dat
ID var1_baseline var1_y1 var1_y2 var1_y3 var2_baseline var2_y1 var2_y2 var2_y3 var3_baseline var3_y1 var3_y2 var3_y3
1 1 -0.5604756 -0.2301775 1.5587083 0.07050839 0.2478551 3.86758304 0.4919001 0.22353172 1.3597259 1.3553540 1.3406642 1.3052579
2 2 0.1292877 1.7150650 0.4609162 -1.26506123 1.1402475 0.04751306 1.0526851 0.53128242 1.2680506 1.0777591 0.9910409 0.9629945
3 3 -0.6868529 -0.4456620 1.2240818 0.35981383 0.3906741 2.84493432 0.7018871 0.02352331 0.8352078 1.0267878 0.5507789 1.6426707
4 4 0.4007715 0.1106827 -0.5558411 1.78691314 1.2953557 1.57205186 0.1818717 0.08706718 1.4369784 0.6296169 0.9544013 0.9295404
因此,对于每个参与者,我对变量 1 到 3 进行了多次测量。
根据 MFA 手册,我的预感是运行这样的代码来执行 MFA。我猜,这假设所有var1
, var2
,var3
变量都在它们自己的“组”中。
# MFA Analysis
res_MFA <- MFA(dat[, -1], group=rep(4, 3), type=rep("s", 3))
最后......是否res_MFA$ind$coord
给了我相当于每个维度的“加载”?