วิธีที่เหมาะสมในการจัดการกับตารางฉุกเฉิน 3 ระดับ


12

ฉันมีตารางฉุกเฉินสามระดับโดยมีข้อมูลการนับสปีชีส์หลายชนิดพืชโฮสต์ที่พวกเขาถูกรวบรวมและการสะสมนั้นเกิดขึ้นในวันที่ฝนตกหรือไม่ (อันนี้สำคัญจริงๆ!) เมื่อใช้ R ข้อมูลปลอมอาจเป็นดังนี้:

count    <- rpois(8, 10)
species  <- rep(c("a", "b"), 4)
host     <- rep(c("c","c", "d", "d"), 2)
rain     <- c(rep(0,4), rep(1,4))
my.table <- xtabs(count ~ host + species + rain)


, , rain = 0

    species
host  a  b
   c 12 15
   d 10 13

, , rain = 1

    species
host  a  b
   c 11 12
   d 12  7

ตอนนี้ฉันต้องการรู้สองสิ่ง: สปีชีส์สัมพันธ์กับพืชอาศัยหรือไม่ "ฝนหรือไม่" ส่งผลกระทบต่อการเชื่อมโยงนี้หรือไม่ ฉันใช้loglm()จากMASSสิ่งนี้:

 # Are species independent to host plants, given the effect of rain?
loglm(~species + host + rain + species*rain + host*rain, data=my.table)

 # Given any relationship between host plants and species, does rain change it?
loglm(~species + host + rain + species*host)

นี่อยู่นอกระดับความสะดวกสบายของฉันเล็กน้อยและฉันต้องการตรวจสอบว่าฉันได้ตั้งแบบจำลองไว้ถูกต้องแล้วและนี่เป็นวิธีที่ดีที่สุดในการเข้าถึงคำถามเหล่านี้

คำตอบ:


10

มีสองวิธีในการตีความคำถามแรกของคุณซึ่งสะท้อนให้เห็นในสองวิธีที่คุณถาม:“ สปีชีส์เกี่ยวข้องกับพืชอาศัยหรือไม่” และ“ ชนิดพันธุ์ที่เป็นอิสระต่อพืชเป็นเจ้าภาพได้รับผลกระทบจากฝนหรือไม่”

การตีความครั้งแรกสอดคล้องกับรูปแบบของความเป็นอิสระแบบร่วมซึ่งระบุว่าสปีชีส์และโฮสต์นั้นขึ้นอยู่กับ แต่การรวมกันเป็นอิสระจากการที่ฝนตกลงมา:

pshr=pshpr

โดยที่คือความน่าจะเป็นที่การสังเกตตกลงไปในเซลล์ที่ดัชนีสปีชีส์, ชนิดของโฮสต์ , และค่า rain,คือความน่าจะเป็นที่ขอบของเซลล์ที่เรายุบลงไปในตัวแปรฝนและคือความน่าจะเป็นเล็กน้อยของฝนpshr(s,h,r)shrpsh(s,h,)pr

การตีความที่สองสอดคล้องกับรูปแบบของความเป็นอิสระตามเงื่อนไขซึ่งระบุว่าสปีชีส์และโฮสต์มีความเป็นอิสระไม่ว่าฝนจะตกลงมาหรือไม่:

psh|r=ps|rph|rหรือpshr=psrphr/pr

ที่เป็นน่าจะเป็นเงื่อนไขของมือถือที่กำหนดค่าของR ( s , h , r ) rpsh|r(s,h,r)r

คุณสามารถทดสอบแบบจำลองเหล่านี้ใน R ( loglinจะทำงานได้ดีเช่นกัน แต่ฉันคุ้นเคยมากกว่าglm):

count <- c(12,15,10,13,11,12,12,7)
species <- rep(c("a", "b"), 4)
host <- rep(c("c","c", "d", "d"), 2)
rain <- c(rep(0,4), rep(1,4))
my.table <- xtabs(count ~ host + species + rain)
my.data <- as.data.frame.table(my.table)
mod0 <- glm(Freq ~ species + host + rain, data=my.data, family=poisson())
mod1 <- glm(Freq ~ species * host + rain, data=my.data, family=poisson())
mod2 <- glm(Freq ~ (species + host) * rain, data=my.data, family=poisson())
anova(mod0, mod1, test="Chi") #Test of joint independence
anova(mod0, mod2, test="Chi") #Test of conditional independence

