เอฟเฟกต์แบบสุ่มด้วยการสังเกตเพียง 1 ครั้งจะส่งผลอย่างไรต่อโมเดลเชิงเส้นผสมทั่วไป


14

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

ฉันสามารถใส่โมเดลผสมกับวัตถุที่มีเพียง 1 การสังเกตได้หรือไม่

โมเดลดักจับแบบสุ่ม - หนึ่งการวัดต่อหนึ่งเรื่อง

อย่างไรก็ตามในลิงค์ที่สองคำตอบแรกจะระบุว่า:

"... สมมติว่าคุณไม่ได้ใช้GLMMรุ่นผสมเชิงเส้นทั่วไปที่ในกรณีนั้นปัญหาของการกระจายตัวเกินเข้ามาเล่น"

ฉันกำลังพิจารณาใช้ GLMM แต่ฉันไม่เข้าใจจริงๆว่าระดับเอฟเฟกต์แบบสุ่มด้วยการสังเกตเพียงครั้งเดียวจะส่งผลกระทบต่อโมเดลได้อย่างไร


นี่คือตัวอย่างหนึ่งในโมเดลที่ฉันพยายามทำ ฉันกำลังศึกษานกและฉันต้องการจำลองผลกระทบของประชากรและฤดูกาลตามจำนวนการหยุดระหว่างการย้ายถิ่น ฉันต้องการใช้เอฟเฟกต์แบบสุ่มเพราะสำหรับบางคนฉันมีข้อมูลมากถึง 5 ปี

library(dplyr)
library(lme4)
pop <- as.character(c("BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "BF", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "MA", "NU", "NU", "NU", "NU", "NU", "NU", "NU", "NU", "NU", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA", "SA"))
id <- "2 2 4 4 7 7 9 9 10 10 84367 84367 84367 84368 84368 84368 84368 84368 84368 84369 84369 33073 33073 33073 33073 33073 33073 33073 33073 33073 80149 80149 80149 80150 80150 80150 57140 57141 126674 126677 126678 126680 137152 137152 137157 115925 115925 115925 115925 115925 115925 115925 115925 115926 115926 115926 115926 115926 115926 115927 115928 115929 115929 115929 115930 115930 115930 115930 115931 115931 115931 115932 115932 115932"
id <- strsplit(id, " ")
id <- as.numeric(unlist(id))
year <- "2014 2015 2014 2015 2014 2015 2014 2015 2014 2015 2009 2010 2010 2009 2010 2010 2011 2011 2012 2009 2010 2009 2009 2010 2010 2011 2011 2012 2012 2013 2008 2008 2009 2008 2008 2009 2008 2008 2013 2013 2013 2013 2014 2015 2014 2012 2013 2013 2014 2014 2015 2015 2016 2012 2013 2013 2014 2014 2015 2013 2012 2012 2013 2013 2012 2013 2013 2014 2013 2014 2014 2013 2014 2014"
year <- strsplit(year, " ")
year <- as.numeric(unlist(year))
season <- as.character(c("fall", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "fall", "fall", "spring", "fall", "fall", "spring", "fall", "spring", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "fall", "spring", "spring", "fall", "spring", "spring", "fall", "spring", "spring", "fall", "fall", "fall", "fall", "fall", "fall", "fall", "spring", "fall", "fall", "fall", "spring", "fall", "spring", "fall", "spring", "spring", "fall", "fall", "spring", "fall", "spring", "spring", "fall", "fall", "fall", "fall", "spring", "fall", "fall", "spring", "spring","fall", "fall", "spring", "fall", "fall", "spring"))
stops <- "0 0 0 0 0 0 1 0 2 1 1 0 0 3 2 0 1 1 0 1 1 2 0 1 0 2 0 4 0 0 2 1 1 2 5 2 1 0 9 6 2 3 4 7 2 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0"
stops <- strsplit(stops, " ")
stops <- as.numeric(unlist(stops))

stopdata <- data.frame(pop = pop, id = id, year = year, season = season, stops = stops, stringsAsFactors = FALSE)


