ทำไมฉันถึงได้ผลลัพธ์ที่แตกต่างกันมากสำหรับโพลี (raw = T) กับโพลี ()


10

ฉันต้องการสร้างแบบจำลองตัวแปรเวลาที่แตกต่างกันสองแบบซึ่งบางตัวมีการวางตัวเป็นเส้นตรงในข้อมูลของฉัน (age + cohort = period) เมื่อทำสิ่งนี้ฉันพบปัญหาlmerและการโต้ตอบpoly()แต่อาจไม่ จำกัด เพียงlmerฉันได้รับผลลัพธ์เดียวกันกับnlmeIIRC

เห็นได้ชัดว่าความเข้าใจของฉันในสิ่งที่ฟังก์ชั่นโพลี () ไม่เพียงพอ ฉันเข้าใจสิ่งที่poly(x,d,raw=T)ทำและฉันคิดว่าหากไม่มีraw=Tมันทำให้มีหลายชื่อแบบหลายมุมฉาก (ฉันไม่สามารถพูดได้ว่าฉันเข้าใจความหมายที่แท้จริง) ซึ่งทำให้กระชับได้ง่ายขึ้น แต่ไม่อนุญาตให้คุณตีความสัมประสิทธิ์โดยตรง
ฉันอ่านว่าเพราะฉันใช้ฟังก์ชั่นการทำนายการคาดคะเนควรจะเหมือนกัน

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

แปลงเหล่านี้หวังแสดงให้เห็นถึงขอบเขตของความแตกต่าง ฉันใช้ฟังก์ชันคาดการณ์ซึ่งมีเฉพาะใน dev เท่านั้น เวอร์ชั่นของ lme4 (ได้ยินเกี่ยวกับที่นี่ ) แต่เอฟเฟกต์คงที่จะเหมือนกันในเวอร์ชั่น CRAN (และพวกมันก็ดูเหมือนตัวเองเช่น ~ 5 สำหรับการโต้ตอบเมื่อ DV ของฉันมีช่วง 0-4)

สายลเมอร์คือ

cohort2_age =lmer(churchattendance ~ 
poly(cohort_c,2,raw=T) * age_c + 
ctd_c + dropoutalive + obs_c + (1+ age_c |PERSNR), data=long.kg)

การคาดคะเนนั้นเป็นผลกระทบคงที่เท่านั้นในข้อมูลปลอม (ตัวทำนายอื่น ๆ ทั้งหมด = 0) ที่ฉันทำเครื่องหมายช่วงที่มีอยู่ในข้อมูลต้นฉบับเป็นการคาดการณ์ = F

predict(cohort2_age,REform=NA,newdata=cohort.moderates.age)

ฉันสามารถให้บริบทเพิ่มเติมได้ถ้าต้องการ (ฉันไม่สามารถสร้างตัวอย่างที่ทำซ้ำได้ง่าย แต่สามารถลองได้ยากขึ้น) แต่ฉันคิดว่านี่เป็นข้ออ้างขั้นพื้นฐานมากขึ้น: อธิบายpoly()ฟังก์ชั่นให้ฉันได้โปรดได้โปรด

ชื่อพหุนามดิบ

ชื่อพหุนามดิบ

โพลิโนเมียลแบบหลายมุมฉาก (ถูกตัด, ไม่ยึดติดที่Imgur )

ชื่อพหุนามแบบมุมฉาก

คำตอบ:


10

ฉันคิดว่านี่เป็นข้อผิดพลาดในฟังก์ชั่นการทำนาย (และด้วยเหตุนี้ความผิดของฉัน) ซึ่งในความเป็นจริง nlme ไม่ได้แบ่งปัน ( แก้ไข : ควรแก้ไขในเวอร์ชัน R-forge ล่าสุดlme4) ดูตัวอย่างด้านล่าง ...

ฉันคิดว่าความเข้าใจของคุณเกี่ยวกับชื่อพหุนามแบบมุมฉากน่าจะดี สิ่งที่ยุ่งยากที่คุณต้องรู้เกี่ยวกับพวกเขาหากคุณพยายามที่จะเขียนวิธีทำนายสำหรับคลาสของโมเดลคือพื้นฐานของพหุนามแบบฉากฉากถูกกำหนดโดยอิงจากชุดข้อมูลที่กำหนดดังนั้นถ้าคุณไร้เดียงสา! ) ใช้model.matrixเพื่อพยายามสร้างเมทริกซ์การออกแบบสำหรับชุดข้อมูลใหม่คุณจะได้รับพื้นฐานใหม่ซึ่งไม่เหมาะสมกับพารามิเตอร์เก่าอีกต่อไป จนกว่าฉันจะได้รับการแก้ไขนี้ฉันอาจต้องวางกับดักที่บอกคนที่predictไม่ได้ทำงานกับฐานแบบพหุนามแบบ orthogonal (หรือฐาน spline ซึ่งมีคุณสมบัติเดียวกัน)