ข้างต้นmod1สอดคล้องกับความเป็นอิสระร่วมกันและmod2สอดคล้องกับความเป็นอิสระตามเงื่อนไขในขณะที่mod0สอดคล้องกับความเป็นอิสระซึ่งกันและกันรุ่นp_r คุณสามารถดูการประมาณค่าพารามิเตอร์ที่ใช้เป็นต้นตามปกติคุณควรตรวจสอบเพื่อดูว่าเป็นไปตามสมมติฐานของรุ่นหรือไม่ ในข้อมูลที่คุณให้มาโมเดลตัวจริงพอดีพอสมควรpshr=psphprsummary(mod2)

วิธีการที่แตกต่างกันในการเข้าถึงคำถามแรกของคุณคือทำการทดสอบที่แม่นยำของ Fischer's ( fisher.test(xtabs(count ~ host + species))) บนตาราง 2x2 ที่ยุบ (การตีความครั้งแรก) หรือการทดสอบ Mantel-Haenszel ( mantelhaen.test(xtabs(count ~ host + species + rain))) สำหรับตาราง 2x2 แบบแบ่งชั้น 2 หรือเขียนการทดสอบการเรียงสับเปลี่ยน (การตีความที่สอง)

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

mod3 <- glm(Freq ~ species*host*rain - species:host:rain, data=my.data, family=poisson())
mod4 <- glm(Freq ~ species*host*rain, data=my.data, family=poisson())
anova(mod3, mod4, test=”Chi”)
pchisq(deviance(mod3), df.residual(mod3), lower=F)

แบบจำลองเต็มmod4อิ่ม แต่คุณสามารถทดสอบเอฟเฟกต์ที่เป็นปัญหาได้โดยดูที่ความเบี่ยงเบนmod3เหมือนกับที่ฉันได้ทำไปแล้ว


ขอบคุณ Lockedoff โดยเฉพาะอย่างยิ่งที่ช่วยให้ฉันแยกแยะความคิดของฉันเอง wrt ความแตกต่างระหว่างแบบจำลองที่เป็นแบบมีเงื่อนไขและข้อต่อ
david w

1

การถดถอยโลจิสติกดูเหมือนจะเหมาะสมสำหรับปัญหาของคุณ ตัวแปรที่คุณกำลังพยายามที่จะคาดการณ์ความน่าจะเป็นที่สังเกต (ซึ่งเป็นทั้งชนิด A หรือ B สายพันธุ์) เป็นสายพันธุ์เอตัวแปรเป็น ,และเลือกโฮสต์r a i n h o s t r a i nhostrainhostrain

คำสั่ง R จะเป็น:

glm (สูตร = สปีชีส์ ~ โฮสต์ + ฝน, ตระกูล = ทวินาม (logit), น้ำหนัก = นับ)

และคุณจะสนใจในค่าของค่าความชัน โปรดจำไว้ว่าคุณกำลังทดสอบสมมติฐานหลาย ๆp


1
การถดถอยโลจิสติกดูเหมือนว่าใช้ได้ แต่มีข้อ จำกัด เพิ่มเติมของจำนวนแถวและคอลัมน์ที่กำลังแก้ไข นี่อาจไม่เกิดขึ้นกับข้อมูลปัวซอง ฉันเชื่อว่าคำตอบจะไม่แตกต่างกันมาก
suncoolsu

1

ตอนแรกฉันแนะนำให้ลองใช้เทคนิคการบวชบังคับจากveganแพ็คเกจ แต่ในความคิดที่สองฉันสงสัยว่าสิ่งนี้จะมีประโยชน์เนื่องจากคุณมีตารางฉุกเฉิน 2 ตาราง ฉันหวังว่าส่วนที่สองของตัวอย่างนี้ [PDF: R การสาธิต - การวิเคราะห์หมวดหมู่] จะเป็นประโยชน์


คิดว่าลิงค์เสียคุณหมายถึงหมวดหมู่นี้ที่นี่หรือไม่? นั่นเป็นประโยชน์ขอบคุณ!
david w

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