LongituRF
软件包中的方法。该软件包背后的方法在此处详细说明:
Capitaine, L.等人。高维纵向数据的随机森林。Stat Methods Med Res(2020)doi:10.1177 / 0962280220946080。
方便地,作者提供了一些用于测试的有用数据生成函数。因此,我们有: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 [矩阵]:包含随机效应预测变量的q个的Nxq矩阵。" 在使用实际数据时,如何指定这个矩阵呢?
我理解传统上Z只是组变量的单热(二进制)编码(例如如此描述),因此DataLongGenerator()
中的Z应该是nxG(471x6)的稀疏矩阵,对吗?
希望能够明确如何使用实际数据来指定Z
参数。
编辑
我的具体示例如下,我有一个响应变量(Y
)。样本(用id
标识)随机分配到干预(I
,干预或不干预)。高维度的特征集合 (X
)。特征和响应在两个时间点(Time
,基线和终点)进行了测量。我想用X
和I
来预测Y
,并且还想提取哪些特征对预测Y
最重要(就像Capitaine等人在他们的论文中对HIV所做的那样)。
我将按以下方式调用REEMforest()
REEMforest(X=cbind(X,I), Y=Y, time=Time, id=id)
我应该使用什么来代替Z
?
REEMforest()
出现错误的经验一致,但不适用于其他函数。请参见此处答案1的评论 https://stats.stackexchange.com/questions/103730/how-can-i-include-random-effects-or-repeated-measures-into-a-randomforest/495055?noredirect=1#comment960438_495055 - JustGettinStarted