Задания 1-3

Подготовка данных

library("factoextra")
## Загрузка требуемого пакета: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library("FactoMineR")
library(haven)
df<-read_sav("C:/Users/Admin/Documents/religions.sav")

Подготовка данных для PCA Выбираем только числовые переменные (PCA работает только с количественными данными)

numeric_vars <- df[, sapply(df, is.numeric)]

Выполнение PCA

res.pca <- PCA(numeric_vars, graph = FALSE)
## Warning in PCA(numeric_vars, graph = FALSE): Missing values are imputed by the
## mean of the variable: you should use the imputePCA function of the missMDA
## package

Результаты по собственным значениям и дисперсии Таблица собственных значений

eig.val <- get_eigenvalue(res.pca)
eig.val
##         eigenvalue variance.percent cumulative.variance.percent
## Dim.1 2.665641e+01     9.520147e+01                    95.20147
## Dim.2 6.583989e-01     2.351425e+00                    97.55290
## Dim.3 3.853713e-01     1.376326e+00                    98.92922
## Dim.4 2.998172e-01     1.070776e+00                   100.00000
## Dim.5 8.262803e-29     2.951001e-28                   100.00000

График собственных значений

fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 50))

Результаты по переменным (дескрипторам)

var <- get_pca_var(res.pca)

Представим результаты: Координаты

head(var$coord)
##        Dim.1      Dim.2       Dim.3         Dim.4         Dim.5
## d1 0.9959931 0.08667675  0.02201425  0.0005284871  2.842586e-15
## d2 0.9856867 0.15604215  0.05619045 -0.0302516782 -3.824405e-15
## d3 0.9932608 0.10879264 -0.02997603 -0.0264323415 -7.493470e-16
## d4 0.9862426 0.13633891 -0.01250799 -0.0926322853  5.205856e-16
## d5 0.9937955 0.06158202  0.00799803 -0.0922719871  6.275713e-16
## d6 0.9840930 0.10641774 -0.06384742 -0.1271205906 -2.020674e-15

Cos2: качество анализа

head(var$cos2)
##        Dim.1       Dim.2        Dim.3        Dim.4        Dim.5
## d1 0.9920022 0.007512859 4.846272e-04 2.792986e-07 8.080296e-30
## d2 0.9715783 0.024349153 3.157367e-03 9.151640e-04 1.462607e-29
## d3 0.9865669 0.011835838 8.985623e-04 6.986687e-04 5.615209e-31
## d4 0.9726745 0.018588299 1.564499e-04 8.580740e-03 2.710094e-31
## d5 0.9876296 0.003792345 6.396848e-05 8.514120e-03 3.938457e-31
## d6 0.9684391 0.011324735 4.076494e-03 1.615964e-02 4.083122e-30

Вклады в компоненты

head(var$contrib)
##       Dim.1    Dim.2      Dim.3        Dim.4      Dim.5
## d1 3.721439 1.141080 0.12575590 9.315629e-05  9.7791213
## d2 3.644820 3.698237 0.81930512 3.052406e-01 17.7011016
## d3 3.701049 1.797670 0.23316792 2.330315e-01  0.6795767
## d4 3.648933 2.823258 0.04059719 2.861990e+00  0.3279872
## d5 3.705036 0.575995 0.01659918 2.839770e+00  0.4766490
## d6 3.633044 1.720042 1.05780922 5.389832e+00  4.9415703

Координаты переменных

head(var$coord, 4)
##        Dim.1      Dim.2       Dim.3         Dim.4         Dim.5
## d1 0.9959931 0.08667675  0.02201425  0.0005284871  2.842586e-15
## d2 0.9856867 0.15604215  0.05619045 -0.0302516782 -3.824405e-15
## d3 0.9932608 0.10879264 -0.02997603 -0.0264323415 -7.493470e-16
## d4 0.9862426 0.13633891 -0.01250799 -0.0926322853  5.205856e-16
fviz_pca_var(res.pca, col.var = "black")

Качество представленности переменных

head(var$cos2, 4)
##        Dim.1       Dim.2        Dim.3        Dim.4        Dim.5
## d1 0.9920022 0.007512859 0.0004846272 2.792986e-07 8.080296e-30
## d2 0.9715783 0.024349153 0.0031573671 9.151640e-04 1.462607e-29
## d3 0.9865669 0.011835838 0.0008985623 6.986687e-04 5.615209e-31
## d4 0.9726745 0.018588299 0.0001564499 8.580740e-03 2.710094e-31
library("corrplot")
## corrplot 0.95 loaded
corrplot(var$cos2, is.corr=FALSE)

