Tip III SS ANOVA R'de kontrast kodları ile nasıl bir kişi yapılır?


26

Lütfen birinin denekler arasında -3, -1, 1, 3 kontrastlı ANOVA yapmasına izin veren R kodu verin. Böyle bir analiz için uygun Kareler Toplamı (SS) türüyle ilgili bir tartışma olduğunu anladım. Ancak SAS ve SPSS'de kullanılan varsayılan SS tipi (Tip III) bölgemde standart olarak kabul edilmektedir. Bu nedenle, bu analizin sonuçlarının, bu istatistik programları tarafından oluşturulanlarla mükemmel şekilde eşleşmesini istiyorum. Bir cevabı kabul etmek için doğrudan aov () çağrısı yapmalısınız, fakat diğer cevaplar oylanabilir (özellikle anlaşılması / kullanılması kolay ise).

sample.data <- data.frame(IV=rep(1:4,each=20),DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))

Düzenleme: Lütfen talep ettiğim kontrastın basit bir doğrusal veya polinom kontrastı olmadığını, teorik bir tahmin ile elde edilen bir kontrast olduğunu, yani Rosenthal ve Rosnow tarafından tartışılan kontrastların türünü not edin.


5
Tür III toplamına ihtiyacınız olduğunu biliyorum, ancak bu ( stats.ox.ac.uk/pub/MASS3/Exegeses.pdf ) makalesi iyi bir okuma. Bazı ilginç noktaları göstermektedir.
suncoolsu

Sorunuzla ilgili olarak aşağıdaki tartışma ile ilgilenebilirsiniz: stats.stackexchange.com/questions/60362/… ANOVA tip I, II ve III arasındaki seçim göründüğü kadar kolay değildir.
phx

Sorunuzu, öğrenilen birkaç yanıtı kışkırttığı için faydalı bulduğu için, ancak sorunun temelinin yanlış olduğunu söyleyen yanıtlayıcıyla aynı fikirde olduğunuzu da not aldım. Umarım StaGuy'un, tanımlanmış kontrastların "tip I" tanımı ile tanımlandığını ve diğer tiplerin tartışılmasının sadece kısmi regresyon istatistiklerini değerlendirirken anlamlı hale geldiğini ve muhtemelen otomatik olarak "makineyi sürerken" bırakmasının otomatik yöntemlerle yapılmasında önem kazandığını söyleyerek konumunu özetlemeliyim.
DW 'de

@DWin: Seni tamamen takip ettiğimden emin değilim. Kişi “makinenin sürüş yapmasına” izin vermeden yasal olarak diğer SS türlerini kullanabilir (en azından bu ifadeyi anladığım gibi). Burada biraz paslanmış olabilirim, ancak eğer hafıza işe yararsa, kısmi regresyon kullanılmadığında diğer türler de ilgili olabilir. Örneğin, Tip III SS, etkileşimden ana etkileri kısmi değildir. Tipler arasındaki fark tam olarak orada önemlidir çünkü Tip III kısmi değildir, Tip I ise. Belirtildiği gibi, sorun sadece tek bir kontrast içeriyordu ve bu nedenle SS tipleri arasındaki fark çok fazladı.
russellpierce

Anladığım kadarıyla SAS'ın III. SSS tipini seçmesi için verilen mantığın (ve insanların bu tip III'ün tercih edilmesinin nedeni olduğunu düşünüyor gibi görünüyor) geri ve ileri seçim sürecini daha iyi desteklediğiydi.
DW 'de

Yanıtlar:


22

ANOVA için Tip III kareler toplamı Anova(), araç paketindeki fonksiyondan kolayca elde edilebilir .

Kontrast kodlaması C(), contr.*aile (@nico ile gösterildiği gibi) veya doğrudan contrasts()işlev / argüman kullanılarak birkaç şekilde yapılabilir . Bu, S ile Modern Uygulamalı İstatistik §6.2 (s. 144-151) 'de ayrıntılı olarak açıklanmaktadır ( Springer, 2002, 4. basım). Bunun aov(), işlev için yalnızca bir sarmalayıcı işlevi olduğunu unutmayın lm(). Modelin hata terimini kontrol etmek istediğinde ilginç (ilginç bir tasarımda olduğu gibi), ancak aksi halde her ikisi de aynı sonuçları verir (ve modelinize ne şekilde uyursanız olun, yine de ANOVA veya LM- summary.aovveya ile özetleri gibi summary.lm).

