【发布时间】:2021-11-04 04:48:34
【问题描述】:
我想通过组合两个数据框来创建联合概率分布。每个数据框都包含从同一人群中提取的数据,但数据不匹配。为了提供可行的代码,假设数据如下:
v1 <- data.frame(rnorm(100, 0, 3))
v2 <- data.frame(rnorm(30, 10, 20))
实际上,我有不遵循预设概率分布的调查数据和模拟数据。我正在寻找一种可以结合两个不同长度的向量来创建联合概率分布的解决方案。
数据集 v1 表示安装太阳能电池板可以获得的财务回报分布。
数据集 v2 代表有兴趣安装太阳能的家庭的财务回报门槛。只有居住在符合他们设定的财务回报门槛的家庭中,家庭才会安装太阳能。
鉴于这两个数据集,我想使用联合概率分布来估计将采用和安装太阳能电池板的家庭的可能比例。
我考虑过进行蒙特卡罗练习,我将从 v1 中随机抽取并将其与 v2 中的抽取相匹配。我会重复这个过程 1000 次,看看有多少房屋的回报率超过了他们的门槛。
library(tidyverse)
set.seed(1234)
monte = NULL
for (i in 1:1000)
{dat = data.frame()
draw1 <- sample_n(v1, 1)
draw2 <- sample_n(v2, 1)
dat = data.frame(draw1,draw2)
monte = rbind(monte, dat)
}
colnames(monte) <- c("return","threshold")
adoption <- monte %>%
mutate(total = n()) %>%
filter(return > threshold) %>%
summarize(count = n(),
total=mean(total)) %>%
mutate(adoption = count/total)
这可行,但我想知道是否有另一种方法可以使用 R 将这些向量组合成联合概率分布。我希望能够生成汇总统计数据(例如,将实现净回报的家庭比例大于他们所需的阈值),并在二维空间中可视化联合分布。
【问题讨论】:
-
我不确定我是否遵循。你有两个不匹配的边际分布,你想找到联合分布?除非你先验地知道它们的联合分布,或者你有一个包含匹配数据的数据集,否则你不能这样做,在这种情况下,你有一个经验联合分布。
标签: r probability-distribution