Ich gebe Codes in R nur als Beispiel an, Sie können nur Antworten sehen, wenn Sie keine Erfahrung mit R haben. Ich möchte nur einige Fälle mit Beispielen anführen.
Korrelation vs. Regression
Einfache lineare Korrelation und Regression mit einem Y und einem X:
Das Model:
y = a + betaX + error (residual)
Nehmen wir an, wir haben nur zwei Variablen:
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
plot(X,Y, pch = 19)
In einem Streudiagramm ist die lineare Beziehung zwischen zwei Variablen umso stärker, je näher die Punkte an einer geraden Linie liegen.
Sehen wir uns die lineare Korrelation an.
cor(X,Y)
0.7828747
Nun werden die Werte für die lineare Regression und das R-Quadrat herausgezogen .
reg1 <- lm(Y~X)
summary(reg1)$r.squared
0.6128929
Somit sind die Koeffizienten des Modells:
reg1$coefficients
(Intercept) X
2.2535971 0.7877698
Die Beta für X ist 0.7877698. So wird unser Modell sein:
Y = 2.2535971 + 0.7877698 * X
Die Quadratwurzel des R-Quadrat-Werts in der Regression ist dieselbe wie r
in der linearen Regression.
sqrt(summary(reg1)$r.squared)
[1] 0.7828747
Lassen Sie uns den Skaleneffekt auf die Regressionssteigung und die Korrelation anhand des obigen Beispiels betrachten und X
mit einer konstanten Aussage multiplizieren 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
Die Korrelation bleibt unverändert, ebenso wie das R-Quadrat .
reg12 <- lm(Y~X12)
summary(reg12)$r.squared
[1] 0.6128929
reg12$coefficients
(Intercept) X12
0.53571429 0.07797619
Sie können sehen, dass sich die Regressionskoeffizienten geändert haben, jedoch nicht das R-Quadrat. In einem weiteren Experiment können Sie eine Konstante hinzufügen X
und sehen, welche Auswirkungen dies haben wird.
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
Die Korrelation wird nach dem Hinzufügen immer noch nicht geändert 5
. Mal sehen, wie sich dies auf die Regressionskoeffizienten auswirkt.
reg5 <- lm(Y~X5)
summary(reg5)$r.squared
[1] 0.6128929
reg5$coefficients
(Intercept) X5
-4.1428571 0.9357143
Das R-Quadrat und die Korrelation haben keinen Skaleneffekt, der Achsenabschnitt und die Steigung jedoch. Die Steigung entspricht also nicht dem Korrelationskoeffizienten (es sei denn, die Variablen sind mit Mittelwert 0 und Varianz 1 standardisiert ).
Was ist ANOVA und warum machen wir ANOVA?
ANOVA ist eine Technik, bei der Abweichungen verglichen werden, um Entscheidungen zu treffen. Die Antwortvariable (genannt Y
) ist eine quantitative Variable, während X
sie quantitativ oder qualitativ sein kann (Faktor mit unterschiedlichen Niveaus). Beide X
und Y
können eine oder mehrere sein. Normalerweise sagen wir ANOVA für qualitative Variablen, ANOVA im Regressionskontext wird weniger diskutiert. Möglicherweise ist dies ein Grund für Ihre Verwirrung. Die Nullhypothese in der qualitativen Variablen (Faktoren, z. B. Gruppen) lautet, dass der Mittelwert der Gruppen nicht unterschiedlich / gleich ist, während in der Regressionsanalyse getestet wird, ob sich die Steigung der Linie signifikant von 0 unterscheidet.
Schauen wir uns ein Beispiel an, in dem wir sowohl eine Regressionsanalyse als auch eine qualitative Faktor-ANOVA durchführen können, da sowohl X als auch Y quantitativ sind, aber wir können X als Faktor behandeln.
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)
Die Daten sehen wie folgt aus.
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
Jetzt machen wir sowohl Regression als auch ANOVA. Erste Regression:
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
Jetzt konventionelle ANOVA (mittlere ANOVA für Faktor / qualitative Variable) durch Umrechnung von X1 in Faktor.
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
Sie können X1f Df geändert sehen, das 4 statt 1 in obigem Fall ist.
Im Gegensatz zur ANOVA für qualitative Variablen besteht die ANOVA (Analysis of Variance) im Zusammenhang mit quantitativen Variablen, bei denen Regressionsanalysen durchgeführt werden, aus Berechnungen, die Informationen über den Grad der Variabilität innerhalb eines Regressionsmodells liefern und eine Grundlage für Signifikanztests bilden.
Grundsätzlich testet ANOVA die Nullhypothese Beta = 0 (bei Alternativhypothese Beta ungleich 0). Hier führen wir einen F-Test durch, welches Verhältnis der Variabilität vom Modell zum Fehler (Restvarianz) erklärt wird. Die Modellvarianz ergibt sich aus dem Betrag, der durch die von Ihnen angepasste Linie erklärt wird, während der Rest aus dem Wert stammt, der vom Modell nicht erklärt wird. Ein signifikantes F bedeutet, dass der Beta-Wert ungleich Null ist. Dies bedeutet, dass eine signifikante Beziehung zwischen zwei Variablen besteht.
> 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
Hier sehen wir eine hohe Korrelation oder ein R-Quadrat, aber immer noch kein signifikantes Ergebnis. Manchmal erhalten Sie möglicherweise ein Ergebnis, bei dem die niedrige Korrelation immer noch eine signifikante Korrelation aufweist. Der Grund für die nicht signifikante Beziehung liegt in diesem Fall darin, dass wir nicht genügend Daten haben (n = 6, Rest-df = 4). Daher sollte die F-Verteilung mit dem Zähler 1 df gegen den 4-Denomerator df betrachtet werden. In diesem Fall können wir also nicht ausschließen, dass die Steigung ungleich 0 ist.
Sehen wir uns ein weiteres Beispiel an:
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-Quadrat-Wert für diese neuen Daten:
summary(reg3)$r.squared
[1] 0.2917296
cor(X,Y)
[1] 0.54012
Obwohl die Korrelation geringer ist als im vorherigen Fall, haben wir eine signifikante Steigung. Mehr Daten erhöhen df und liefern genügend Informationen, so dass wir die Nullhypothese ausschließen können, dass die Steigung ungleich Null ist.
Nehmen wir ein anderes Beispiel, in dem es eine negative Korrelation gibt:
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
Da die Werte Quadratwurzel waren, werden hier keine Informationen über positive oder negative Beziehungen geliefert. Aber die Größenordnung ist gleich.
Multiple Regression:
Multiple lineare Regression versucht, die Beziehung zwischen zwei oder mehr erklärenden Variablen und einer Antwortvariablen durch Anpassen einer linearen Gleichung an beobachtete Daten zu modellieren. Die obige Diskussion kann auf den Fall der multiplen Regression ausgedehnt werden. In diesem Fall haben wir mehrere Beta in der Laufzeit:
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)
Sehen wir uns die Koeffizienten des Modells an:
reg4$coefficients
(Intercept) X1 X2
2.04055116 0.72169350 0.05566427
Ihr multiples lineares Regressionsmodell wäre also:
Y = 2.04055116 + 0.72169350 * X1 + 0.05566427* X2
Lassen Sie uns nun testen, ob die Beta für X1 und X2 größer als 0 ist.
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
Hier sagen wir, dass die Steigung von X1 größer als 0 ist, während wir nicht ausschließen können, dass die Steigung von X2 größer als 0 ist.
Bitte beachten Sie, dass die Steigung nicht zwischen X1 und Y oder X2 und Y korreliert.
> cor(Y, X1)
[1] 0.54012
> cor(Y,X2)
[1] 0.3361571
In Situationen mit mehreren Variablen (bei denen die Variablen größer als zwei sind) kommt die partielle Korrelation ins Spiel. Die partielle Korrelation ist die Korrelation zweier Variablen, während für eine dritte oder mehrere andere Variablen gesteuert wird.
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