การทดสอบสมมติฐานเชิงบรรทัดฐานสำหรับมาตรการ anova ซ้ำแล้วซ้ำอีก? (ใน R)


11

ดังนั้นสมมติว่ามีจุดหนึ่งในการทดสอบเกณฑ์ปกติของโนวา (ดู1และ2 )

มันสามารถทดสอบใน R ได้อย่างไร?

ฉันคาดหวังว่าจะทำสิ่งที่ชอบ:

## From Venables and Ripley (2002) p.165.
utils::data(npk, package="MASS")
npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)
residuals(npk.aovE)
qqnorm(residuals(npk.aov))

ซึ่งไม่ได้ผลเนื่องจาก "ส่วนที่เหลือ" ไม่มีวิธี (หรือคาดการณ์สำหรับเรื่องนั้น) สำหรับกรณีของมาตรการโนวาซ้ำ ๆ

ดังนั้นสิ่งที่ควรทำในกรณีนี้?

สามารถดึงสารตกค้างจากแบบจำลองแบบเดียวกันโดยไม่มีเงื่อนไขข้อผิดพลาดได้หรือไม่? ฉันไม่คุ้นเคยกับวรรณกรรมเพียงพอที่จะรู้ว่าสิ่งนี้ถูกต้องหรือไม่ขอบคุณล่วงหน้าสำหรับคำแนะนำใด ๆ

คำตอบ:


5

คุณอาจไม่ได้รับการตอบกลับอย่างง่าย ๆresiduals(npk.aovE)แต่นั่นไม่ได้หมายความว่าไม่มีสารตกค้างในวัตถุนั้น ทำstrและดูว่าในระดับยังคงมีเหลืออยู่ ฉันคิดว่าคุณสนใจในระดับ "ภายใน"

> residuals(npk.aovE$Within)
          7           8           9          10          11          12 
 4.68058815  2.84725482  1.56432584 -5.46900749 -1.16900749 -3.90234083 
         13          14          15          16          17          18 
 5.08903669  1.28903669  0.35570336 -3.27762998 -4.19422371  1.80577629 
         19          20          21          22          23          24 
-3.12755705  0.03910962  2.60396981  1.13730314  2.77063648  4.63730314 

การฝึกอบรมและการฝึกฝนของฉันไม่ได้ใช้การทดสอบแบบปกติ แต่ใช้การแปลง QQ และการทดสอบแบบขนานด้วยวิธีที่มีประสิทธิภาพ


ขอบคุณ Dwin ฉันสงสัยว่าควรจะสำรวจส่วนที่เหลือประเภทใด (นอกเหนือจากภายใน) ไชโย, Tal
Tal Galili

npk.aovE เป็นรายการขององค์ประกอบสามอย่าง สองรายการแรกคือการประมาณค่าพารามิเตอร์และไม่ได้กำหนดเกณฑ์ปกติสำหรับพวกเขาดังนั้นจึงไม่น่าที่จะทดสอบสิ่งใดนอกจาก $ Inside names(npk.aovE)ส่งคืน `[1]" (สกัดกั้น) "" บล็อก "" ภายใน "`
DWIN

@Dwin คุณสามารถตรวจสอบวิธีการสุดท้ายที่ trev โพสต์ (คำตอบสุดท้าย)? มันใช้การเรียงลำดับของการประมาณการในการคำนวณที่เหลือ มันเป็นวิธีที่ง่ายที่สุดสำหรับฉันในการพล็อตกราฟที่มีความแปรปรวนร่วมกันระหว่างกลุ่ม
toto_tico

@Dwin, qqplot และดูเหมือนว่าจะยอมรับเฉพาะ lm ไม่ใช่ aov
toto_tico

2

อีกทางเลือกหนึ่งคือการใช้lmeฟังก์ชั่นของnlmeแพ็กเกจ (แล้วส่งต่อโมเดลที่ได้รับไปanova) คุณสามารถใช้residualsในการส่งออก


1

ฉันคิดว่าข้อสันนิษฐานเชิงบรรทัดฐานสามารถประเมินได้สำหรับแต่ละมาตรการซ้ำก่อนดำเนินการวิเคราะห์ ฉันจะปรับแต่งดาต้าเฟรมอีกครั้งเพื่อให้แต่ละคอลัมน์สอดคล้องกับการวัดซ้ำแล้วจึงทำการ shapiro.test กับแต่ละคอลัมน์เหล่านั้น

apply(cast(melt(npk,measure.vars="yield"), ...~N+P+K)[-c(1:2)],2,function(x) shapiro.test(x)$p.value)

ขอบคุณ gd047 - คำถามคือเราจะทำอย่างไรเมื่อเรามีสถานการณ์ที่ซับซ้อนมากขึ้นของ aov (ผลผลิต ~ N P K + ข้อผิดพลาด (บล็อก / (N + K)), npk) การทดสอบที่คุณเสนอจะทำงานอย่างไร
Tal Galili

