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% не заметили изменений.