İki çıkışı karşılaştırmak için SPSS'im yok, ancak

> library(car)
> sample.data <- data.frame(IV=factor(rep(1:4,each=20)),
                            DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))
> Anova(lm1 <- lm(DV ~ IV, data=sample.data, 
                  contrasts=list(IV=contr.poly)), type="III")
Anova Table (Type III tests)

Response: DV
            Sum Sq Df F value    Pr(>F)    
(Intercept)  18.08  1  21.815  1.27e-05 ***
IV          567.05  3 228.046 < 2.2e-16 ***
Residuals    62.99 76                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

ilk etapta denemeye değer.

R ve SAS’daki faktör kodlaması hakkında: R, taban çizgisi veya referans seviyesini sözlükbilim sırasındaki birinci seviye olarak görürken, SAS sonuncuyu dikkate alır. Bu nedenle, karşılaştırılabilir sonuçlar elde etmek için contr.SAS()ya kullanmak zorundasınız ya da relevel()R faktörünüzü kullanın.


1
Bu cevabın belirttiğim -3, -1,1,3 kontrastı kullandığını ya da kontrastın 1 df testini sağlayacağını sanmıyorum.
russellpierce

@drknexus Evet, haklısın. Çok hızlı yazdım. Gibi bir şey Anova(lm(DV ~ C(IV, c(-3,-1,1,3),1), data=sample.data), type="III")daha iyi olmalı. Lütfen bu senin için uygunsa bana bildirin.
chl

Teşekkürler! Tamam görünüyor, yarın SPSS'ye göre onaylayacağım ve size geri döneceğim.
russellpierce

1
BTW, Anova kodunu sarmalamak için ez paketine ( cran.r-project.org/web/packages/ez/index.html ) bakın ...
Tal Galili

2
@drknexus: Keşke bir özellik isteği & ez için başvuru sayfası olsaydı ... github.com/mike-lawrence/ez/issues :)
Mike Lawrence

11

Bu biraz kendini terbiye gibi görünebilir (ve sanırım öyledir). Ancak , tam olarak bu tür bir durumla başa çıkabilecek şekilde tasarlanan R için bir CRS paketi hazırladım. Örnek için nasıl çalıştığını İşte:

> sample.data <- data.frame(IV=rep(1:4,each=20),DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))
> sample.aov <- aov(DV ~ factor(IV), data = sample.data)

> library("lsmeans")
> (sample.lsm <- lsmeans(sample.aov, "IV"))
 IV    lsmean        SE df   lower.CL  upper.CL
  1 -3.009669 0.2237448 76 -3.4552957 -2.564043
  2 -3.046072 0.2237448 76 -3.4916980 -2.600445
  3  1.147080 0.2237448 76  0.7014539  1.592707
  4  3.049153 0.2237448 76  2.6035264  3.494779

> contrast(sample.lsm, list(mycon = c(-3,-1,1,3)))
 contrast estimate       SE df t.ratio p.value
 mycon    22.36962 1.000617 76  22.356  <.0001

İsterseniz listede ek kontrastlar belirleyebilirsiniz. Bu örnekte, yerleşik doğrusal polinom kontrastıyla aynı sonuçları elde edersiniz:

> con <- contrast(sample.lsm, "poly")
> con
 contrast   estimate        SE df t.ratio p.value
 linear    22.369618 1.0006172 76  22.356  <.0001
 quadratic  1.938475 0.4474896 76   4.332  <.0001
 cubic     -6.520633 1.0006172 76  -6.517  <.0001

Bunu onaylamak için, "poly"belirtimin poly.lsmc, bu sonuçları üreten, aramaya yönlendirdiğini unutmayın :

> poly.lsmc(1:4)
  linear quadratic cubic
1     -3         1    -1
2     -1        -1     3
3      1        -1    -3
4      3         1     1

Birkaç kontrastın ortak testini yapmak istiyorsanız, testişlevi kullanın joint = TRUE. Örneğin,

> test(con, joint = TRUE)

Bu bir "tip III" testi üretecektir. Aksine car::Anova(), model montaj aşamasında kullanılan kontrast kodlamasına bakılmaksızın doğru şekilde yapacaktır. Bunun nedeni, test edilen doğrusal işlevlerin dolaylı olarak model indirgeme yoluyla doğrudan belirtilmeleridir. Ek bir özellik, test edilen kontrastların lineer olarak bağımlı olduğu bir durumun tespit edilmesi ve doğru test istatistiğinin ve serbestlik derecelerinin üretilmesidir.



