【发布时间】:2023-12-24 07:28:01
【问题描述】:
我有一个统计矩阵,称为 T_{i,j}。然后我模拟了 1000 个样本。我想使用 1000 个样本来构建分布,然后计算我观察到的 T_{i,j} 的 p 值。
一个示例 T_{i,j} 矩阵如下所示:
V12 V13 V22 V23 V117 V146
V12 0.009900990 0.008281829 0.01490863 0.01548161 0.01342882 0.01287918
V13 0.008281829 0.031250000 0.04367911 0.04597988 0.03876530 0.03182001
V22 0.014908629 0.043679113 0.50000000 0.36522152 0.45404452 0.09666729
V23 0.015481606 0.045979882 0.36522152 0.50000000 0.47827009 0.10272845
V117 0.013428819 0.038765301 0.45404452 0.47827009 0.50000000 0.09810254
V146 0.012879176 0.031820011 0.09666729 0.10272845 0.09810254 0.09090909
我想做的是轻松获取每个可能条目的 p 值。在上面的矩阵中,有 21 个单独的统计数据,因为对角线以下的所有内容都是上面所有内容的转置。
我意识到我可以使用 for 循环查看所有样本的每个 (i,j) 条目,对它们进行排序,然后找出我观察到的谎言,但我想知道也许有一种更简单的 R 方法来做吗?
我在这里放了一组样本数据(通过 dput 输出的数据): http://temp-share.com/show/3YgF5Ww2x
【问题讨论】:
-
你的统计矩阵中有哪些统计数据?
-
所以每个 i,j 元素都是一个统计数据,它与蛋白质中发生突变的紧密程度有关。它不是来自已知的分布,因为我创建了统计数据(认为它可能会提供信息)。然后,我模拟了许多潜在的蛋白质突变,以获得统计数据的分布。
-
您的统计数据是单变量还是多变量?在第一种情况下,R 可以使用最优内核轻松估计经验密度。这是非参数统计中一个众所周知的问题。顺便说一句,如果成语“kernel”、“empirical density”、“epanechnikov”对您来说似乎很陌生,我建议您在继续之前阅读一些有关密度估计的内容。这是一个基本链接:[en.wikipedia.org/wiki/Kernel_(statistics)]
-
不,我熟悉内核。也许我不清楚。每个 i,j 元素都是一个统计量。它是一个函数距离和突变计数(所以在这种情况下,我认为它是多变量的)。此外,在 null 下,我可以轻松地从分布中进行模拟。要使用内核,我需要对每个统计数据进行多次观察,这里我有很多统计数据,但每个统计数据只有一次观察。
-
我想我明白了。所以你有一个类似矩阵的统计数据,你想通过蒙特卡罗抽样来近似其零分布。好的。但是接受区域呢?在下面的答案中,ndoogan 将矩阵中的每个条目视为可观察的,因此忽略任何相关结构。如果您想要整个观察矩阵的单个 p 值,那么您需要定义在原假设下接受或拒绝给定矩阵的标准。然后就可以直接修改 ndoogan 的代码以获得近似的 p 值。
标签: r matrix simulation