R 重复测量的降维:PCA?外交部?(矿工)
我有一个重复测量样本,每个参与者都被要求在5年内完成一项睡眠调查(从基线到随访第4年)。每个调查项目都是相当相关的(例如,你睡觉的时间与你的睡眠时间相关),因此我们有兴趣采用类似PCA的方法,并使用每台电脑上的负荷来创建一个时变的综合得分(例如,基于每个时间点的这些假设“电脑”“负荷”的综合得分)。然后,我们希望在一个混合模型中采用每个参与者的时变综合测度来预测我们感兴趣的纵向结果 我们最初对所有数据(所有参与者和所有时间点)进行PCA,但这里有一些假设。但是,经过进一步思考,我开始质疑PCA是否能够区分参与者或基于时间的变异性。因此,我正在寻找一种方法,对重复测量样本执行类似的降维方法 基于我之前发现的一些堆栈问题,看起来MFA可能是一个不错的选择。但我在网上看到的所有例子都不包括纵向分析 1。MFA似乎是正确的方法吗? 2。如果是,以下代码是否适用于R 重复测量的降维:PCA?外交部?(矿工),r,dimensionality-reduction,longitudinal,factominer,R,Dimensionality Reduction,Longitudinal,Factominer,我有一个重复测量样本,每个参与者都被要求在5年内完成一项睡眠调查(从基线到随访第4年)。每个调查项目都是相当相关的(例如,你睡觉的时间与你的睡眠时间相关),因此我们有兴趣采用类似PCA的方法,并使用每台电脑上的负荷来创建一个时变的综合得分(例如,基于每个时间点的这些假设“电脑”“负荷”的综合得分)。然后,我们希望在一个混合模型中采用每个参与者的时变综合测度来预测我们感兴趣的纵向结果 我们最初对所有数据(所有参与者和所有时间点)进行PCA,但这里有一些假设。但是,经过进一步思考,我开始质疑PCA是
库(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
最后。。。
res_MFA$ind$coord
是否为每个维度提供了“加载”的等价物?使用可以构建综合PCA分数的库是否有帮助?您可以绘制一个肘形图来检查PC捕获的差异有多大,然后继续。@DeathMetal感谢您的评论!我对数据集进行了长形式的主成分分析(将所有参与者和所有时间点都放入主成分分析中),并查看了肘部——不幸的是,没有大的扭结。但是,我主要关心的是,我是否应该担心每个参与者都有多行)。我当然对综合PCA分数感兴趣,但我只是想确保准确解释我这里的伪复制问题的可变性;我们需要一个为复制构建复合PCA的库。有一个R库可以构造复合PCA分数。不确定是否允许复制您面临的部分问题。第二,对于PCs中的扭结,我认为可以使用PCs,直到方差衰减达到饱和。只要捕获到差异,捕获N个PC不会有任何伤害。@DeathMetal good point!:)谢谢你的意见!
# MFA Analysis
res_MFA <- MFA(dat[, -1], group=rep(4, 3), type=rep("s", 3))