r - A组随机变量大于B组的概率
问题描述
我有两个数据集,其中包含存储在数据框中的人的身高(以及其他详细信息):
dataset1$height
dataset2$height
我需要知道从 dataset1 中随机选择的高度的概率将大于从 dataset2 中随机选择的高度。
我知道我正在尝试在P(X-Y)>0
这里计算,但我不确定如何将其放入 R 中,以及如何获得 P 的答案(即 的概率是多少dataset1$height - dataset2$height > 0
)。
我已经计算了每个数据集中高度的均值、方差和标准差,我只是不确定如何将这些计算拟合到导致概率的公式中。
为了重现性,以下样本可以代表我所拥有的:
dataset1 = rnorm(100, mean = 11, sd = 2)
dataset2 = rnorm(100, mean = 10, sd = 2)
mean1 = mean(dataset1)
mean2 = mean(dataset2)
var1 = var(dataset1)
var2 = var(dataset2)
sdev1 = sd(dataset1)
sdev2 = sd(dataset2)
Probability = mean(dataset2)/mean(dataset1)
Probability
解决方案
从您提出问题的方式来看dataset1
,dataset2
您的 RV 是从哪些人群中得出的。dataset1
在这种情况下,蒙哥马利是正确的,您可以平均和之间的所有成对比较dataset2
:
mean(outer(dataset1, dataset2, ">"))
虽然,对于更大的数据集,更有效的方法是使用连接向量的排序:
d12 <- order(c(dataset1, dataset2))
sum(cumsum(d12 > length(dataset1))[d12 <= length(dataset1)])/length(dataset1)/length(dataset2)
另一方面,如果dataset1
代表dataset2
来自父分布的样本,并且您想知道从 X ~ 分布 1 中随机选择的高度大于从 Y ~ 分布 2 中随机选择的高度的概率,这将取决于您的知识/关于基础分布的假设。例如,如果它们都是具有已知均值和标准偏差的独立正态分布mu1
,mu2
则sigma1
X sigma2
- Y 的分布将是具有均值mu1 - mu2
和标准偏差的正态分布sqrt(sigma1^2 + sigma2^2)
。P(X > Y) 将是:
pnorm(0, mean = mu1 - mu2, sd = sqrt(sigma1^2 + sigma2^2), lower.tail = FALSE)
将更大的向量与您的示例参数一起使用,这两种方法给出了相似的答案:
> set.seed(94)
> mu1 <- 11; mu2 <- 10; sigma1 <- 2; sigma2 <- 2
> dataset1 = rnorm(1e6, mean = mu1, sd = sigma1)
> dataset2 = rnorm(1e6, mean = mu2, sd = sigma2)
> d12 <- order(c(dataset1, dataset2)); sum(cumsum(d12 > length(dataset1))[d12 <= length(dataset1)])/length(dataset1)/length(dataset2)
[1] 0.6384645
> pnorm(0, mean = mu1 - mu2, sd = sqrt(sigma1^2 + sigma2^2), lower.tail = FALSE)
[1] 0.6381632
推荐阅读
- html - 删除内部的border-bottom nth-child
- javascript - Ionic 3 导航控制器后退按钮未显示
- android - Google Places API 错误 - ApiException: 9008: PLACES_API_INVALID_APP
- android - Iframe 中的 Ionic 3 网站专注于导致页面重定向的输入
- java - 什么参数需要传递给 DAO 方法调用
- node.js - 使用节点获取 dynamoDB 中没有一个属性的所有记录
- docker - Jenkinsfile 与 Dockerfile 在特定文件夹中
- ruby-on-rails - (在 localhost:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错):
- css - 按字母顺序排序 CSS 属性是否会给 GZIP 和 brotli 压缩带来任何好处?
- c++ - 为什么可以将左值传递给采用 const ref 右值的构造函数?