Я надаю коди в R лише приклад, ви можете просто побачити відповіді, якщо у вас немає досвіду роботи з Р. Я просто хочу зробити деякі випадки з прикладами.
кореляція проти регресії
Проста лінійна кореляція та регресія з одним Y і одним X:
Модель:
y = a + betaX + error (residual)
Скажімо, у нас є лише дві змінні:
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
plot(X,Y, pch = 19)
На діаграмі розсіювання, чим ближче точки лежать до прямої, тим сильніша лінійна залежність між двома змінними.
Подивимось лінійну кореляцію.
cor(X,Y)
0.7828747
Тепер значення лінійної регресії та витягування R у квадраті .
reg1 <- lm(Y~X)
summary(reg1)$r.squared
0.6128929
Таким чином, коефіцієнти моделі:
reg1$coefficients
(Intercept) X
2.2535971 0.7877698
Бета-версія для X становить 0,7877698. Таким чином, модель буде:
Y = 2.2535971 + 0.7877698 * X
Квадратний корінь значення R-квадрата в регресії такий же, як і r
в лінійній регресії.
sqrt(summary(reg1)$r.squared)
[1] 0.7828747
Давайте побачимо вплив масштабу на нахил і кореляцію регресії, використовуючи той самий приклад вище, і помножимо X
на постійне скажіння 12
.
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
X12 <- X*12
cor(X12,Y)
[1] 0.7828747
Кореляції залишаються незмінними , як це роблять R-квадрат .
reg12 <- lm(Y~X12)
summary(reg12)$r.squared
[1] 0.6128929
reg12$coefficients
(Intercept) X12
0.53571429 0.07797619
Ви можете бачити, що коефіцієнти регресії змінюються, але не R-квадрат. Тепер інший експеримент дозволяє додавати константу X
і бачити, що це матиме ефект.
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
X5 <- X+5
cor(X5,Y)
[1] 0.7828747
Кореляція все ще не змінюється після додавання 5
. Подивимося, як це вплине на коефіцієнти регресії.
reg5 <- lm(Y~X5)
summary(reg5)$r.squared
[1] 0.6128929
reg5$coefficients
(Intercept) X5
-4.1428571 0.9357143
R-квадрат і кореляція не має ефекту масштабу , але перехоплювати і нахил робити. Отже, нахил не такий, як коефіцієнт кореляції (якщо тільки змінні не стандартизовані із середнім значенням 0 та дисперсією 1).
що таке ANOVA і чому ми робимо ANOVA?
ANOVA - це техніка, в якій ми порівнюємо відхилення для прийняття рішень. Змінна відповіді (називається Y
) є кількісною змінною, тоді як X
може бути кількісною або якісною (фактор з різними рівнями). І те, X
і Y
інше може бути одним чи кількома. Зазвичай ми говоримо про ANOVA для якісних змінних, ANOVA в регресійному контексті менше обговорюється. Це може бути причиною вашої плутанини. Нульова гіпотеза якісної змінної (коефіцієнти, наприклад, групи) полягає в тому, що середнє значення груп не відрізняється / рівне, тоді як при регресійному аналізі ми перевіряємо, чи суттєво відрізняється нахил лінії від 0.
Давайте подивимось приклад, коли ми можемо робити як регресійний аналіз, так і якісний фактор ANOVA, оскільки і X, і Y є кількісними, але ми можемо трактувати X як фактор.
X1 <- rep(1:5, each = 5)
Y1 <- c(12,14,18,12,14, 21,22,23,24,18, 25,23,20,25,26, 29,29,28,30,25, 29,30,32,28,27)
myd <- data.frame (X1,Y1)
Дані виглядають так.
X1 Y1
1 1 12
2 1 14
3 1 18
4 1 12
5 1 14
6 2 21
7 2 22
8 2 23
9 2 24
10 2 18
11 3 25
12 3 23
13 3 20
14 3 25
15 3 26
16 4 29
17 4 29
18 4 28
19 4 30
20 4 25
21 5 29
22 5 30
23 5 32
24 5 28
25 5 27
Зараз ми робимо і регресію, і ANOVA. Перша регресія:
reg <- lm(Y1~X1, data=myd)
anova(reg)
Analysis of Variance Table
Response: Y1
Df Sum Sq Mean Sq F value Pr(>F)
X1 1 684.50 684.50 101.4 6.703e-10 ***
Residuals 23 155.26 6.75
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
reg$coefficients
(Intercept) X1
12.26 3.70
Зараз звичайна ANOVA (середня ANOVA для коефіцієнта / якісної змінної) шляхом перетворення X1 у коефіцієнт.
myd$X1f <- as.factor (myd$X1)
regf <- lm(Y1~X1f, data=myd)
anova(regf)
Analysis of Variance Table
Response: Y1
Df Sum Sq Mean Sq F value Pr(>F)
X1f 4 742.16 185.54 38.02 4.424e-09 ***
Residuals 20 97.60 4.88
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Ви можете побачити змінений X1f Df, який становить 4, а не 1 у верхньому випадку.
На відміну від ANOVA для якісних змінних, в контексті кількісних змінних, де ми робимо регресійний аналіз - Аналіз варіації (ANOVA) складається з обчислень, які надають інформацію про рівні мінливості в регресійній моделі та складають основу для тестів на значимість.
В основному ANOVA перевіряє нульову гіпотезу бета = 0 (з альтернативною гіпотезою бета не дорівнює 0). Тут ми робимо тест F, співвідношення змінності пояснюється моделлю проти помилки (залишкова дисперсія). Дисперсія моделі походить від суми, поясненої рядком, який вам підходить, а залишковий - від значення, яке не пояснюється моделлю. Значне F означає, що бета-значення не дорівнює нулю, означає, що існує значна залежність між двома змінними.
> anova(reg1)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 1 81.719 81.719 6.3331 0.0656 .
Residuals 4 51.614 12.904
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Тут ми можемо побачити високу кореляцію або R-квадрат, але все ще не суттєвий результат. Інколи ви можете отримати результат, коли низька кореляція все ще значна кореляція. Причина несуттєвого відношення в цьому випадку полягає в тому, що у нас недостатньо даних (n = 6, залишковий df = 4), тому F слід розглядати розподіл F з чисельником 1 df проти 4 domeomerator df. Тож у цьому випадку ми не змогли виключити нахил, не дорівнює 0.
Подивимось ще один приклад:
X = c(4,5,8,6,2, 5,6,4,2,3, 8,2,5,6,3, 8,9,3,5,10)
Y = c(3,6,9,8,6, 8,6,8,10,5, 3,3,2,4,3, 11,12,4,2,14)
reg3 <- lm(Y~X)
anova(reg3)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 1 69.009 69.009 7.414 0.01396 *
Residuals 18 167.541 9.308
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Значення R-квадрата для цих нових даних:
summary(reg3)$r.squared
[1] 0.2917296
cor(X,Y)
[1] 0.54012
Хоча кореляція нижче попереднього випадку, ми отримали значний нахил. Більше даних збільшує df і надає достатньо інформації, щоб ми могли виключити нульову гіпотезу про те, що нахил не дорівнює нулю.
Давайте візьмемо інший приклад, коли існує заперечна кореляція:
X1 = c(4,5,8,6,12,15)
Y1 = c(18,16,2,4,2, 8)
# correlation
cor(X1,Y1)
-0.5266847
# r-square using regression
reg2 <- lm(Y1~X1)
summary(reg2)$r.squared
0.2773967
sqrt(summary(reg2)$r.squared)
[1] 0.5266847
Оскільки значення були квадратними, квадратний корінь не надаватиме інформацію про позитивні чи негативні відносини тут. Але величина однакова.
Випадок множинної регресії:
Множинна лінійна регресія намагається моделювати зв'язок між двома або більше пояснювальними змінними та змінною відповіді, встановлюючи лінійне рівняння до спостережуваних даних. Вищенаведене обговорення може бути розширено до випадків множинної регресії. У цьому випадку у нас є кілька бета-версій у терміні:
y = a + beta1X1 + beta2X2 + beta2X3 + ................+ betapXp + error
Example:
X1 = c(4,5,8,6,2, 5,6,4,2,3, 8,2,5,6,3, 8,9,3,5,10)
X2 = c(14,15,8,16,2, 15,3,2,4,7, 9,12,5,6,3, 12,19,13,15,20)
Y = c(3,6,9,8,6, 8,6,8,10,5, 3,3,2,4,3, 11,12,4,2,14)
reg4 <- lm(Y~X1+X2)
Давайте подивимось коефіцієнти моделі:
reg4$coefficients
(Intercept) X1 X2
2.04055116 0.72169350 0.05566427
Таким чином, ваша модель множинної лінійної регресії буде такою:
Y = 2.04055116 + 0.72169350 * X1 + 0.05566427* X2
Тепер давайте перевіримо, якщо бета для X1 та X2 більше 0.
anova(reg4)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X1 1 69.009 69.009 7.0655 0.01656 *
X2 1 1.504 1.504 0.1540 0.69965
Residuals 17 166.038 9.767
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Тут ми говоримо, що нахил X1 більший за 0, тоді як ми не могли правити, що нахил X2 більший за 0.
Зверніть увагу, що нахил не є кореляцією між X1 та Y або X2 та Y.
> cor(Y, X1)
[1] 0.54012
> cor(Y,X2)
[1] 0.3361571
У ситуації з декількома змінними (де змінна більша за дві Частка кореляції надходить у гру. Часткова кореляція - це кореляція двох змінних при контролі третьої чи більше інших змінних.
source("http://www.yilab.gatech.edu/pcor.R")
pcor.test(X1, Y,X2)
estimate p.value statistic n gn Method Use
1 0.4567979 0.03424027 2.117231 20 1 Pearson Var-Cov matrix
pcor.test(X2, Y,X1)
estimate p.value statistic n gn Method Use
1 0.09473812 0.6947774 0.3923801 20 1 Pearson Var-Cov matrix