d <- expand.grid(x=seq(0,1,length=50),f=LETTERS[1:10])
set.seed(1001)
u.int <- rnorm(10,sd=0.5)
u.slope <- rnorm(10,sd=0.2)
u.quad <- rnorm(10,sd=0.1)
d <- transform(d,
               ypred = (1+u.int[f])+
               (2+u.slope[f])*x-
               (1+u.quad[f])*x^2)
d$y <- rnorm(nrow(d),mean=d$ypred,sd=0.2)
ggplot(d,aes(x=x,y=y,colour=f))+geom_line()+
    geom_line(aes(y=ypred),linetype=2)

library(lme4)
fm1 <- lmer(y~poly(x,2,raw=TRUE)+(1|f)+(0+x|f)+(0+I(x^2)|f),
            data=d)


fm2 <- lmer(y~poly(x,2)+(1|f)+(0+x|f)+(0+I(x^2)|f),
            data=d)
newdat <- data.frame(x=unique(d$x))
plot(predict(fm1,newdata=newdat,REform=NA))
lines(predict(fm2,newdata=newdat,REform=NA),col=2)
detach("package:lme4")

library(nlme)
fm3 <- lme(y~poly(x,2,raw=TRUE),
           random=list(~1|f,~0+x|f,~0+I(x^2)|f),
            data=d)
VarCorr(fm3)

fm4 <- lme(y~poly(x,2),
           random=list(~1|f,~0+x|f,~0+I(x^2)|f),
            data=d)

newdat <- data.frame(x=unique(d$x))
lines(predict(fm3,newdata=newdat,level=0),col=4)
lines(predict(fm4,newdata=newdat,level=0),col=5)

ขอบคุณที่ให้ความมั่นใจ หากต้องการย้ำ: ฉันอ่านว่าคุณไม่สามารถรับเอฟเฟกต์คงที่แบบโพลิโนเมียลตามมูลค่าใบหน้าได้ แต่บางครั้งมันก็ดูใหญ่เกินไป ตัวอย่างเช่นถ้าฉันเรียกใช้การโต้ตอบของชื่อพหุนามสองลูกบาศก์ฉันจะได้รับผลกระทบคงที่สำหรับชื่อพหุนามและการโต้ตอบในช่วงตั้งแต่ -22 ถึง -127400 นั่นดูเหมือนว่าจะเป็นวิธีสำหรับฉันโดยเฉพาะเมื่อพิจารณาว่าผลกระทบคงที่ทั้งหมดเป็นลบ ฟังก์ชั่นการทำนายที่ได้รับการแก้ไขจะทำให้ความรู้สึกของเอฟเฟกต์คงที่เหล่านี้หรือว่าแบบจำลองมาบรรจบกันหรือเป็นสิ่งที่ผิดปกติใน lmer หรือไม่?
Ruben

อีกครั้งฉันสงสัย (แต่เห็นได้ชัดว่าไม่รู้แน่นอน) ว่าทุกอย่างเรียบร้อยดี Orth ชื่อพหุนามดีสำหรับความเสถียรเชิงตัวเลขและการทดสอบสมมติฐาน แต่ (ในขณะที่คุณกำลังหา) ค่าพารามิเตอร์จริงอาจยากต่อการตีความ เวอร์ชันปัจจุบันของ lme4-devel (ฉันเพิ่งโพสต์รุ่นที่ควรผ่านการทดสอบอาจใช้เวลาประมาณ 24 ชั่วโมงในการสร้าง r-forge เว้นแต่คุณสามารถสร้างจาก SVN ด้วยตัวคุณเอง) ควรให้การคาดคะเนที่ตรงกันระหว่างชื่อพหุนาม / ortho ทางเลือกคือการศูนย์พยากรณ์และขนาดอย่างต่อเนื่องàลา Schielzeth 2010 วิธีการในนิเวศวิทยาและวิวัฒนาการ ...
เบน Bolker

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