- •Вводные замечания
- •1. Начало работы
- •2. Описательные статистики
- •2.1. Проверка наличия «выбросов»
- •2.2. Проверка нормальности распределения
- •2.2.1. Критерии нормальности
- •2.2.2. Визуальная проверка нормальности распределения
- •3.2. Сравнение двух зависимых групп
- •3. Сравнение двух выборок
- •3.1. Сравнение двух независимых групп
- •4. Корреляционный анализ
- •5. Многомерные методы
- •5.1. Анализ главных компонент и эксплораторный факторный анализ
- •5.2. Кластерный анализ
- •5.2.1. Иерархический кластерный анализ
- •5.2.2. Кластерный анализ методом К-средних
- •Список рекомендуемой литературы и интернет-источников
2. Описательные статистики
Рассмотрим традиционные описательные статистики. В R их можно получить несколькими способами. Используя базовый R, можно воспользоваться функцией summary():
summary(epi.bfi) |
|
|
|
|
|
|
|
|
|
|
||
## |
|
epiE |
|
epiS |
|
|
epiImp |
|
epilie |
|
|
|
## |
Min. |
: 1.0 |
Min. |
: |
0.00 |
Min. |
|
:0.00 |
Min. |
:0.00 |
|
|
## |
1st Qu.:11.0 |
1st Qu.: |
6.00 |
1st Qu.:3.00 |
1st Qu.:1.00 |
|
|
|||||
## |
Median :14.0 |
Median : |
8.00 |
Median :4.00 |
Median :2.00 |
|
|
|||||
## |
Mean |
:13.3 |
Mean |
: |
7.58 |
Mean |
|
:4.37 |
Mean |
:2.38 |
|
|
## |
3rd Qu.:16.0 |
3rd Qu.: |
9.50 |
3rd Qu.:6.00 |
3rd Qu.:3.00 |
|
|
|||||
## |
Max. |
:22.0 |
Max. |
:13.00 |
Max. |
|
:9.00 |
Max. |
:7.00 |
|
|
|
## |
epiNeur |
bfagree |
bfcon |
bfext |
bfneur |
|||||||
## |
Min. |
: 0.0 |
Min. |
: |
74 |
Min. |
: |
53 |
Min. |
: 8.0 |
Min. |
: 34 |
## |
1st Qu.: 7.0 |
1st Qu.:112 |
1st Qu.: |
99 |
1st Qu.: 87.5 |
1st Qu.: 70 |
||||||
## |
Median :10.0 |
Median :126 |
Median :114 |
Median :104.0 |
Median : 90 |
|||||||
## |
Mean |
:10.4 |
Mean |
:125 |
Mean |
:113 |
Mean |
:102.2 |
Mean |
: 88 |
||
## |
3rd Qu.:14.0 |
3rd Qu.:136 |
3rd Qu.:128 |
3rd Qu.:118.0 |
3rd Qu.:104 |
|||||||
## |
Max. |
:23.0 |
Max. |
:167 |
Max. |
:178 |
Max. |
:168.0 |
Max. |
:152 |
||
## |
|
bfopen |
|
bdi |
|
traitanx |
stateanx |
|
|
|||
## |
Min. |
: 73 |
Min. |
: 0.00 |
Min. |
|
:22 |
Min. |
:21.0 |
|
|
|
## |
1st Qu.:110 |
1st Qu.: 3.00 |
1st Qu.:32 |
1st Qu.:32.0 |
|
|
||||||
## |
Median :125 |
Median : 6.00 |
Median :38 |
Median :38.0 |
|
|
||||||
## |
Mean |
:123 |
Mean |
: 6.78 |
Mean |
|
:39 |
Mean |
:39.8 |
|
|
|
## |
3rd Qu.:136 |
3rd Qu.: 9.00 |
3rd Qu.:44 |
3rd Qu.:46.5 |
|
|
||||||
## |
Max. |
:173 |
Max. |
:27.00 |
Max. |
|
:71 |
Max. |
:79.0 |
|
|
|
Функция summary() выводит 6 характеристик: минимум (0 %), 1-й квартиль (25 %), медиану (2-й квартиль, 50 %), среднее арифметическое, 3-й квартиль (75 %), максимум (100 %). Для получения более обширного списка описательных статистик можно прибегнуть к функции describe() пакета "psych":
describe(epi.bfi) |
|
|
|
|
|
|
|
|
|
|
## |
vars n |
mean |
sd median trimmed |
mad min max range |
skew |
|||||
## epiE |
1 231 |
13.33 |
4.14 |
14 |
13.49 |
4.45 |
1 |
22 |
21 |
-0.33 |
## epiS |
2 231 |
7.58 |
2.69 |
8 |
7.77 |
2.97 |
0 |
13 |
13 |
-0.57 |
## epiImp |
3 231 |
4.37 |
1.88 |
4 |
4.36 |
1.48 |
0 |
9 |
9 |
0.06 |
## epilie |
4 231 |
2.38 |
1.50 |
2 |
2.27 |
1.48 |
0 |
7 |
7 |
0.66 |
## epiNeur |
5 231 |
10.41 |
4.90 |
10 |
10.39 |
4.45 |
0 |
23 |
23 |
0.06 |
## bfagree |
6 231 |
125.00 |
18.14 |
126 |
125.26 |
17.79 |
74 |
167 |
93 |
-0.21 |
## bfcon |
7 231 |
113.25 |
21.88 |
114 |
113.42 |
22.24 |
53 |
178 |
125 |
-0.02 |
## bfext |
8 231 |
102.18 |
26.45 |
104 |
102.99 |
22.24 |
8 |
168 |
160 |
-0.41 |
## bfneur |
9 231 |
87.97 |
23.34 |
90 |
87.70 |
23.72 |
34 |
152 |
118 |
0.07 |
## bfopen |
10 231 |
123.43 |
20.51 |
125 |
123.78 |
20.76 |
73 |
173 |
100 |
-0.16 |
## bdi |
11 231 |
6.78 |
5.78 |
6 |
5.97 |
4.45 |
0 |
27 |
27 |
1.29 |
## traitanx |
12 231 |
39.01 |
9.52 |
38 |
38.36 |
8.90 |
22 |
71 |
49 |
0.67 |
7
## stateanx |
13 231 |
39.85 11.48 |
38 38.92 10.38 21 79 |
58 0.72 |
## |
kurtosis |
se |
|
|
## epiE |
-0.06 0.27 |
|
|
|
## epiS |
-0.02 0.18 |
|
|
|
## epiImp |
-0.62 0.12 |
|
|
|
## epilie |
0.24 |
0.10 |
|
|
## epiNeur |
-0.50 0.32 |
|
|
|
## bfagree |
-0.27 1.19 |
|
|
|
## bfcon |
0.23 |
1.44 |
|
|
## bfext |
0.51 |
1.74 |
|
|
## bfneur |
-0.55 1.54 |
|
|
|
## bfopen |
-0.16 1.35 |
|
|
|
## bdi |
1.50 |
0.38 |
|
|
## traitanx |
0.47 |
0.63 |
|
|
## stateanx |
-0.01 0.76 |
|
|
|
Результатом функции являются: порядковый номер переменной (vars), количество наблюдений (n), среднее арифметическое (mean), стандартное отклонение (sd), медиана (median), усеченное среднее (trimmed) (по умолчанию отсекаются 10 % самых низких и 10 % самых высоких значений), медианное абсолютное отклонение (mad), минимум (min), максимум (max), размах между минимумом и максимумом (range), асимметрия (skew), эксцесс (kurtosis), стандартная ошибка среднего (se).
Также многие описательные статистики можно получить напрямую, использовав соответствующую функцию:
# Среднее арифметическое mean(epi.bfi$epiE, na.rm = T)
## [1] 13.333
# Усеченное среднее (аргумент trim = 0.1 позволяет отсечь 10 % самых низких и 10 % самых высоких значений)
mean(epi.bfi$epiE, na.rm = T, trim = 0.1)
## [1] 13.492
# Медиана
median(epi.bfi$epiE, na.rm = T)
## [1] 14
# Дисперсия var(epi.bfi$epiE, na.rm = T)
## [1] 17.101
# Стандартное отклонение sd(epi.bfi$epiE, na.rm = T)
## [1] 4.1354
8
# Медианное абсолютное отклонение mad(epi.bfi$epiE, na.rm = T)
## [1] 4.4478
# Минимум
min(epi.bfi$epiE, na.rm = T)
## [1] 1
# Максимум max(epi.bfi$epiE, na.rm = T)
## [1] 22
# Размах между минимумом и максимумом (выводит значения минимума и максимума) range(epi.bfi$epiE, na.rm = T)
## [1] 1 22
# Квантили: 0 (минимум), 25 % (1-й квартиль), 50 % (медиана, 2-й квартиль), 75 % (3-й квартиль), 100 % (максимум)
quantile(epi.bfi$epiE)
## |
0% |
25% |
50% |
75% |
100% |
## |
1 |
11 |
14 |
16 |
22 |
|
|
|
|
|
|
# Возможно задание произвольных квантилей (здесь – 10 % и 90 %) quantile(epi.bfi$epiE, probs = c(0.1, 0.9))
## 10% 90% ## 8 19
# Межквартильный размах (размах между 1-м и 3-м квартилями)
IQR(epi.bfi$epiE, na.rm = T)
## [1] 5
# Сумма
sum(epi.bfi$epiE, na.rm = T)
## [1] 3080
# Всего наблюдений length(epi.bfi$epiE)
## [1] 231
# Количество наблюдений без пропусков sum(!is.na(epi.bfi$epiE))
## [1] 231
9
Аргумент na.rm = T позволяет функции обходить пропущенные значения, в противном случае, при наличии даже одного пропущенного значения, функция не будет выполнена и выдаст ошибку.
Ряд важных описательных статистик отсутствует в базовом R, но их легко можно написать самостоятельно, зная соответствующую формулу, например:
# Функция для расчета стандартной ошибки среднего:
SE <- function(x) {sd(x, na.rm = T)/sqrt(length(x))}
SE(epi.bfi$epiE)
## [1] 0.27209
# Функция для расчета асимметрии
Skew <- function(x) {(sum((x - mean(x, na.rm = T))^3)) / (length(x)*sd(x, na.rm = T)^3)}
Skew(epi.bfi$epiE) ## [1] -0.32987
# Функция для расчета эксцесса
Kurt <- function(x) {((sum((x - mean(x, na.rm = T))^4)) / (length(x)*sd(x, na.rm = T)^4)) - 3}
Kurt(epi.bfi$epiE)
## [1] -0.064587
# Функция для расчета моды (не рекомендуется называть авторские функции так же, как названы функции в R, поэтому вместо уже существующей в R функции "mode", выполняющей, правда, другую задачу, назовем нашу функцию "moda"):
moda <- function(x) { uniq <- unique(x)
uniq[which.max(tabulate(match(x, uniq)))]
}
moda(epi.bfi$epiE)
## [1] 14
Некоторые функции можно найти в других пакетах, например, в пакете "psych" есть функции для расчета асимметрии и эксцесса:
library(psych) skew(epi.bfi$epiE)
## [1] -0.32987
kurtosi(epi.bfi$epiE)
## [1] -0.064587
Когда необходимо одну функцию применить к нескольким переменным, можно воспользоваться функцией apply():
10
# На вход подаем датафрейм, указываем, что функцию следует применять к столбцам (1 – строки, 2 – столбцы), далее задаем интересующую нас функцию (возможно использовать авторскую функцию)
apply(X = epi.bfi, MARGIN = 2, FUN = mean)
## |
epiE |
epiS |
epiImp |
epilie |
epiNeur |
bfagree |
bfcon |
bfext |
## |
13.3333 |
7.5844 |
4.3680 |
2.3766 |
10.4113 |
124.9957 |
113.2511 |
102.1775 |
## |
bfneur |
bfopen |
bdi traitanx stateanx |
|
|
|
||
##87.9697 123.4286 6.7792 39.0087 39.8485
Если необходимо применить описательные статистики отдельно по группам, то можно воспользоваться функцией describeBy() пакета "psych":
library(psych)
# Создаем новую переменную в датасете: если депрессивность у респондента выше среднего, то указываем в новой переменной - "высокая", иначе указываем - "низкая"
epi.bfi$depr <- ifelse(epi.bfi$bdi > mean(epi.bfi$bdi),
"высокая", "низкая")
# Указываем все переменные, за вычетом последней, группирующей, затем указываем группирующую переменную
describeBy(x = epi.bfi[, -ncol(epi.bfi)], group = epi.bfi$depr)
##
##Descriptive statistics by group
##group: высокая
## |
vars n |
mean |
sd median trimmed |
mad min max range |
skew |
|||||
## epiE |
1 99 |
12.84 |
4.09 |
13 |
13.02 |
4.45 |
1 |
21 |
20 |
-0.44 |
## epiS |
2 99 |
7.31 |
2.64 |
8 |
7.49 |
2.97 |
0 |
13 |
13 |
-0.64 |
## epiImp |
3 99 |
4.13 |
1.89 |
4 |
4.10 |
1.48 |
0 |
8 |
8 |
0.10 |
## epilie |
4 99 |
2.22 |
1.34 |
2 |
2.19 |
1.48 |
0 |
6 |
6 |
0.41 |
## epiNeur |
5 99 |
13.13 |
4.28 |
13 |
13.16 |
4.45 |
2 |
23 |
21 |
-0.04 |
## bfagree |
6 99 |
122.61 |
18.83 |
124 |
122.68 |
17.79 |
74 |
167 |
93 |
-0.11 |
## bfcon |
7 99 |
109.82 |
22.00 |
110 |
110.15 |
23.72 |
58 |
167 |
109 |
-0.09 |
## bfext |
8 99 |
97.82 |
27.38 |
102 |
100.01 |
25.20 |
8 |
147 |
139 |
-0.80 |
## bfneur |
9 99 |
97.47 |
21.78 |
100 |
97.79 |
23.72 |
34 |
152 |
118 |
-0.16 |
## bfopen |
10 99 |
119.82 |
21.91 |
122 |
120.21 |
20.76 |
73 |
172 |
99 |
-0.14 |
## bdi |
11 99 |
11.88 |
5.20 |
10 |
11.09 |
4.45 |
7 |
27 |
20 |
1.22 |
## traitanx |
12 99 |
44.93 |
9.09 |
44 |
44.25 |
10.38 |
30 |
71 |
41 |
0.71 |
## stateanx |
13 99 |
46.74 |
11.63 |
46 |
46.35 |
13.34 |
26 |
79 |
53 |
0.30 |
## |
kurtosis |
se |
|
|
|
|
|
|
|
|
## epiE |
-0.33 |
0.41 |
|
|
|
|
|
|
|
|
## epiS |
0.01 |
0.27 |
|
|
|
|
|
|
|
|
## epiImp |
-0.59 |
0.19 |
|
|
|
|
|
|
|
|
## epilie |
0.10 |
0.13 |
|
|
|
|
|
|
|
|
## epiNeur |
-0.42 |
0.43 |
|
|
|
|
|
|
|
|
11
## bfagree |
-0.14 |
1.89 |
|
|
|
|
|
|
|
|
## bfcon |
-0.32 |
2.21 |
|
|
|
|
|
|
|
|
## bfext |
0.53 |
2.75 |
|
|
|
|
|
|
|
|
## bfneur |
-0.15 |
2.19 |
|
|
|
|
|
|
|
|
## bfopen |
-0.42 |
2.20 |
|
|
|
|
|
|
|
|
## bdi |
0.51 |
0.52 |
|
|
|
|
|
|
|
|
## traitanx |
0.13 |
0.91 |
|
|
|
|
|
|
|
|
## stateanx |
-0.58 |
1.17 |
|
|
|
|
|
|
|
|
## -------------------------------------------------------- |
|
|
||||||||
## group: низкая |
|
|
|
|
|
|
|
|
|
|
## |
vars n |
mean |
sd median trimmed |
mad min max range |
skew |
|||||
## epiE |
1 132 |
13.70 |
4.15 |
14.0 |
13.84 |
3.71 |
2 |
22 |
20 |
-0.26 |
## epiS |
2 132 |
7.79 |
2.71 |
8.0 |
7.96 |
2.97 |
1 |
13 |
12 |
-0.54 |
## epiImp |
3 132 |
4.55 |
1.86 |
4.0 |
4.57 |
1.48 |
1 |
9 |
8 |
0.05 |
## epilie |
4 132 |
2.49 |
1.60 |
2.0 |
2.38 |
1.48 |
0 |
7 |
7 |
0.70 |
## epiNeur |
5 132 |
8.37 |
4.32 |
8.0 |
8.31 |
4.45 |
0 |
20 |
20 |
0.14 |
## bfagree |
6 132 |
126.79 17.47 |
129.0 |
127.25 |
16.31 |
82 |
165 |
83 |
-0.25 |
|
## bfcon |
7 132 |
115.83 21.51 |
115.0 |
115.75 |
19.27 |
53 |
178 |
125 |
0.05 |
|
## bfext |
8 132 |
105.45 25.35 |
105.0 |
105.37 |
21.50 |
38 |
168 |
130 |
0.00 |
|
## bfneur |
9 132 |
80.84 21.95 |
79.5 |
80.27 |
27.43 |
35 |
144 |
109 |
0.26 |
|
## bfopen |
10 132 |
126.14 19.03 |
127.5 |
126.27 |
17.05 |
75 |
173 |
98 |
-0.05 |
|
## bdi |
11 132 |
2.95 |
1.99 |
3.0 |
2.94 |
2.97 |
0 |
6 |
6 |
0.04 |
## traitanx |
12 132 |
34.57 |
7.14 |
34.0 |
34.28 |
7.41 |
22 |
54 |
32 |
0.37 |
## stateanx |
13 132 |
34.68 |
8.22 |
33.0 |
33.97 |
8.90 |
21 |
58 |
37 |
0.75 |
## |
kurtosis |
se |
|
|
|
|
|
|
|
|
## epiE |
0.02 |
0.36 |
|
|
|
|
|
|
|
|
## epiS |
-0.10 |
0.24 |
|
|
|
|
|
|
|
|
## epiImp |
-0.69 |
0.16 |
|
|
|
|
|
|
|
|
## epilie |
0.01 |
0.14 |
|
|
|
|
|
|
|
|
## epiNeur |
-0.51 |
0.38 |
|
|
|
|
|
|
|
|
## bfagree |
-0.44 |
1.52 |
|
|
|
|
|
|
|
|
## bfcon |
0.57 |
1.87 |
|
|
|
|
|
|
|
|
## bfext |
-0.08 |
2.21 |
|
|
|
|
|
|
|
|
## bfneur |
-0.54 |
1.91 |
|
|
|
|
|
|
|
|
## bfopen |
-0.12 |
1.66 |
|
|
|
|
|
|
|
|
## bdi |
-1.20 |
0.17 |
|
|
|
|
|
|
|
|
## traitanx |
-0.50 |
0.62 |
|
|
|
|
|
|
|
|
## stateanx |
0.25 |
0.72 |
|
|
|
|
|
|
|
|
Можно применить произвольные описательные статистики отдельно к каждой группе, использовав функцию tapply():
tapply(X = epi.bfi$epiE, INDEX = epi.bfi$depr, FUN = mean)
##высокая низкая
##12.838 13.705
12
