Cách thực hiện ANCOVA trong R


17

Tôi muốn thực hiện phân tích ANCOVA về dữ liệu liên quan đến mật độ biểu sinh thực vật. Đầu tiên, tôi muốn biết liệu có sự khác biệt về mật độ thực vật giữa hai độ dốc, một N và một S hay không, nhưng tôi có các dữ liệu khác như độ cao, độ mở tán và chiều cao của cây chủ. Tôi biết rằng đồng biến của tôi sẽ phải là hai sườn (N và S). Tôi đã xây dựng mô hình này chạy trong R và mặc dù tôi không biết nó có hoạt động tốt không. Ngoài ra tôi muốn biết sự khác biệt là gì nếu tôi sử dụng biểu tượng +hoặc *.

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

3
+ sẽ chỉ tính các hiệu ứng chính, * sẽ ước tính tương tác giữa các yếu tố được kết nối với *. Các khung ANCOVA thường chỉ ước tính tác động chính của yếu tố liên tục, nhưng tương tác giữa tất cả các yếu tố được nhóm.
russellpierce

Câu trả lời:


14

Công cụ cơ bản cho việc này là lm; lưu ý đó aovlà một gói cho lm.

Cụ thể, nếu bạn có một số biến nhóm (yếu tố), g và biến số liên tục x , mô hình y ~ x + gsẽ phù hợp với mô hình ANCOVA hiệu ứng chính, trong khi y ~ x * gsẽ phù hợp với mô hình bao gồm tương tác với hiệp phương sai. aovsẽ có công thức tương tự.

Đặc biệt chú ý đến Notesự giúp đỡ trên aov.

Đối với +vs *, russellpierce bao gồm khá nhiều, nhưng tôi khuyên bạn nên xem ?lm?formulađặc biệt là phần 11.1 của hướng dẫn Giới thiệu về R đi kèm với R (hoặc bạn có thể tìm thấy nó trực tuyến nếu bạn chưa tìm ra cách để tìm thấy nó trên máy tính của bạn, một cách dễ dàng nhất, điều này liên quan đến việc tìm menu kéo xuống "Trợ giúp" trong R hoặc RStudio).


giả sử tôi có hai yếu tố nhóm và hai hiệp phương thức , với mô hình của tôi là Y ~ g_1 + g_2 + x_1 + x_2 có thực hiện cùng một mẹo không? Các giá trị F thu được so với x_1 và x_2 test và tương ứng không? g1,g2x1,x2
yTôij= =μ+αTôi+ηj+xTôij1γ1+xTôij2γ2+εTôij
γ1= =0γ2= =0
Sayan

Không chắc chắn làm thế nào tôi bỏ lỡ điều này. Đúng. .... và nếu bạn muốn kiểm tra cả hai cùng một lúc, phù hợp cả có và không có chúng và chuyển các đối tượng lm được trang bị cho anova(bạn sẽ sớm thấy nếu bạn đưa chúng theo thứ tự sai vì một số SS sẽ âm tính nếu bạn làm vậy )
Glen_b -Reinstate Monica

10

Tôi khuyên bạn nên lấy và đọc Khám phá Thống kê bằng R by Field. Anh ấy có một phần tốt đẹp trên ANCOVA.

Để chạy ANCOVA trong R tải các gói sau:

car
compute.es
effects
ggplot2
multcomp
pastecs
WRS

Nếu bạn đang sử dụng lmhoặc aov(tôi sử dụng aov), hãy đảm bảo rằng bạn đặt độ tương phản bằng cách sử dụng chức năng "tương phản" trước khi thực hiện aovhoặc lm. R sử dụng độ tương phản không trực giao theo mặc định có thể làm rối tung mọi thứ trong ANCOVA. Nếu bạn muốn đặt độ tương phản trực giao, hãy sử dụng:

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

sau đó chạy mô hình của bạn như

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

Để xem mô hình sử dụng:

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

Hãy chắc chắn rằng bạn sử dụng vốn "A" Anovaở đây và không anova. Điều này sẽ cho kết quả bằng cách sử dụng SS loại III.

summary.lm(model.1)sẽ đưa ra một bản tóm tắt khác và bao gồm R-sq. đầu ra.

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

Nếu bạn muốn kiểm tra tính đồng nhất của độ dốc hồi quy, bạn cũng có thể bao gồm một thuật ngữ tương tác cho IV và hiệp phương sai. Đó sẽ là:

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

Nếu thuật ngữ tương tác là đáng kể thì bạn không có tính đồng nhất.


Tại sao sự tương phản không trực giao làm rối tung mọi thứ?
tintinthong

1
Để trả lời câu hỏi trên về "tại sao sự tương phản không trực giao làm rối tung mọi thứ". Câu trả lời là R mặc định là không trực giao (nghĩa là sự khác biệt giữa các phương tiện) có thể gây ra vấn đề nếu bạn muốn xem sự đóng góp của từng IV riêng biệt. Khi chúng tôi chỉ định độ tương phản trực giao, chúng tôi nói với R rằng chúng tôi muốn SS cho IV được phân vùng hoàn toàn và không chồng chéo. Theo cách này, chúng ta có thể thấy các biến thể được quy cho mỗi dự đoán một cách rõ ràng và rõ ràng. Nếu bạn không chỉ định, R mặc định theo cách tiếp cận tự do hơn với độ tương phản.

