Cara melakukan ANCOVA di R

17

Saya ingin melakukan analisis data ANCOVA mengenai kepadatan epifit tanaman. Pada awalnya, saya ingin tahu apakah ada perbedaan dalam kepadatan tanaman antara dua lereng, satu N dan satu S, tetapi saya memiliki data lain seperti ketinggian, keterbukaan kanopi dan ketinggian tanaman inang. Saya tahu bahwa kovariat saya haruslah dua lereng (N dan S). Saya membangun model ini yang berjalan di R dan meskipun saya tidak tahu apakah itu berkinerja baik. Saya juga ingin tahu apa bedanya jika saya menggunakan simbol +atau *.

model1 <- aov(density~slope+altitude+canopy+height)
summary(model1)
model1
Pauloc
sumber
3
+ akan menghitung efek utama saja, * akan memperkirakan interaksi antara faktor-faktor yang terhubung dengan *. Kerangka kerja ANCOVA biasanya memperkirakan hanya efek utama dari faktor kontinu, tetapi interaksi antara semua faktor dikelompokkan.
russellpierce

Jawaban:

14

Alat dasar untuk ini adalah lm; perhatikan itu aovadalah pembungkus untuk lm.

Secara khusus, jika Anda memiliki beberapa variabel pengelompokan (faktor), g , dan kovariat x kontinu , model y ~ x + gakan cocok dengan efek utama model ANCOVA, sementara y ~ x * gakan sesuai dengan model yang mencakup interaksi dengan kovariat. aovakan mengambil formula yang sama.

Berikan perhatian khusus Notepada bantuan pada aov.

Adapun +vs *, russellpierce cukup banyak membahasnya, tapi saya sarankan Anda melihat ?lmdan ?formuladan terutama bagian 11.1 dari manual Pengantar R yang datang dengan R (atau Anda dapat menemukannya online jika Anda belum mengetahui caranya untuk menemukannya di komputer Anda; paling mudah, ini melibatkan menemukan menu tarik "Bantuan" di R atau RStudio).

Glen_b -Reinstate Monica
sumber
misalkan saya mempunyai dua faktor kelompok , dan dua kovariat x 1 , x 2 , dengan model saya y i j = μ + α i + η j + x i j 1 γ 1 + x i j 2 γ 2 + ϵ i j Apakah y ~ g_1 + g_2 + x_1 + x_2 melakukan trik yang sama? Apakah nilai F yang diperoleh terhadap uji x_1 dan x_2 γ 1 = 0 dan γg1,g2x1,x2
ysayaj=μ+αsaya+ηj+xsayaj1γ1+xsayaj2γ2+εsayaj
γ1=0 masing-masing? γ2=0
Sayan
Tidak yakin bagaimana saya melewatkan ini. Iya. .... dan jika Anda ingin menguji keduanya sekaligus, paskan dengan dan tanpa keduanya dan berikan objek lm yang pas ke anova(Anda akan segera melihat apakah Anda memberikannya dengan urutan yang salah karena beberapa SS akan negatif jika Anda melakukannya). )
Glen_b -Reinstate Monica
10

Saya sarankan mendapatkan dan membaca Statistik Penemuan menggunakan R oleh Bidang. Dia memiliki bagian yang bagus tentang ANCOVA.

Untuk menjalankan ANCOVA di R, muat paket berikut:

car
compute.es
effects
ggplot2
multcomp
pastecs
WRS

Jika Anda menggunakan lmatau aov(saya menggunakan aov) pastikan bahwa Anda mengatur kontras menggunakan fungsi "kontras" sebelum melakukan salah satu aovatau lm. R menggunakan kontras non-ortogonal secara default yang dapat mengacaukan semuanya dalam ANCOVA. Jika Anda ingin mengatur kontras ortogonal, gunakan:

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

kemudian jalankan model Anda sebagai

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

Untuk melihat model, gunakan:

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

Pastikan Anda menggunakan modal "A" di Anovasini dan tidak anova. Ini akan memberikan hasil menggunakan tipe III SS.

summary.lm(model.1)akan memberikan ringkasan lain dan menyertakan R-sq. keluaran.

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

Jika Anda ingin menguji homogenitas lereng regresi, Anda juga dapat memasukkan istilah interaksi untuk IV dan kovariat. Itu akan menjadi:

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

Jika istilah interaksi signifikan maka Anda tidak memiliki homogenitas.

Dan Butorovich
sumber
Mengapa kontras non-ortogonal mengacaukan semuanya?
tintinthong
1
Untuk menjawab pertanyaan di atas tentang "mengapa perbedaan non-ortogonal mengacaukan segalanya". Jawabannya adalah R default ke non-ortogonal (yaitu perbedaan antara rata-rata) yang dapat menyebabkan masalah jika Anda ingin melihat kontribusi masing-masing IV secara terpisah. Ketika kami menentukan kontras ortogonal, kami memberi tahu R bahwa kami ingin SS untuk IV sepenuhnya dipartisi dan tidak tumpang tindih. Dengan cara ini kita dapat melihat variasi yang dikaitkan dengan masing-masing prediktor dengan bersih dan jelas. Jika Anda tidak menentukan, R default ke pendekatan yang lebih liberal untuk kontras.
2
Mengapa tertarik dengan tipe III SS?
Frank Harrell
4

