(Этот вопрос может подойти для https://stats.stackexchange.com/,, но я думаю, что именно как вы рассчитываете то, что я хочу в R
, это мой вопрос).
Я пытаюсьдобавьте несколько дистрибутивов вместе, а затем посмотрите на полученный дистрибутив.Я проиллюстрирую мою проблему на простом примере с использованием нормально распределенных случайных величин p1
и p2
.
set.seed(21)
N <- 1000
p1 <- rnorm(N, mean = 0, sd = 1)
p2 <- rnorm(N, mean = 10, sd = 1)
, которые мы можем построить:
data.frame(p1, p2) %>%
gather(key="dist", value="value") %>%
ggplot(aes(value, color=dist)) + geom_density()
Я могу добавить эти распределения вместе, используя convolve
.Хорошо, так что все в порядке.Но что я не могу понять, так это как построить график суммирования распределений с соответствующими значениями x.В примерах, которые я видел, похоже, что значения x добавляются вручную способом, который не кажется «точным» из-за отсутствия лучшей работы.См. Пример .
Я могу «сложить» их вместе и построить график:
pdf.c <- convolve(pdf1.y, pdf2.y, type = "open")
plot(pdf.c, type="l")
У меня вопрос, как получить соответствующие значения x нового дистрибутива.Я уверен, что что-то упущено с точки зрения основополагающей статистики.
Приложение для pdf1
и pdf2
:
set.seed(21)
N <- 1000
p1 <- rnorm(N, mean = 0, sd = 1)
p2 <- rnorm(N, mean = 10, sd = 1)
pdf1.x <- density(p1)$x
pdf2.x <- density(p2)$x
pdf1.y <- density(p1)$y / sum(density(p1)$y)
pdf2.y <- density(p2)$y / sum(density(p2)$y)
df1 <- data.frame(pdf.x = pdf1.x, pdf.y = pdf1.y, dist = "1", stringsAsFactors = FALSE)
df2 <- data.frame(pdf.x = pdf2.x, pdf.y = pdf2.y, dist = "2", stringsAsFactors = FALSE)
df <- bind_rows(df1, df2)