У меня есть несколько отдельных фрагментов кода для запуска тестов нормальности в R, и я хотел бы иметь возможность комбинировать их, чтобы я мог проверять определенные c переменные, не копируя каждый раз код. Пока все отдельные фрагменты кода работают (на примере набора данных iris):
library(datasets)
library(tidyverse)
library(skimr)
data(iris)
iris$Species <- NULL
# descriptive statistics and normality tests
skim(iris$Sepal.Length)
round(stat.desc(iris$Sepal.Length, basic = FALSE, norm = TRUE), digits = 3)
# histogram with normality curve
hist_sepal_length <- ggplot(iris, aes(Sepal.Length)) +
geom_histogram(aes(y = ..density..), bins = 10, colour = "black", fill = "white") +
labs(x = "Sepal.Length", y = "Density") +
stat_function(fun = dnorm, args = list(mean = mean(iris$Sepal.Length), sd = sd(iris$Sepal.Length)), colour = "black", size = 1)
hist_sepal_length
# qqplot
qqplot_sepal_length <- qplot(sample = iris$Sepal.Length)
qqplot_sepal_length
Я могу сделать первый шаг описательной статистики, используя sapply
round(sapply(iris, stat.desc, basic = FALSE, norm = TRUE), digits = 3)
Однако я не уверен, как использовать какие-либо функции apply с ggplot2. Я рассмотрел следующие вопросы:
Как использовать lapply с ggplot2 при индексировании переменных
с помощью функции apply с ggplot2 для создания гистограмм для более чем одна переменная в data.frame
Использование функций apply с ggplot для построения подмножества столбцов фрейма данных
Использование lapply для создания блочных диаграмм список переменных
Однако ни один из них полностью не покрывает то, что я хочу, так как мой ggplot также включает stat_function, которая ссылается на переменную. Также хотелось бы, чтобы результат был в виде отдельных графиков. Есть ли способ написать код ggplot, чтобы он проходил через все переменные сразу (длина чашелистика, ширина чашелистика, длина лепестка, ширина лепестка)? У меня есть переменные, для которых я хочу запустить тесты нормальности, уже сохраненные в отдельном фрейме данных, поэтому нет необходимости в подмножестве.
Наконец, есть ли способ объединить 3 шага вместе (тесты нормальности, гистограмма и график qq) в одну функцию?