stopdata <- group_by(stopdata, pop, id)
summary1 <- summarise(stopdata, n.years = length(year))
table(summary1$n.years)

มี 27 คน 9 คนมีข้อสังเกตเดียว 18 คนมีข้อสังเกต 2-9 คน

สิ่งที่ควรคำนึงถึงถ้า 1/3 ของระดับเอฟเฟกต์แบบสุ่มมีการสังเกตเพียงครั้งเดียว


ฉันกำลังพิจารณา:

ตัวเลือกที่ 1: GLMM ตามที่อธิบายไว้ข้างต้น

stops.glmm <- glmer(stops ~ pop + season + (1|id), data=stopdata, family = poisson)

ตัวเลือกที่ 2: GLMแบบจำลองเชิงเส้นถ่วงน้ำหนักแบบทั่วไปที่ใช้วิธีการสำหรับบุคคลที่มีการสังเกตหลายครั้ง

aggfun <- function(data, idvars=c("pop", "season", "id"), response){
#select id variables, response variable, and year
sub1 <- na.omit(data[,c(idvars, "year", response)])
#aggregate for mean response by year
agg1 <- aggregate(sub1[names(sub1) == response],by=sub1[idvars],FUN=mean)
#sample size for each aggregated group
aggn <- aggregate(sub1[response],by=sub1[idvars],FUN=length)
#rename sample size column
names(aggn)[4] <- "n"
agg2 <- merge(agg1, aggn)
agg2}


#Create weighted dataset
stops.weight <- aggfun(data = stopdata, response = "stops")
stops.weight$stops <- round(stops.weight$stops)

#Weighted GLM
stops.glm <- glm(stops~pop + season, data=stops.weight, family = poisson, weights = n)

คำพูดมาจากไหน ฉันไม่พบคำตอบที่เกี่ยวข้อง
อะมีบาพูดว่า Reinstate Monica

ลิงก์ที่สองคำตอบแรกอยู่ในวงเล็บ
canderson156

3
สั้นไม่ค่อนข้างคำตอบ: ฉันไม่คิดว่าจะมีปัญหาใด ๆ ไม่ทราบว่าผู้ตอบคำถามแรกในคำถามที่สองที่ลิงก์ด้านบนมีความหมายว่า: คุณได้พิจารณาแสดงความคิดเห็นไว้ที่นั่นหรือไม่ (ถ้าคุณมีตัวแทนเพียงพอ) ในขีด จำกัด ที่คุณมีการสังเกต 1 ครั้งต่อกลุ่มดังนั้นความแปรปรวนระหว่างกลุ่มและส่วนที่เหลือจะถูกรบกวนอย่างสมบูรณ์ ฉันอาจไม่รำคาญกับรุ่นที่ผสมกันถ้าคุณมีกลุ่มน้อยที่มี> 1 การสังเกต (และจำนวนน้อยในกลุ่มเหล่านั้น) แต่กรณีของคุณฟังดูดี ...
Ben Bolker

ฉันไม่แน่ใจว่าตัวเลือกที่สองของคุณ (น้ำหนักปัวซอง) ทำงานได้อย่างถูกต้อง แต่ฉันต้องคิดให้รอบคอบมากขึ้น
Ben Bolker

@BenBolker คุณจะเลือกทำอะไรในกรณีที่คุณอธิบายซึ่งมีกลุ่มน้อยที่มี> การสังเกตเพียง 1 กลุ่ม
mkt - Reinstate Monica

คำตอบ:


3

โดยทั่วไปคุณมีปัญหาในการระบุตัวตน โมเดลเชิงเส้นที่มีเอฟเฟกต์แบบสุ่มที่กำหนดให้กับพารามิเตอร์ที่มีการวัดเพียงครั้งเดียวไม่สามารถแยกความแตกต่างระหว่างเอฟเฟกต์แบบสุ่มและข้อผิดพลาดที่เหลือได้

สมการผลผสมเชิงเส้นทั่วไปจะมีลักษณะดังนี้:

E=β+ηผม+εJ

βηผมผมεJJηεηεSD(η)SD(ε)โวลต์aR(η)+โวลต์aR(ε)

SD(η)SD(ε)

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