คุณพอจะอธิบายความแตกต่างระหว่างสถานการณ์ได้หรือไม่? น่าเสียดายที่ฉันไม่คุ้นเคยกับการใช้คำว่า Error ในแบบจำลอง (โดยวิธีนี้คุณสามารถแนะนำหนังสือดีๆเกี่ยวกับเรื่องนี้ได้หรือไม่) สิ่งที่ฉันเพิ่งเสนอก็คือวิธี SPSS ในการตรวจสอบข้อสันนิษฐานทั่วไปที่ฉันได้เรียนรู้ ดูนี่เป็นตัวอย่าง goo.gl/p45Bx
George Dontas

สวัสดี gd047 ขอบคุณสำหรับลิงค์ สิ่งที่ฉันรู้เกี่ยวกับโมเดลเหล่านี้ล้วนเชื่อมโยงกับที่นี่: r-statistics.com/2010/04/… ถ้าคุณจะได้รู้จักแหล่งข้อมูลอื่น ๆ - ฉันชอบที่จะรู้เกี่ยวกับพวกเขา ไชโย, Tal
Tal Galili

1

Venables และ Ripley อธิบายวิธีการวินิจฉัยที่เหลือสำหรับการออกแบบมาตรการซ้ำ ๆ ในภายหลังในหนังสือของพวกเขา (หน้า 284) ในส่วนของการสุ่มและผสมเอฟเฟกต์

ฟังก์ชั่นที่เหลือ (หรือที่เหลือ) ถูกนำมาใช้สำหรับผลลัพธ์ aov สำหรับแต่ละชั้น:

จากตัวอย่างของพวกเขา: oats.aov <- aov(Y ~ N + V + Error(B/V), data=oats, qr=T)

ในการรับค่าติดตั้งหรือส่วนที่เหลือ:

" fitted(oats.aov[[4]])และresid(oats.aov[[4]])เป็นเวกเตอร์ที่มีความยาว 54 แสดงถึงค่าติดตั้งและส่วนที่เหลือจากชั้นสุดท้าย"

ที่สำคัญพวกเขาเพิ่ม:

"เป็นไปไม่ได้ที่จะเชื่อมโยงพวกเขาเข้ากับแผนการทดลองดั้งเดิมโดยเฉพาะ"

สำหรับการวินิจฉัยพวกเขาใช้เส้นโครง:

plot(fitted(oats.aov[[4]]), studres(oats.aov[[4]]))
abline(h=0, lty=2)
oats.pr <- proj(oats.aov)
qqnorm(oats.pr[[4]][, "Residuals"], ylab = "Stratum 4 residuals")
qqline(oats.pr[[4]][, "Residuals"])

พวกเขายังแสดงให้เห็นว่ารูปแบบสามารถทำได้โดยใช้ lme ตามที่ผู้ใช้คนอื่นโพสต์


ตามนี้ควรเป็น [[3]] และไม่ใช่ [[4]] ฉันทดสอบแล้วและมันใช้ได้กับ [[3]]
toto_tico

1

ที่นี่มีสองตัวเลือกด้วย aov และ lme (ฉันคิดว่าเป็นที่ต้องการ 2):

require(MASS) ## for oats data set
require(nlme) ## for lme()
require(multcomp) ## for multiple comparison stuff

Aov.mod <- aov(Y ~ N * V + Error(B/V), data = oats)
the_residuals <- aov.out.pr[[3]][, "Residuals"]

Lme.mod <- lme(Y ~ N * V, random = ~1 | B/V, data = oats)
the_residuals <- residuals(Lme.mod)

ตัวอย่างดั้งเดิมมาโดยไม่มีการโต้ตอบ ( Lme.mod <- lme(Y ~ N * V, random = ~1 | B/V, data = oats)) แต่ดูเหมือนว่าจะทำงานกับมัน (และให้ผลลัพธ์ที่แตกต่างดังนั้นมันจึงทำอะไรบางอย่าง)

และนั่นคือ ...

แต่เพื่อความสมบูรณ์:

1 - บทสรุปของโมเดล

summary(Aov.mod)
anova(Lme.mod)

2 - การทดสอบ Tukey พร้อมมาตรการซ้ำ anova (3 ชั่วโมงมองหาสิ่งนี้ !!)

summary(Lme.mod)
summary(glht(Lme.mod, linfct=mcp(V="Tukey")))

3 - แผนการปกติและเนื้อเรื่อง

par(mfrow=c(1,2)) #add room for the rotated labels
aov.out.pr <- proj(aov.mod)                                            
#oats$resi <- aov.out.pr[[3]][, "Residuals"]
oats$resi <- residuals(Lme.mod)
qqnorm(oats$resi, main="Normal Q-Q") # A quantile normal plot - good for checking normality
qqline(oats$resi)
boxplot(resi ~ interaction(N,V), main="Homoscedasticity", 
        xlab = "Code Categories", ylab = "Residuals", border = "white", 
        data=oats)
points(resi ~ interaction(N,V), pch = 1, 
       main="Homoscedasticity",  data=oats)

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.