ฉันกำลังให้รหัสใน R เป็นเพียงตัวอย่างคุณจะเห็นคำตอบถ้าคุณไม่มีประสบการณ์กับ 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-squared ในการถดถอยเหมือนกับ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-squared
reg12 <- lm(Y~X12)
summary(reg12)$r.squared
[1] 0.6128929
reg12$coefficients
(Intercept) X12
0.53571429 0.07797619
คุณสามารถเห็นค่าสัมประสิทธิ์การถดถอยเปลี่ยน แต่ไม่ใช่ R-square ตอนนี้การทดสอบอื่นให้เพิ่มค่าคงที่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) ประกอบด้วยการคำนวณที่ให้ข้อมูลเกี่ยวกับระดับของความแปรปรวนภายในแบบจำลองการถดถอยและสร้างพื้นฐานสำหรับการทดสอบความสำคัญ
โดยทั่วไปการทดสอบความแปรปรวนทดสอบสมมติฐานว่างเบต้า = 0 (กับสมมุติฐานทางเลือกเบต้าไม่เท่ากับ 0) ที่นี่เราทำการทดสอบแบบ F ซึ่งอัตราส่วนของความแปรปรวนที่อธิบายโดยตัวแบบ vs ข้อผิดพลาด (ความแปรปรวนที่เหลือ) ความแปรปรวนของแบบจำลองมาจากจำนวนที่อธิบายโดยบรรทัดที่คุณพอดีส่วนที่เหลือมาจากค่าที่ไม่ได้อธิบายโดยตัวแบบ 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-squared แต่ก็ยังไม่ได้ผลอย่างมีนัยสำคัญ บางครั้งคุณอาจได้รับผลลัพธ์ที่ความสัมพันธ์ต่ำยังคงมีความสัมพันธ์อย่างมีนัยสำคัญ เหตุผลของความสัมพันธ์ที่ไม่มีนัยสำคัญในกรณีนี้คือเรามีข้อมูลไม่เพียงพอ (n = 6, df ที่เหลือ = 4) ดังนั้น F ควรดูที่การแจกแจงแบบ F ด้วยตัวเศษ 1 df เทียบกับ 4 denomerator 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-square สำหรับข้อมูลใหม่นี้:
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