【发布时间】:2017-07-27 07:08:06
【问题描述】:
我正在与一位导师一起在实验室进行研究,他开发了一个使用 ANOVA 分析遗传数据的模型。我已经模拟了一个数据集,我想用它来评估我们的模型处理不同级别缺失数据的能力。
我们的数据集由 15 个物种组成,每个物种有 4 个个体,我们通过将列命名为“A”(x4)“B”(x4)...等来表示。每行代表一个基因。
我正在尝试编写一个随机删除 1% 数据的代码,但这样每个物种至少有 2 个具有有效数据的个体,否则我们的模型将退出(因为它是基于 ANOVA )。
我意识到这会使“随机”缺失的数据变得不那么随机,但我们正在尝试不同的方法。重要的是,丢失的数据是随机的。我希望有人可以帮助我设置这个?
【问题讨论】:
-
您可以从每组中随机选择 2 个人,并“保护”他们免受 1% 的随机删除。例如,将它们移动到单独的
data.frame。在不知道您已经尝试过什么的情况下很难给出编码建议。 -
你可以编写一个函数(比如
is.valid)来检查一个数据集是否有效(即每个物种至少有2个具有有效数据的个体),然后使用xhile循环运行另一个随机删除数据,直到数据集有效(is.valid返回TRUE)。它被命名为拒绝抽样,并且在is.valid中指定的有效性是随机的。 -
@AndreyKolyadin 是的,我想过,但每个基因需要随机 2 个人。我希望它尽可能随机化。所以这意味着不是每个基因都必须有缺失数据,不是每个物种都必须在所有基因中一致地缺失数据,并且每个个体在统计上可能至少在一个基因中有一个缺失数据。所以我不能保护两个人,因为那样不会让它变得尽可能随机。
-
@MrSnake 这听起来是个不错的选择。我唯一担心的是,while 循环不能删除一个物种中超过 2 个个体的数据,这会导致函数在达到 1% 的缺失数据之前停止吗?
-
您可以在删除每个数据后检查(使用另一个检查功能?通过存储物种名称?)但我认为它会更长。
标签: r missing-data genetics