7

Kontrastları yaparken, uygun hata terimi bağlamında hücre araçlarının spesifik ve belirtilen lineer bir kombinasyonunu yapıyorsunuz. Dolayısıyla, "SS Tipi" kavramı, kontrastlarla anlamlı değildir. Her kontrast esasında Tip I SS kullanan ilk etkidir. “SS türü”, diğer şartlarla partialled veya hesaplananla ne yapmak zorundadır. Aksine, hiçbir şey parti dışında tutulmaz veya muhasebeleştirilmez. Kontrast tek başına duruyor.


Kesinlikle haklısın.
russellpierce

3

İşyerinizde tip III testlerin kullanılması, bunları kullanmaya devam etmenin en zayıf nedenlerindendir. SAS bu konuda istatistiklere büyük zarar verdi. Yukarıda anlatılan Bill Venables'in tefsiri bu konuda harika bir kaynak. Sadece III tipine hayır deyin; hatalı bir denge nosyonuna dayanır ve dengesiz durumdaki hücrelerin aptalca ağırlığı nedeniyle daha düşük güce sahiptir.

Genel kontrastlar elde etmek ve yaptıklarınızı tanımlayabilmek için daha doğal ve daha az hataya açık bir yöntem, R rmspaketi contrast.rmsişlevi tarafından sağlanır . Kontrastlar çok karmaşık olabilir, ancak kullanıcı için çok basittir, çünkü tahmin değerlerindeki farklılıklar açısından belirtilir. Testler ve eşzamanlı kontrastlar desteklenir. Bu, doğrusal olmayan regresyon etkilerini, doğrusal olmayan etkileşim etkilerini, kısmi zıtlıkları, her türlü şeyi ele alır.


Sizin için her şey yolunda ve iyi diyecek saygın bir kişi olarak sizin için. Diğerleri gözden geçirenlerle aynı fikirde değil. İstatistiklerin yorumlarının farklı olması nedeniyle, yeni halktan prensipte durmasını ve makul olmayan bir maliyete maruz kalmasını istersiniz. Bu (ve benzeri) tepelerin üstündeki zaman payımdan ölen biri olarak şunu söylüyorum. IMO'nun bu önündeki değişim kapı bekçilerinin, yani editörlerin ve hakemlerin sorumluluğundadır.
russellpierce

Veriler konusunda gerçekten iyi olan insanlar geniş bir iş seçeneğine sahiptir ve becerilerine ve görüşlerine saygı duyulan alanlarda çalışma seçeneğine sahip olabilirler.
Frank Harrell

1
... ve şimdi yaptığım şey bu. Ancak bu soruya gelen insanlar sık ​​sık o sınıftan olmayacak. Tıpkı 7 yıl önce olmadığı gibi. Sadece acemiler ve durumları için biraz empati savunuyorum.
russellpierce

2

Araba kütüphanesindeki Anova komutunu deneyin. II türünde varsayılan olarak, type = "III" argümanını kullanın. Örneğin:

library(car)
mod <- lm(conformity ~ fcategory*partner.status, data=Moore, contrasts=list(fcategory=contr.sum, partner.status=contr.sum))
Anova(mod, type="III")

3
Moore'nun araba kütüphanesinde olduğunu biliyorum, ancak örnek veriler verildiğinde, örnek verileri kullanıyorsanız, soru soran kişinin yanıtınızı anlaması daha kolaydır.
russellpierce

0

Ayrıca kendi kendini tanıtan, tam olarak bunun için bir fonksiyon yazdım: https://github.com/samuelfranssens/type3anova

Aşağıdaki gibi yükleyin:

library(devtools)
install_github(samuelfranssens/type3anova)
library(type3anova)

sample.data <- data.frame(IV=rep(1:4,each=20),DV=rep(c(-3,-3,1,3),each=20)+rnorm(80))

type3anova(lm(DV ~ IV, data = sample.data))

Ayrıca carpaketin kurulu olması gerekecektir .


Bunu sorunun karşıt kısmına nasıl uygularsınız?
russellpierce

1
Özür dilerim, soruyu doğru okumamıştım. Benim işlevim sadece tip III Anova'yı gerçekleştirmeyi kolaylaştıracak. Yukarıdaki StatGuy gibi, belirli kontrastları test ederken SS'in nerede ortaya çıktığını görmüyorum.
sam_f
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.