【发布时间】:2021-05-17 03:57:15
【问题描述】:
我有一些高维重复测量数据,我有兴趣拟合随机森林模型来研究这些模型的适用性和预测效用。具体来说,我正在尝试实现LongituRF 包中的方法。这个包背后的方法在这里详细介绍:
作者方便地提供了一些有用的数据生成函数进行测试。所以我们有
install.packages("LongituRF")
library(LongituRF)
让我们使用DataLongGenerator() 生成一些数据,它以 n=样本大小、p=预测变量的数量和 G=具有时间行为的预测变量的数量作为参数。
my_data <- DataLongGenerator(n=50,p=6,G=6)
my_data 是您期望 Y(响应向量)的列表,
X(固定效应预测矩阵),Z(随机效应预测矩阵),
id(样本标识符向量)和 time(时间测量向量)。简单地拟合随机森林模型
model <- REEMforest(X=my_data$X,Y=my_data$Y,Z=my_data$Z,time=my_data$time,
id=my_data$id,sto="BM",mtry=2)
这里大约需要 50 秒,请耐心等待
到目前为止一切顺利。现在我很清楚这里的所有参数,除了Z。 什么是 Z 什么时候我要根据我的实际数据来拟合这个模型?
看着my_data$Z。
dim(my_data$Z)
[1] 471 2
head(my_data$Z)
[,1] [,2]
[1,] 1 1.1128914
[2,] 1 1.0349287
[3,] 1 0.7308948
[4,] 1 1.0976203
[5,] 1 1.3739856
[6,] 1 0.6840415
每一行看起来像一个截距项(即 1)和取自均匀分布 runif() 的值。
REEMforest() 的文档表明“Z [矩阵]:一个 Nxq 矩阵,包含随机效应的 q 预测器。” 在使用实际数据时如何指定这个矩阵?
我的理解是,传统上 Z 只是组变量的单热(二进制)编码(例如 as described here),所以 DataLongGenerator() 中的 Z 应该是 nxG (471x6) 稀疏矩阵不?
如果能明确说明如何使用实际数据指定 Z 参数,我们将不胜感激。
编辑
我的具体例子如下,我有一个响应变量(Y)。样本(用id标识)被随机分配到干预组(I,干预或不干预)。一组高维特征 (X)。在两个时间点(Time,基线和终点)测量特征和响应。我有兴趣预测Y,使用X 和I。我也有兴趣提取哪些特征对预测 Y 最重要(就像 Capitaine 等人在他们的论文中对 HIV 所做的那样)。
我会拨打REEMforest()如下
REEMforest(X=cbind(X,I), Y=Y, time=Time, id=id)
Z 应该用什么?
【问题讨论】:
标签: r regression random-forest mixed-models longitudinal