วิธีการทำ ANCOVA ใน R


17

ฉันต้องการทำการวิเคราะห์ ANCOVA ของข้อมูลที่เกี่ยวข้องกับความหนาแน่นของ epiphytes ของพืช ตอนแรกฉันอยากจะรู้ว่ามีความแตกต่างของความหนาแน่นของพืชระหว่างสองลาดหนึ่ง N และหนึ่ง S แต่ฉันมีข้อมูลอื่น ๆ เช่นระดับความสูงการเปิดกว้างของหลังคาและความสูงของพืชโฮสต์ ฉันรู้ว่าโควาเรียตของฉันจะต้องเป็นเนินเขาทั้งสอง (N และ S) ฉันสร้างแบบจำลองนี้ที่ทำงานใน R และแม้ว่าฉันจะไม่รู้ว่ามันทำงานได้ดีหรือไม่ นอกจากนี้ผมอยากจะรู้ว่าสิ่งที่แตกต่างคือถ้าผมใช้สัญลักษณ์หรือ+*

model1 <- aov(density~slope+altitude+canopy+height)
summary(model1)
model1

3
+ จะคำนวณผลกระทบหลักเท่านั้น * จะประมาณค่าการโต้ตอบระหว่างปัจจัยที่เชื่อมโยงกับ * กรอบการทำงานของ ANCOVA มักจะประมาณเพียงผลกระทบหลักของปัจจัยต่อเนื่อง แต่ปฏิสัมพันธ์ระหว่างปัจจัยที่จัดกลุ่มทั้งหมด
russellpierce

คำตอบ:


14

เครื่องมือพื้นฐานสำหรับสิ่งนี้คือlm; ทราบว่าเป็นเสื้อคลุมสำหรับaovlm

โดยเฉพาะอย่างยิ่งถ้าคุณมีตัวแปรการจัดกลุ่ม (ปัจจัย),และ covariateต่อเนื่องตัวแบบจะเหมาะกับเอฟเฟกต์หลักของแบบจำลอง ANCOVA ในขณะที่จะพอดีกับแบบจำลองที่มีปฏิสัมพันธ์กับ covariate จะใช้สูตรเดียวกันgxy ~ x + gy ~ x * gaov

ให้ความสนใจโดยเฉพาะอย่างยิ่งกับความช่วยเหลือในด้านบนNoteaov

สำหรับ+VS *ครอบคลุม russellpierce มันสวยมาก แต่ผมอยากแนะนำให้คุณดู?lmและ?formulaและส่วนใหญ่โดยเฉพาะอย่างยิ่งในส่วนของ 11.1 คู่มือแนะนำ Rที่มาพร้อมกับ R (หรือคุณสามารถค้นหาได้ออนไลน์ถ้าคุณไม่ได้คิดออกว่า เพื่อค้นหาในคอมพิวเตอร์ของคุณได้อย่างง่ายดายที่สุดนี้เกี่ยวข้องกับการค้นหาเมนูแบบเลื่อนลง "ช่วยเหลือ" ใน R หรือ RStudio)


สมมติว่าฉันมีสองกลุ่มปัจจัยและสอง covariateโดยที่แบบจำลองของฉันคือ y ~ g_1 + g_2 + x_1 + x_2 ทำแบบเดียวกันหรือไม่? ทำค่า F ที่ได้รับจาก x_1 และ x_2 testและตามลำดับหรือไม่? x 1 , x 2 y ฉันj = μ + α ฉัน + η j + x ฉันj 1 γ 1 + x ฉันj 2 γ 2 + ϵ ฉันj γ 1 = 0 γ 2 = 0g1,g2x1,x2
yij=μ+αi+ηj+xij1γ1+xij2γ2+ϵij
γ1=0γ2=0
สายัณห์

ไม่แน่ใจว่าฉันพลาดสิ่งนี้ไปได้อย่างไร ใช่. .... และถ้าคุณต้องการที่จะทดสอบทั้งสองในครั้งเดียวให้พอดีกับทั้งที่มีและไม่มีพวกเขาและผ่านวัตถุที่ติดตั้ง lm ไปยังanova(คุณจะเห็นว่าคุณให้พวกเขาในลำดับที่ไม่ถูกต้องเพราะ SS บางคนจะเป็นลบถ้าคุณทำ )
Glen_b -Reinstate Monica

10

ฉันแนะนำให้รับและอ่านการค้นพบสถิติโดยใช้ R by Field เขามีส่วนที่ดีใน ANCOVA

ในการรัน ANCOVA ใน R ให้โหลดแพ็คเกจต่อไปนี้:

car
compute.es
effects
ggplot2
multcomp
pastecs
WRS

หากคุณกำลังใช้lmหรือaov(ผมใช้aov) ให้แน่ใจว่าคุณตั้งค่าความแตกต่างโดยใช้ "ความแตกต่าง" ฟังก์ชั่นก่อนที่จะทำอย่างใดอย่างหนึ่งหรือaov lmR ใช้ค่าความแตกต่างที่ไม่ใช่มุมฉากโดยค่าเริ่มต้นซึ่งสามารถทำให้ทุกอย่างยุ่งใน ANCOVA หากคุณต้องการตั้งค่าความต่างมุมฉากใช้:

