我不知道正确的词是什么,所以很抱歉把术语弄错了。基本上我有大约1000个数据点,我想随机对100个数据点进行999次子采样,并对每个子样本执行相同的函数(广义最小二乘模型),看看相关性有多显著。
我还添加了一些上下文,以防有帮助。我的数据是在一个数据框架与各种列,我正在做一个比较,如果有一个高度和二色性之间的关系,以及两者之间的关系是否有所不同,这取决于是否使用分光光度计或人类评分测量二色性。我还在这些模型中包括了物种范围的纬度质心,因此每个模型的PGLS如下所示:
PGLS_VO_Score <- gls(Colour_discriminability_Absolute ~ Altitude_Reported*Centroid.Abs,
correlation = corPagel(1, phy = AvianTreeEdge, form = ~Species),
data = VO_HumanScores_Merged, method = "ML")
PGLS_Human_Score <- gls(Human_Score ~ Altitude_Reported*Centroid.Abs,
correlation = corPagel(1, phy = AvianTreeEdge, form = ~Species),
data = VO_HumanScores_Merged, method = "ML")
VO_Human_Scores_Merged的数据框包括一列物种名称、人类评分、分光光度计评分、海拔、纬度,然后是这些数据的一些转换值(对数转换等),我在开始时确实这样做了,以防我需要转换数据以满足PGLS的假设。
2条答案
按热度按时间wnavrhmk1#
管道采样有助于查看此处可执行的操作:
(My
5
是你的999
,我的10
是你的100
。simplify=FALSE
是必需的,因为否则replicate
将减少到(嵌套)矩阵,而不是我们想要的。我的myfun
是人为的,使用任何你想要的功能。在管道中将其分解为两个(或更多)步骤的(可能是唯一的)优点是,如果您想返回重新访问随机采样,如果您保存随机采样,则会简单得多。比如说,
如果您后来意识到您需要对样本数据做一些其他的事情(另一个指标或其他什么),并且您不想(为了时间、内存或方便)重新运行所有其他的样本聚合,您可以重用
sampdat
。cwtwac6a2#
您可以使用
sample
从数据点中随机抽取样本。然后你可以使用replicate
运行你的函数n次。一个例子,取n=100的随机样本,并计算平均值10次: