Как построить на одном графике два предполагаемых распределения по дискретным данным с использованием R - PullRequest
0 голосов
/ 25 февраля 2020

У меня была проблема, когда я нахожусь в точке, где мне нужно иметь два графика на одном графике.

losses <- c(67,53,87,70,77,76,78,92,73,76)
density(losses)
plot(density(losses), main="Empirical density",
ylab="p",xlab = "Losses")

library(KernSmooth)

uniform_kern <- bkde(losses, kernel = "box", canonical = FALSE, bandwidth = 7, gridsize = 512L, truncate = TRUE)
plot(uniform_kern, main="Kernel smoothed using uniform(Box)",
ylab="p",xlab = "Losses")

normal_kern <- bkde(losses, kernel = "normal", canonical = FALSE, bandwidth = 7, gridsize = 512L, truncate = TRUE)
plot(normal_kern, main = "Kernel smoothed using nnormal(gaussian)",
     ylab = "p", xlab = "Losses")

Два графика :iform_kern, normal_kern.

Я хочу получить что-то похожее на это:

enter image description here

Я пробовал нечто похожее на это:

plot(the first plot)

lines(the second one)

, что дает ошибку:

Error in plot.xy(xy.coords(x, y), type = type, ...) : plot.new has not been called yet

Поэтому я подумал о том, чтобы спросить о существовании гораздо более простого способа делаем это.

Спасибо

1 Ответ

1 голос
/ 25 февраля 2020

uniform_kern <- bkde(losses, kernel = "box", canonical = FALSE, bandwidth = 7, gridsize = 512L, truncate = TRUE)
plot(uniform_kern, main="Kernel smoothed using uniform(Box)",
     ylab="p",xlab = "Losses",type='l')

normal_kern <- bkde(losses, kernel = "normal", canonical = FALSE, bandwidth = 7, gridsize = 512L, truncate = TRUE)
points(normal_kern, main = "Kernel smoothed using nnormal(gaussian)",
     ylab = "p", xlab = "Losses",type='l',col="red")


enter image description here Для чего-то более приятного:

library(ggplot2)
ggplot(data.frame(x = c(0, 1)), aes(x = x)) +
  stat_function(fun = dnorm, args = list(0.2, 0.1),
                colour = "red") +
  stat_function(fun = dnorm, args = list(0.7, 0.05),
                colour = "blue") +
  scale_x_continuous(name = "Probability",
                     breaks = seq(0, 1, 0.2),
                     limits=c(0, 1)) +
  scale_y_continuous(name = "Frequency") 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...