首页 > 解决方案 > 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

标签: rprobability

解决方案


从您提出问题的方式来看dataset1dataset2您的 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 中随机选择的高度的概率,这将取决于您的知识/关于基础分布的假设。例如,如果它们都是具有已知均值和标准偏差的独立正态分布mu1mu2sigma1X 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

推荐阅读