2
Tại sao quan tâm đến loại III SS?
Frank Harrell

4

Dưới đây là tài liệu bổ sung http://goo.gl/yxUZ1R của quy trình được đề xuất bởi @Butorovich. Ngoài ra, quan sát của tôi là khi hiệp phương sai là nhị phân, sử dụng tóm tắt (lm.object) sẽ đưa ra ước tính IV giống như được tạo bởi Anova (lm.object, type = "III").


1
Không rõ ràng rằng đây là một câu trả lời. Là nó? Nếu vậy, xin vui lòng chỉnh sửa để làm rõ. Nếu đó là một câu hỏi, xin vui lòng hỏi bằng cách nhấp vào ASK QUESTIONở trên cùng và hỏi nó ở đó. Sau đó chúng tôi có thể giúp bạn đúng cách.
gung - Phục hồi Monica

Đã đồng ý. Thông điệp đã được sửa đổi như một câu trả lời (bổ sung) cho câu trả lời trước đó.
XX

3

Chúng tôi sử dụng phân tích hồi quy để tạo các mô hình mô tả ảnh hưởng của biến đổi trong các biến dự đoán đến biến phản ứng. Đôi khi nếu chúng ta có một biến phân loại với các giá trị như Có / Không hoặc Nam / Nữ, v.v. thì phân tích hồi quy đơn giản cho nhiều kết quả cho mỗi giá trị của biến phân loại. Trong kịch bản như vậy, chúng ta có thể nghiên cứu ảnh hưởng của biến phân loại bằng cách sử dụng nó cùng với biến dự đoán và so sánh các đường hồi quy cho từng cấp của biến phân loại. Một phân tích như vậy được gọi là Phân tích hiệp phương sai còn được gọi là ANCOVA.

Ví dụ
Xem xét Rtập dữ liệu tích hợp mtcars. Trong đó chúng tôi quan sát rằng trường amđại diện cho loại truyền (tự động hoặc thủ công). Nó là một biến phân loại với các giá trị 0 và 1. dặm một gallon giá trị ( mpg) của một chiếc xe cũng có thể phụ thuộc vào nó bên cạnh những giá trị của mã lực ( hp). Chúng tôi nghiên cứu ảnh hưởng của giá trị của amhồi quy giữa mpghp. Nó được thực hiện bằng cách sử dụng aov()hàm theo sau là anova()hàm để so sánh nhiều hồi quy.

Dữ liệu đầu vào
Tạo một khung dữ liệu chứa các lĩnh vực mpg, hpamtừ tập dữ liệu mtcars. Ở đây chúng tôi lấy mpglàm biến trả lời, hplàm biến dự đoán và amlà biến phân loại.

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

Khi chúng tôi thực thi mã trên, nó tạo ra kết quả như sau:

                  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

Phân tích ANCOVA
Chúng tôi tạo ra một mô hình hồi quy lấy hplàm biến dự báo và mpglà biến trả lời có tính đến sự tương tác giữa amhp.

Mô hình với sự tương tác giữa biến phân loại và biến dự đoán

Tạo mô hình hồi quy1

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

Khi chúng tôi thực thi mã trên, nó tạo ra kết quả như sau:

            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

Kết quả này cho thấy cả hai mã lực và loại truyền có ảnh hưởng quan trọng trên dặm cho mỗi gallon như p-giá trị trong cả hai trường hợp là nhỏ hơn 0,05. Nhưng sự tương tác giữa hai biến này không đáng kể vì giá trị p lớn hơn 0,05.

Mô hình không có tương tác giữa biến phân loại và biến dự đoán

Tạo mô hình hồi quy2

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

Khi chúng tôi thực thi mã trên, nó tạo ra kết quả như sau:

            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

Kết quả này cho thấy cả hai mã lực và loại truyền có ảnh hưởng quan trọng trên dặm cho mỗi gallon như p-giá trị trong cả hai trường hợp là nhỏ hơn 0,05.

So sánh hai mô hình
Bây giờ chúng ta có thể so sánh hai mô hình để kết luận nếu sự tương tác của các biến thực sự không đáng kể. Đối với điều này, chúng tôi sử dụng anova()chức năng.

 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

Vì giá trị p lớn hơn 0,05, chúng tôi kết luận rằng sự tương tác giữa công suất ngựa và loại truyền tải là không đáng kể. Vì vậy, số dặm trên mỗi gallon sẽ phụ thuộc một cách tương tự vào sức ngựa của xe ở cả chế độ truyền tự động và bằng tay.


Vì vậy, cái nào đến trước, câu trả lời này hay bài đăng này trên điểm hướng dẫn? guidespoint.com/r/r_analysis_of_covariance.htm . Câu trả lời này có nên bị xóa là đạo văn? Hoặc hướng dẫn chỉ sao chép từ đây?
Giăng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.