contrasts(dataname$factorvariable)=contr.poly(# of levels, i.e. 3) 

จากนั้นเรียกใช้แบบจำลองของคุณเป็น

model.1=aov(dv~covariate+factorvariable, data=dataname)

เพื่อดูรูปแบบการใช้งาน:

Anova(model.1, type="III") 

ตรวจสอบให้แน่ใจว่าคุณใช้เงินทุน "A" ที่นี่ไม่ได้Anova anovaสิ่งนี้จะให้ผลลัพธ์โดยใช้ type III SS

summary.lm(model.1)จะให้อีกบทสรุปและรวมถึง R-sq เอาท์พุต

posth=glht(model.1, linfct=mcp(factorvariable="Tukey"))  ##gives the post-hoc Tukey analysis
summary(posth) ##shows the output in a nice format.

หากคุณต้องการทดสอบความเป็นเนื้อเดียวกันของความลาดชันการถดถอยคุณสามารถรวมคำศัพท์ที่ใช้สำหรับ IV และ covariate นั่นจะเป็น:

model=aov(dv~covariate+IV+covariate:IV, data=dataname)

หากคำที่ใช้ในการโต้ตอบนั้นมีความสำคัญคุณจะไม่ได้รับความเป็นเนื้อเดียวกัน


ทำไมความแตกต่างที่ไม่เป็นฉากกันทำให้ทุกอย่างยุ่งเหยิง?
tintinthong

1
เพื่อตอบคำถามข้างต้นเกี่ยวกับ "ทำไมความแตกต่างระหว่างมุมฉากจึงทำให้ทุกอย่างยุ่ง" คำตอบก็คือค่าเริ่มต้นของ R เป็น non-orthogonal (เช่นความแตกต่างระหว่างค่าเฉลี่ย) ซึ่งอาจทำให้เกิดปัญหาหากคุณต้องการเห็นการมีส่วนร่วมของ IV แต่ละอันแยกกัน เมื่อเราระบุความแตกต่างมุมฉากเราจะบอก R ว่าเราต้องการให้ SS สำหรับ IV ได้รับการแบ่งพาร์ติชันอย่างสมบูรณ์และไม่ทับซ้อนกัน ด้วยวิธีนี้เราสามารถเห็นความผันแปรที่เกิดจากตัวทำนายแต่ละตัวได้อย่างชัดเจนและชัดเจน หากคุณไม่ได้ระบุไว้ R จะใช้ค่าเริ่มต้นเป็นวิธีที่มีความคมชัดมากกว่า

2
ทำไมความสนใจในประเภท III SS?
Frank Harrell

4

นี่คือเอกสารประกอบที่สมบูรณ์http://goo.gl/yxUZ1Rของขั้นตอนที่แนะนำโดย @Butorovich นอกจากนี้การสังเกตของฉันคือเมื่อ covariate เป็นเลขฐานสองโดยใช้การสรุป (lm.object) จะให้ค่าประมาณ IV เหมือนกับที่สร้างโดย Anova (lm.object, type = "III")


1
ไม่ชัดเจนว่าควรจะเป็นคำตอบ ใช่ไหม? ถ้าเป็นเช่นนั้นโปรดแก้ไขเพื่อชี้แจง หากเป็นคำถามกรุณาถามโดยคลิกASK QUESTIONที่ด้านบนและถามที่นั่น จากนั้นเราสามารถช่วยคุณได้อย่างเหมาะสม
gung - Reinstate Monica

ตกลง ข้อความได้รับการแก้ไขเป็นคำตอบ (เสริม) ก่อนหน้านี้
XX

3

เราใช้การวิเคราะห์การถดถอยเพื่อสร้างแบบจำลองที่อธิบายถึงผลกระทบของการเปลี่ยนแปลงในตัวแปรทำนายที่มีต่อตัวแปรตอบกลับ บางครั้งถ้าเรามีตัวแปรเด็ดขาดที่มีค่าเช่นใช่ / ไม่ใช่หรือชาย / หญิงเป็นต้นการวิเคราะห์การถดถอยอย่างง่ายให้ผลลัพธ์หลายค่าสำหรับแต่ละตัวแปรของตัวแปรเด็ดขาด ในสถานการณ์ดังกล่าวเราสามารถศึกษาผลกระทบของตัวแปรเด็ดขาดโดยใช้มันพร้อมกับตัวแปรทำนายและเปรียบเทียบสายการถดถอยสำหรับแต่ละระดับของตัวแปรเด็ดขาด การวิเคราะห์เช่นนี้เรียกว่าการวิเคราะห์ความแปรปรวนร่วมหรือที่เรียกว่า ANCOVA

ตัวอย่าง
พิจารณาRชุดข้อมูลในmtcarsตัว ในนั้นเราสังเกตว่าสนามamแสดงประเภทของการส่ง (อัตโนมัติหรือด้วยตนเอง) มันเป็นตัวแปรเด็ดขาดที่มีค่า 0 และ 1 ไมล์ต่อแกลลอนค่า ( mpg) ของรถยนต์ยังสามารถขึ้นอยู่กับมันนอกเหนือจากค่าพลังม้า ( hp) เราศึกษาผลกระทบของค่าของamบนถดถอยระหว่างและmpg hpมันทำโดยใช้aov()ฟังก์ชั่นตามด้วยanova()ฟังก์ชั่นเพื่อเปรียบเทียบการถดถอยหลาย ๆ

การป้อนข้อมูล
สร้างกรอบข้อมูลที่มีเขตข้อมูลmpg, hpและจากชุดข้อมูลam mtcarsที่นี่เรารับmpgเป็นตัวแปรตอบสนองhpเป็นตัวแปรทำนายและamเป็นตัวแปรเด็ดขาด

input <- mtcars[,c("am","mpg","hp")]
head(input)

เมื่อเรารันโค้ดด้านบนมันจะสร้างผลลัพธ์ดังต่อไปนี้:

                  am  mpg  hp
Mazda RX4          1 21.0 110
Mazda RX4 Wag      1 21.0 110
Datsun 710         1 22.8  93
Hornet 4 Drive     0 21.4 110
Hornet Sportabout  0 18.7 175
Valiant            0 18.1 105

ANCOVA วิเคราะห์
เราสร้างการซักแบบการถดถอยhpเป็นตัวแปรทำนายและmpgเป็นตัวแปรตอบสนองโดยคำนึงถึงการมีปฏิสัมพันธ์ระหว่างและamhp

แบบจำลองที่มีปฏิสัมพันธ์ระหว่างตัวแปรเด็ดขาดและตัวแปรตัวทำนาย

สร้างแบบจำลองการถดถอย 1

result1 <- aov(mpg~hp*am,data=mtcars)
summary(result1)

เมื่อเรารันโค้ดด้านบนมันจะสร้างผลลัพธ์ดังต่อไปนี้:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4  77.391 1.50e-09 ***
am           1  202.2   202.2  23.072 4.75e-05 ***
hp:am        1    0.0     0.0   0.001    0.981    
Residuals   28  245.4     8.8                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

ผลลัพธ์นี้แสดงให้เห็นว่าทั้งพลังม้าและประเภทเกียร์มีผลกระทบอย่างมีนัยสำคัญต่อไมล์ต่อแกลลอนเนื่องจากค่า p ในทั้งสองกรณีน้อยกว่า 0.05 แต่ปฏิสัมพันธ์ระหว่างตัวแปรทั้งสองนี้ไม่มีนัยสำคัญเนื่องจากค่า p มีค่ามากกว่า 0.05

ตัวแบบที่ไม่มีปฏิสัมพันธ์ระหว่างตัวแปรเด็ดขาดและตัวแปรตัวทำนาย

สร้างแบบจำลองการถดถอย 2

result2 <- aov(mpg~hp+am,data=mtcars)
summary(result2)

เมื่อเรารันโค้ดด้านบนมันจะสร้างผลลัพธ์ดังต่อไปนี้:

            Df Sum Sq Mean Sq F value   Pr(>F)    
hp           1  678.4   678.4   80.15 7.63e-10 ***
am           1  202.2   202.2   23.89 3.46e-05 ***
Residuals   29  245.4     8.5                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

ผลลัพธ์นี้แสดงให้เห็นว่าทั้งพลังม้าและประเภทเกียร์มีผลกระทบอย่างมีนัยสำคัญต่อไมล์ต่อแกลลอนเนื่องจากค่า p ในทั้งสองกรณีน้อยกว่า 0.05

การเปรียบเทียบสองโมเดล
ตอนนี้เราสามารถเปรียบเทียบทั้งสองโมเดลเพื่อสรุปว่าปฏิสัมพันธ์ของตัวแปรนั้นไม่มีนัยสำคัญหรือไม่ สำหรับสิ่งนี้เราใช้anova()ฟังก์ชั่น

 anova(result1,result2)

 Model 1: mpg ~ hp * am
 Model 2: mpg ~ hp + am
   Res.Df    RSS Df  Sum of Sq     F Pr(>F)
 1     28 245.43                           
 2     29 245.44 -1 -0.0052515 6e-04 0.9806

เนื่องจากค่า p มากกว่า 0.05 เราจึงสรุปได้ว่าการทำงานร่วมกันระหว่างพลังม้าและประเภทการส่งสัญญาณไม่สำคัญ ดังนั้นระยะไมล์ต่อแกลลอนจะขึ้นอยู่กับลักษณะคล้ายกันกับกำลังของรถในโหมดเกียร์อัตโนมัติและเกียร์ธรรมดา


ซึ่งมาก่อนคำตอบนี้หรือโพสต์นี้ในบทเรียนชี้? tutorialspoint.com/r/r_analysis_of_covariance.htm คำตอบนี้ควรถูกลบในฐานะผู้ลอกเลียนแบบหรือไม่? หรือแบบฝึกหัดชี้ให้เห็นเพียงแค่คัดลอกจากที่นี่?
จอห์น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.