data(iris)
library(DataExplorer)
## Warning: пакет 'DataExplorer' был собран под R версии 4.5.3
x <- iris$Sepal.Length
summary(x)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.300 5.100 5.800 5.843 6.400 7.900
анализ основных характеристик распределения Длина чашелистика ириса варьируется от 4,3 см до 7,9 см. Среднее значение составляет 5,84 см, медиана — 5,80 см
hist(x, col="steelblue", xlab = "Длина чашелистика", main="Гистограмма", ylab = "Частота (количество цветков)")
Распределение длины чашелистика (Sepal.Length) не является нормальным. Средняя длина составляет ≈5.8 см, данные варьируются от 4.3 до 7.9 см.
library(ggplot2)
## Warning: пакет 'ggplot2' был собран под R версии 4.5.2
ggplot(data.frame(x = x), aes(x = x)) +
geom_histogram(aes(y = after_stat(density)),
bins = 20,
fill = "steelblue",
color = "white",
alpha = 0.7) +
geom_density(color = "orange",
linewidth = 1.2,
fill = "orange",
alpha = 0.2) +
stat_function(fun = dnorm,
args = list(mean = mean(x), sd = sd(x)),
color = "red",
linewidth = 1,
linetype = "dashed") +
labs(title = "Распределение длины чашелистика (Sepal.Length)",
subtitle = paste("Среднее =", round(mean(x), 2),
", SD =", round(sd(x), 2)),
x = "Длина чашелистика (см)",
y = "Частота") +
theme_minimal() +
# Лэйблы разнесены в разные углы
annotate("text", x = 7.2, y = 0.55,
label = "нормальное распределение",
size = 3.5, color = "red", hjust = 0) +
annotate("text", x = 4.5, y = 0.55,
label = "эмпирические данные",
size = 3.5, color = "darkorange", hjust = 0)
На графике представлено распределение длины чашелистика ириса
(Sepal.Length). Среднее значение составляет 5,84 см, стандартное
отклонение — 0,83 см. Синим цветом показана гистограмма эмпирического
распределения, оранжевой линией — оценка плотности, красной пунктирной
линией — теоретическое нормальное распределение. Визуально видно, что
эмпирическое распределение имеет два пика и отличается от нормального,
что подтверждается результатами статистических тестов (Shapiro-Wilk
p-value = 0,010).
qqnorm(x, frame = FALSE)
qqline(x, col = "steelblue", lwd = 2)
На Q-Q графике точки отклоняются от теоретической прямой, особенно в верхней и нижней частях распределения.
boxplot(x, col="steelblue")
library(nortest)
## Warning: пакет 'nortest' был собран под R версии 4.5.2
# Данные
x <- iris$Sepal.Length
# Выполнение тестов
shapiro_test <- shapiro.test(x)
ks_test <- ks.test(x, "pnorm", mean = mean(x), sd = sd(x))
## Warning in ks.test.default(x, "pnorm", mean = mean(x), sd = sd(x)): в тесте
## согласия Колмогорова не должно быть повторяющихся значений
ad_test <- ad.test(x)
# Теперь создание таблицы
norm_table <- data.frame(
Тест = c("Shapiro-Wilk", "Kolmogorov-Smirnov", "Anderson-Darling"),
Статистика = c(shapiro_test$statistic, ks_test$statistic, ad_test$statistic),
p_value = c(shapiro_test$p.value, ks_test$p.value, ad_test$p.value),
Нормальность = ifelse(c(shapiro_test$p.value, ks_test$p.value, ad_test$p.value) > 0.05,
"Да", "Нет")
)
print(norm_table)
## Тест Статистика p_value Нормальность
## W Shapiro-Wilk 0.97609027 0.01018116 Нет
## D Kolmogorov-Smirnov 0.08865361 0.18908864 Да
## A Anderson-Darling 0.88919949 0.02251051 Нет
Проверка нормальности распределения переменной Sepal.Length с помощью трёх статистических критериев показала противоречивые результаты. Критерии Шапиро-Уилка (p = 0.010) и Андерсона-Дарлинга (p = 0.023) отвергают гипотезу о нормальном распределении, в то время как критерий Колмогорова-Смирнова (p = 0.189) не отвергает. Учитывая, что критерий Шапиро-Уилка обладает наибольшей мощностью, а также визуальный анализ гистограммы (наличие двух пиков, связанных с разными видами ирисов), следует заключить, что распределение Sepal.Length не соответствует нормальному.
library(DescTools)
## Warning: пакет 'DescTools' был собран под R версии 4.5.2
Desc(x, plotit = TRUE)
## ──────────────────────────────────────────────────────────────────────────────
## x (numeric)
##
## length n NAs unique 0s mean meanCI'
## 150 150 0 35 0 5.843 5.710
## 100.0% 0.0% 0.0% 5.977
##
## .05 .10 .25 median .75 .90 .95
## 4.600 4.800 5.100 5.800 6.400 6.900 7.255
##
## range sd vcoef mad IQR skew kurt
## 3.600 0.828 0.142 1.038 1.300 0.309 -0.606
##
## lowest : 4.3, 4.4 (3), 4.5, 4.6 (4), 4.7 (2)
## highest: 7.3, 7.4, 7.6, 7.7 (4), 7.9
##
## ' 95%-CI (classic)
эксцесс отрицательный (-0,61), что свидетельствует о более плоском
распределении по сравнению с нормальным. Значение асимметрии составляет
0,31, что указывает на наличие правосторонней (положительной)
асимметрии. Это означает, что правый хвост распределения длиннее левого,
то есть наблюдается небольшое смещение значений в сторону больших
величин.
library(DataExplorer)
library(haven)
## Warning: пакет 'haven' был собран под R версии 4.5.2
data <- read_sav(file.choose())
sjmisc::flat_table(data, V12, margin = "cell")
## V12 Выше Ниже Не изменилась Другое Затрудняюсь ответить
##
## 21.13 48.61 21.02 2.11 7.12
temperature<- as.data.frame(sjmisc::flat_table(data, V12, margin = "cell", digits = 1))
library(ggplot2)
library(scales)#нужна для того, чтобы отформатировать подпись
## Warning: пакет 'scales' был собран под R версии 4.5.1
ggplot(data=temperature, aes(x=V12, y=Freq)) +
geom_bar(stat="identity", fill="steelblue", width = 0.6)+
geom_text(aes(label=number(Freq,accuracy=0.1, decimal.mark = ",")), family = "Arial", vjust=0.5, hjust=-0.5, color="steelblue", size=4)+
coord_flip()+
theme_void()+
expand_limits(y=c(0,50))+
theme(axis.text.y = element_text(size = 10, family = "Arial"))+
scale_x_discrete(limits=rev)
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): семейство
## шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
Большинство респондентов (48,6%) считают, что среднегодовая температура
стала ниже. Доля тех, кто отметил повышение температуры или её
неизменность, практически одинакова (21,1% и 21,0% соответственно).
Таким образом, в восприятии респондентов преобладает мнение о
похолодании климата, а не о потеплении.
sjmisc::flat_table(data, V13, margin = "cell")
## V13 Стала холоднее Стала теплее Не изменилась
##
## 64.61 16.74 18.65
temperaturewinter<- as.data.frame(sjmisc::flat_table(data, V13, margin = "cell", digits = 1))
library(ggplot2)
library(scales)#нужна для того, чтобы отформатировать подпись
ggplot(data=temperaturewinter, aes(x=V13, y=Freq)) +
geom_bar(stat="identity", fill="steelblue", width = 0.6)+
geom_text(aes(label=number(Freq,accuracy=0.1, decimal.mark = ",")), family = "Arial", vjust=0.5, hjust=-0.5, color="steelblue", size=4)+
coord_flip()+
theme_void()+
expand_limits(y=c(0,50))+
theme(axis.text.y = element_text(size = 10, family = "Arial"))+
scale_x_discrete(limits=rev)
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
Большинство респондентов (64,6%) считают, что зимняя температура стала холоднее. Только 16,7% отметили потепление, а 18,7% не заметили изменений.
sjmisc::flat_table(data, V15, margin = "cell")
## V15 Стала холоднее Стала теплее Не изменилась
##
## 65.62 17.13 17.25
temperaturesummer<- as.data.frame(sjmisc::flat_table(data, V15, margin = "cell", digits = 1))
library(ggplot2)
library(scales)#нужна для того, чтобы отформатировать подпись
ggplot(data=temperaturesummer, aes(x=V15, y=Freq)) +
geom_bar(stat="identity", fill="steelblue", width = 0.6)+
geom_text(aes(label=number(Freq,accuracy=0.1, decimal.mark = ",")), family = "Arial", vjust=0.5, hjust=-0.5, color="steelblue", size=4)+
coord_flip()+
theme_void()+
expand_limits(y=c(0,50))+
theme(axis.text.y = element_text(size = 10, family = "Arial"))+
scale_x_discrete(limits=rev)
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## семейство шрифтов не найдено в базе данных шрифтов Windows
Большинство респондентов (65,6%) считают, что летняя температура стала холоднее. Лишь 17,1% отметили потепление, и 17,2% не заметили изменений.