r - 如何对二进制数据进行采样以获得行和的正态分布
问题描述
我想用 300 个样本创建 4 个二进制变量(假设我可能想增加 4 到 10 个变量)。但是当我按行求和时,我想得到 sum 列的正态分布。我们可以在 R 中做到这一点吗?这是一个随机样本来演示。
m1 m2 m3 m4 sum
1 1 0 1 3
1 1 0 1 3
1 0 0 0 1
0 1 0 0 1
0 0 1 0 1
0 1 1 0 2
1 0 1 1 3
0 0 1 1 2
0 0 1 0 1
1 0 0 1 2
1 0 0 0 1
1 0 0 0 1
1 0 1 1 3
解决方案
你不仅不能在 R 中做到这一点,我认为这是不可能的。
- 总和的分布将是一个离散变量,可能的结果为 {0,1,2,3,4}。这不可能非常接近连续/实值的正态分布。
- 在最简单的情况下(列独立且均值相等),结果将是二项式的。“二项分布的正态近似是足够的”的一条经验法则是
n*p*(1-p)>5
;在这种情况下,因为n=4
,你能做的最好的(用p=0.5
)是n*p*(1-p)=1
。增加到 10 将使您达到n*p*(1-p)=2.5
(通常n/4
......)的最佳情况,但仍然不是很好。 - 有可能放宽行间独立性和等概率的假设,仍然得到二项式(您可以在CrossValidated上询问),但无论如何我不知道您因相关性而得到的任何二项式偏差并且跨行的变化实际上会使正态近似更好......例如,您可以设置样本以便
{P(0)=P(3)=0; P(2)=P(4)=0.5}
(对于二项式来说这是不可能的 PDF),但这无济于事。
推荐阅读
- flutter - Flutter:如何在没有 mp3 扩展的情况下流式传输由 http url 提供的实时音频
- javascript - 单击重叠区域时如何触发两个元素的单击
- go - 返回消息列表
- flutter - 如何增加图标大小而不会出现溢出错误?
- git - 如何在 GIT 中构建标签树?
- swift - 在 Swift 中将可变参数作为数组传递
- nuxt.js - 当我使用 \nuxt\strapi\ nuxt/apollo 时,它总是告诉Cannot read property 'content' of undefined
- java - 为什么最终参数修饰符没有在具体实现方法签名中继承?
- mysql - 数据获取成功,而显示进程列表为空
- bazel - `bazel fetch` 是否支持排除目标?