Podaję kody w R tylko przykład, możesz zobaczyć odpowiedzi, jeśli nie masz doświadczenia z R. Chcę tylko przedstawić kilka przykładów z przykładami.
korelacja vs regresja
Prosta korelacja liniowa i regresja z jednym Y i jednym X:
Model:
y = a + betaX + error (residual)
Powiedzmy, że mamy tylko dwie zmienne:
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
plot(X,Y, pch = 19)
Na schemacie punktowym im bliżej punkty leżą w linii prostej, tym silniejsza liniowa zależność między dwiema zmiennymi.
Zobaczmy korelację liniową.
cor(X,Y)
0.7828747
Teraz regresja liniowa i wyciągane wartości R do kwadratu .
reg1 <- lm(Y~X)
summary(reg1)$r.squared
0.6128929
Zatem współczynniki modelu wynoszą:
reg1$coefficients
(Intercept) X
2.2535971 0.7877698
Beta dla X wynosi 0,7877698. Tak więc naszym modelem będzie:
Y = 2.2535971 + 0.7877698 * X
Pierwiastek kwadratowy wartości R-kwadrat w regresji jest taki sam jak r
w regresji liniowej.
sqrt(summary(reg1)$r.squared)
[1] 0.7828747
Zobaczmy wpływ skali na nachylenie i korelację regresji, korzystając z tego samego powyższego przykładu, i pomnóżmy X
ją przez stałe powiedzenie 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
Korelacja pozostaje bez zmian podobnie jak R-kwadrat .
reg12 <- lm(Y~X12)
summary(reg12)$r.squared
[1] 0.6128929
reg12$coefficients
(Intercept) X12
0.53571429 0.07797619
Możesz zobaczyć współczynniki regresji zmienione, ale nie R-kwadrat. Teraz kolejny eksperyment pozwala dodać stałą X
i zobaczyć, co to da efekt.
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
Korelacja nadal nie ulega zmianie po dodaniu 5
. Zobaczmy, jak wpłynie to na współczynniki regresji.
reg5 <- lm(Y~X5)
summary(reg5)$r.squared
[1] 0.6128929
reg5$coefficients
(Intercept) X5
-4.1428571 0.9357143
R-kwadrat i korelację nie ma wpływu skalę, ale do przecięcia i nachylenia. Zatem nachylenie nie jest takie samo jak współczynnik korelacji (chyba że zmienne są znormalizowane ze średnią 0 i wariancją 1).
co to jest ANOVA i dlaczego robimy ANOVA?
ANOVA to technika, w której porównujemy wariancje w celu podejmowania decyzji. Zmienna odpowiedzi (nazywana Y
) jest zmienną ilościową, podczas gdy X
może być ilościowa lub jakościowa (czynnik o różnych poziomach). Zarówno X
i Y
może być jeden lub więcej liczby. Zwykle mówimy ANOVA dla zmiennych jakościowych, ANOVA w kontekście regresji jest mniej dyskutowana. Może to być przyczyną twojego zamieszania. Hipoteza zerowa w zmiennej jakościowej (czynniki np. Grupy) jest taka, że średnia grup nie jest różna / równa, podczas gdy w analizie regresji testujemy, czy nachylenie linii jest znacząco różne od 0.
Zobaczmy przykład, w którym możemy przeprowadzić zarówno analizę regresji, jak i ANOVA jako czynnik jakościowy, ponieważ zarówno X, jak i Y są ilościowe, ale X możemy traktować jako czynnik.
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)
Dane wyglądają następująco.
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
Teraz wykonujemy zarówno regresję, jak i ANOVA. Pierwsza regresja:
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
Teraz konwencjonalna ANOVA (średnia ANOVA dla czynnika / zmiennej jakościowej) poprzez konwersję X1 na czynnik.
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
Możesz zobaczyć zmieniony X1f Df, który wynosi 4 zamiast 1 w powyższym przypadku.
W przeciwieństwie do ANOVA dla zmiennych jakościowych, w kontekście zmiennych ilościowych, w których wykonujemy analizę regresji - Analiza wariancji (ANOVA) składa się z obliczeń, które dostarczają informacji o poziomach zmienności w modelu regresji i stanowią podstawę do testów istotności.
Zasadniczo ANOVA testuje hipotezę zerową beta = 0 (przy hipotezie alternatywnej beta nie jest równa 0). Tutaj wykonujemy test F, który stosunek zmienności wyjaśniony przez model vs błąd (wariancja resztkowa). Wariancja modelu pochodzi z kwoty objaśnionej przez dopasowaną linię, a wartość rezydualna pochodzi z wartości, która nie jest wyjaśniona przez model. Znaczące F oznacza, że wartość beta nie jest równa zeru, co oznacza, że istnieje znaczna zależność między dwiema zmiennymi.
> 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
Tutaj widzimy wysoką korelację lub R-kwadrat, ale nadal nie jest znaczący wynik. Czasami możesz uzyskać wynik, w którym niska korelacja nadal jest istotna. Przyczyną nieistotnej zależności w tym przypadku jest to, że nie mamy wystarczającej ilości danych (n = 6, resztkowe df = 4), więc F należy spojrzeć na rozkład F za pomocą licznika 1 df vs 4 denomerator df. W tym przypadku nie mogliśmy wykluczyć nachylenia, które nie jest równe 0.
Zobaczmy inny przykład:
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
Wartość R-kwadrat dla tych nowych danych:
summary(reg3)$r.squared
[1] 0.2917296
cor(X,Y)
[1] 0.54012
Chociaż korelacja jest niższa niż w poprzednim przypadku, uzyskaliśmy znaczny spadek. Więcej danych zwiększa df i zapewnia wystarczającą ilość informacji, abyśmy mogli wykluczyć hipotezę zerową, że nachylenie nie jest równe zero.
Weźmy inny przykład, w którym występuje korelacja negacji:
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
Ponieważ wartości były podniesione do kwadratu pierwiastek kwadratowy nie dostarczy tutaj informacji o dodatnim lub ujemnym związku. Ale wielkość jest taka sama.
Przypadek regresji wielokrotnej:
Wielokrotna regresja liniowa próbuje modelować związek między dwiema lub więcej zmiennymi objaśniającymi i zmienną odpowiedzi poprzez dopasowanie równania liniowego do obserwowanych danych. Powyższą dyskusję można rozszerzyć na przypadek regresji wielokrotnej. W tym przypadku mamy wiele wersji beta w terminie:
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)
Zobaczmy współczynniki modelu:
reg4$coefficients
(Intercept) X1 X2
2.04055116 0.72169350 0.05566427
Zatem twój model wielokrotnej regresji liniowej byłby:
Y = 2.04055116 + 0.72169350 * X1 + 0.05566427* X2
Teraz sprawdźmy, czy beta dla X1 i X2 są większe niż 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
Mówimy tutaj, że nachylenie X1 jest większe niż 0, podczas gdy nie możemy stwierdzić, że nachylenie X2 jest większe niż 0.
Należy pamiętać, że nachylenie nie jest korelacją między X1 i Y lub X2 i Y.
> cor(Y, X1)
[1] 0.54012
> cor(Y,X2)
[1] 0.3361571
W sytuacji wielu zmiennych (gdy zmienne są większe niż dwie) W grę wchodzi korelacja częściowa. Korelacja częściowa to korelacja dwóch zmiennych przy jednoczesnym sterowaniu trzecią lub większą liczbą innych zmiennych.
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