Berikut ini adalah dokumentasi pelengkap http://goo.gl/yxUZ1R tentang prosedur yang disarankan oleh @Butorovich. Selain itu, pengamatan saya adalah bahwa ketika kovariat adalah biner, menggunakan ringkasan (lm.object) akan memberikan estimasi IV yang sama seperti yang dihasilkan oleh Anova (lm.object, type = "III").

XX
sumber
1
Tidak jelas apakah ini seharusnya menjadi jawaban. Apakah itu? Jika demikian, harap edit untuk menjelaskan. Jika itu pertanyaan, silakan tanyakan dengan mengklik ASK QUESTIONdi bagian atas & menanyakannya di sana. Maka kami dapat membantu Anda dengan baik.
gung - Reinstate Monica
Sepakat. Pesan telah direvisi sebagai jawaban (pelengkap) dari jawaban sebelumnya.
XX
3

Kami menggunakan analisis Regresi untuk membuat model yang menggambarkan pengaruh variasi dalam variabel prediktor pada variabel respons. Kadang-kadang jika kita memiliki variabel kategori dengan nilai-nilai seperti Ya / Tidak atau Pria / Wanita dll. Analisis regresi sederhana memberikan beberapa hasil untuk setiap nilai dari variabel kategori. Dalam skenario seperti itu, kita dapat mempelajari pengaruh variabel kategori dengan menggunakannya bersama dengan variabel prediktor dan membandingkan garis regresi untuk setiap tingkat variabel kategori. Analisis semacam ini disebut sebagai Analisis Kovarian juga disebut sebagai ANCOVA.

Contoh
Pertimbangkan Rkumpulan data bawaan mtcars. Di dalamnya kami mengamati bahwa bidang tersebut ammewakili jenis transmisi (otomatis atau manual). Ini adalah variabel kategori dengan nilai 0 dan 1. Nilai mil per galon ( mpg) mobil juga dapat bergantung padanya di samping nilai tenaga kuda ( hp). Kami mempelajari pengaruh nilai ampada regresi antara mpgdan hp. Ini dilakukan dengan menggunakan aov()fungsi diikuti oleh anova()fungsi untuk membandingkan regresi berganda.

Input Data
Buat bingkai data yang berisi bidang mpg, hpdan amdari kumpulan data mtcars. Di sini kita ambil mpgsebagai variabel respon, hpsebagai variabel prediktor dan amsebagai variabel kategorikal.

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

Ketika kami mengeksekusi kode di atas, itu menghasilkan hasil sebagai berikut:

                  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

Analisis ANCOVA
Kami membuat model regresi dengan mengambil hpsebagai variabel prediktor dan mpgsebagai variabel respon dengan mempertimbangkan interaksi antara amdan hp.

Model dengan interaksi antara variabel kategori dan variabel prediktor

Buat model regresi1

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

Ketika kami mengeksekusi kode di atas, itu menghasilkan hasil sebagai berikut:

            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

Hasil ini menunjukkan bahwa tenaga kuda dan tipe transmisi memiliki efek yang signifikan pada mil per galon karena nilai-p dalam kedua kasus kurang dari 0,05. Tetapi interaksi antara kedua variabel ini tidak signifikan karena p-value lebih dari 0,05.

Model tanpa interaksi antara variabel kategori dan variabel prediktor

Buat model regresi2

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

Ketika kami mengeksekusi kode di atas, itu menghasilkan hasil sebagai berikut:

            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

Hasil ini menunjukkan bahwa tenaga kuda dan tipe transmisi memiliki efek yang signifikan pada mil per galon karena nilai-p dalam kedua kasus kurang dari 0,05.

Membandingkan dua model
Sekarang kita dapat membandingkan dua model untuk menyimpulkan jika interaksi variabel benar-benar tidak signifikan. Untuk ini kami menggunakan anova()fungsi.

 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

Karena nilai p lebih besar dari 0,05, kami menyimpulkan bahwa interaksi antara tenaga kuda dan jenis transmisi tidak signifikan. Jadi jarak tempuh per galon akan tergantung pada cara yang sama pada tenaga kuda mobil dalam mode transmisi otomatis dan manual.

pengguna101834
sumber
Jadi mana yang lebih dulu, jawaban ini atau posting ini pada titik tutorial? tutorialspoint.com/r/r_analysis_of_covariance.htm . Haruskah jawaban ini dihapus sebagai plagiarisme? Atau apakah tutorial menunjuk hanya menyalin dari sini?
John