Как построить нормальное распределение в R


Чтобы построить нормальное распределение в R, мы можем либо использовать базовый R, либо установить более интересный пакет, такой как ggplot2.

Использование базы R

Вот три примера того, как создать график нормального распределения с помощью Base R.

Пример 1: нормальное распределение со средним значением = 0 и стандартным отклонением = 1.

Чтобы создать график нормального распределения со средним значением = 0 и стандартным отклонением = 1, мы можем использовать следующий код:

#Create a sequence of 100 equally spaced numbers between -4 and 4
x <- seq(-4, 4, length=100)

#create a vector of values that shows the height of the probability distribution
#for each value in x
y <- dnorm(x)

#plot x and y as a scatterplot with connected lines (type = "l") and add
#an x-axis with custom labels
plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "")
axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))

Это генерирует следующий сюжет:

Пример 2: нормальное распределение со средним значением = 0 и стандартным отклонением = 1 (меньше кода)

Мы также могли бы создать график нормального распределения, не определяя x и y , а вместо этого просто используя функцию «curve», используя следующий код:

curve(dnorm, -3.5, 3.5, lwd=2, axes = FALSE, xlab = "", ylab = "")
axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))

Это генерирует точно такой же сюжет:

Пример 3: Нормальное распределение с настроенным средним значением и стандартным отклонением

Чтобы создать график нормального распределения с заданным пользователем средним значением и стандартным отклонением, мы можем использовать следующий код:

#define population mean and standard deviation
population_mean <- 50
population_sd <- 5

#define upper and lower bound
lower_bound <- population_mean - population_sd
upper_bound <- population_mean + population_sd

#Create a sequence of 1000 x values based on population mean and standard deviation
x <- seq(-4, 4, length = 1000) \* population_sd + population_mean

#create a vector of values that shows the height of the probability distribution
#for each value in x
y <- dnorm(x, population_mean, population_sd)

#plot normal distribution with customized x-axis labels
plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "")
sd_axis_bounds = 5
axis_bounds <- seq(-sd_axis_bounds \* population_sd + population_mean,
 sd_axis_bounds \* population_sd + population_mean,
 by = population_sd)
axis(side = 1, at = axis_bounds, pos = 0)

Это генерирует следующий сюжет:

Использование ggplot2

Другой способ создать график нормального распределения в R — использовать пакет ggplot2. Вот два примера того, как создать график нормального распределения с помощью ggplot2.

Пример 1: нормальное распределение со средним значением = 0 и стандартным отклонением = 1.

Чтобы создать график нормального распределения со средним значением = 0 и стандартным отклонением = 1, мы можем использовать следующий код:

#install (if not already installed) and load ggplot2
if(!(require(ggplot2))){install.packages('ggplot2')}

#generate a normal distribution plot
ggplot(data.frame(x = c(-4, 4)), aes(x = x)) +
stat_function(fun = dnorm)

Это генерирует следующий сюжет:

Пример 2. Нормальное распределение с использованием набора данных mtcars.

В следующем коде показано, как создать нормальное распределение для столбца миль на галлон во встроенном наборе данных R mtcars :

ggplot(mtcars, aes(x = mpg)) +
stat_function(
fun = dnorm,
args = with(mtcars, c(mean = mean(mpg), sd = sd(mpg)))
) +
scale_x_continuous("Miles per gallon")

Это генерирует следующий сюжет:

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.