fviz_cos2(res.pca, choice = "var", axes = 1:2)

fviz_pca_var(res.pca, col.var = "cos2",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"), 
             repel = TRUE # Avoid text overlapping
)

Вклады переменных в компоненты

head(var$contrib, 4)
##       Dim.1    Dim.2      Dim.3        Dim.4      Dim.5
## d1 3.721439 1.141080 0.12575590 9.315629e-05  9.7791213
## d2 3.644820 3.698237 0.81930512 3.052406e-01 17.7011016
## d3 3.701049 1.797670 0.23316792 2.330315e-01  0.6795767
## d4 3.648933 2.823258 0.04059719 2.861990e+00  0.3279872
library("corrplot")
corrplot(var$contrib, is.corr=FALSE)

Вклад переменных в PC1

fviz_contrib(res.pca, choice = "var", axes = 1, top = 10)

Вклад переменных в PC2

fviz_contrib(res.pca, choice = "var", axes = 2, top = 10)

Общий вклад переменных в обе компоненты:

fviz_contrib(res.pca, choice = "var", axes = 1:2, top = 10)

Вклад переменных может быть визуализирован следующим образом:

fviz_pca_var(res.pca, col.var = "contrib",
             gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")
)

Биплот

fviz_pca_biplot(res.pca,
                col.ind = "#696969",
                col.var = "contrib",
                gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
                repel = TRUE,
                title = "Биплот PCA (наблюдения и переменные)"
)

Задание 4

library(haven)
library(dplyr)
## 
## Присоединяю пакет: 'dplyr'
## Следующие объекты скрыты от 'package:stats':
## 
##     filter, lag
## Следующие объекты скрыты от 'package:base':
## 
##     intersect, setdiff, setequal, union
library(questionr)
df<-read_sav("База_КлимРиск_2023.sav")
V16<-df %>% 
  select(contains("V16"))
table_V16_region<-cross.multi.table(V16, df$Region, true.codes=list("да"), freq=FALSE)
table_V16_region<-table_V16_region[1:9, 1:3]
colnames(table_V16_region)<-c("АК", "РА", "РТ")
rownames(table_V16_region)<-c("Засуха", "Жара", "Ливни", "Оползни", "Паводки", "Таяние", "Ветры", "Комары", "Вредители")
res.ca <- CA(table_V16_region, graph = FALSE)
get_eigenvalue(res.ca)
##       eigenvalue variance.percent cumulative.variance.percent
## Dim.1 0.07085082         84.15681                    84.15681
## Dim.2 0.01333823         15.84319                   100.00000

Данные описываются всего двумя измерениями, первое из которых описывает 84,2% дисперсии, второе - 15,8%.

row <- get_ca_row(res.ca)
row
## Correspondence Analysis - Results for rows
##  ===================================================
##   Name       Description                
## 1 "$coord"   "Coordinates for the rows" 
## 2 "$cos2"    "Cos2 for the rows"        
## 3 "$contrib" "contributions of the rows"
## 4 "$inertia" "Inertia of the rows"
row$cos2
##               Dim 1       Dim 2
## Засуха    0.9923788 0.007621233
## Жара      0.9490015 0.050998504
## Ливни     0.9401817 0.059818305
## Оползни   0.7425789 0.257421102
## Паводки   0.9832683 0.016731714
## Таяние    0.7042489 0.295751054
## Ветры     0.6654422 0.334557785
## Комары    0.5775468 0.422453231
## Вредители 0.6973866 0.302613434
row$contrib
##               Dim 1     Dim 2
## Засуха     6.717048  0.274014
## Жара       8.195487  2.339439
## Ливни     30.983030 10.471110
## Оползни    9.646569 17.763189
## Паводки   17.104878  1.546090
## Таяние    11.995053 26.757701
## Ветры      7.084298 18.919261
## Комары     1.808883  7.028272
## Вредители  6.464754 14.900922
fviz_ca_biplot(res.ca, repel = TRUE)

Корреспондентный анализ выявил, что первое измерение (Dim 1), объясняющее наибольшую долю дисперсии, тесно связано с такими климатическими рисками, как засуха, жара, ливни и паводки (cos² > 0.94), что указывает на их повсеместную значимость во всех регионах. Второе измерение (Dim 2) отражает более специфичные риски: ветры, комары и таяние мерзлоты (cos² Dim 2 от 0.30 до 0.42).