รูปแบบที่เหลือโดยอัตโนมัติสัมพันธ์ยังคงอยู่แม้ในรูปแบบที่มีโครงสร้างความสัมพันธ์ที่เหมาะสมและวิธีการเลือกรูปแบบที่ดีที่สุด?


17

บริบท

คำถามนี้ใช้ R แต่เกี่ยวกับปัญหาทางสถิติทั่วไป

ฉันกำลังวิเคราะห์ผลกระทบของปัจจัยการเสียชีวิต (อัตราการตาย% เนื่องจากโรคและปรสิต) ต่ออัตราการเติบโตของประชากรมอดเมื่อเวลาผ่านไปโดยมีการสุ่มตัวอย่างประชากร 12 ตัวต่อปีเป็นเวลา 8 ปี ข้อมูลอัตราการเติบโตของประชากรแสดงแนวโน้มวัฏจักรที่ชัดเจน แต่ผิดปกติเมื่อเวลาผ่านไป

ส่วนที่เหลือจากแบบจำลองเชิงเส้นแบบง่ายทั่วไป (อัตราการเจริญเติบโต ~% โรค +% ปรสิต + ปี) แสดงแนวโน้มวัฏจักรที่ชัดเจน แต่ผิดปกติตลอดเวลา ดังนั้นแบบจำลองกำลังสองน้อยที่สุดทั่วไปของรูปแบบเดียวกันจึงถูกนำไปใช้กับข้อมูลที่มีโครงสร้างความสัมพันธ์ที่เหมาะสมเพื่อจัดการกับความสัมพันธ์ระหว่างกาลชั่วคราวเช่นสมมาตรผสมคำสั่งกระบวนการอัตโนมัติ 1 และโครงสร้างความสัมพันธ์เฉลี่ยเคลื่อนที่อัตโนมัติ

แบบจำลองทั้งหมดมีเอฟเฟกต์คงที่เหมือนกันถูกนำมาเปรียบเทียบโดยใช้ AIC และติดตั้งโดย REML (เพื่อให้สามารถเปรียบเทียบโครงสร้างความสัมพันธ์ที่แตกต่างกันโดย AIC) ฉันใช้ R package nlme และฟังก์ชัน gls

คำถามที่ 1

ส่วนที่เหลือของแบบจำลอง GLS ยังคงแสดงรูปแบบวัฏจักรที่เหมือนกันเกือบทุกรูปแบบเมื่อเทียบกับเวลา รูปแบบดังกล่าวจะยังคงอยู่หรือไม่แม้จะอยู่ในรูปแบบที่มีความแม่นยำในโครงสร้างของความสัมพันธ์

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

คำถามที่ 2

ฉันได้ติดตั้งโมเดล GLS ที่มีโครงสร้างความสัมพันธ์ที่เป็นไปได้ทั้งหมดกับข้อมูลของฉัน แต่ไม่มีใครเหมาะสมกว่า GLM จริงมากไปกว่าโครงสร้างที่ไม่มีความสัมพันธ์ใด ๆ : แบบจำลอง GLS เพียงรุ่นเดียวนั้นดีกว่าเล็กน้อย (คะแนน AIC = 1.8 ต่ำกว่า) ค่า AIC ที่สูงขึ้น อย่างไรก็ตามนี่เป็นเพียงกรณีที่ทุกรุ่นติดตั้งโดย REML ไม่ใช่ ML ที่รุ่น GLS ดีกว่าชัดเจนมาก แต่ฉันเข้าใจจากหนังสือสถิติคุณต้องใช้ REML เพื่อเปรียบเทียบรุ่นที่มีโครงสร้างความสัมพันธ์ที่แตกต่างกันและผลกระทบคงที่เดียวกันด้วยเหตุผล ฉันจะไม่ลงรายละเอียดที่นี่

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

Q1 'จำลอง' สำรวจรูปแบบที่เหลือในแบบจำลองที่มีและไม่มีโครงสร้างสหสัมพันธ์ที่เหมาะสม

สร้างตัวแปรตอบสนองแบบจำลองที่มีเอฟเฟกต์แบบวนรอบเป็น 'เวลา' และผลเชิงเส้นเชิงบวกของ 'x':

time <- 1:50
x <- sample(rep(1:25,each=2),50)
y <- rnorm(50,5,5) + (5 + 15*sin(2*pi*time/25)) + (x/1)

y ควรแสดงแนวโน้มของวัฏจักรในช่วงเวลาที่มีการเปลี่ยนแปลงแบบสุ่ม:

plot(time,y)

และความสัมพันธ์เชิงเส้นเชิงบวกกับ 'x' ด้วยการเปลี่ยนแปลงแบบสุ่ม:

plot(x,y)

สร้างรูปแบบการเติมเชิงเส้นอย่างง่ายของ "y ~ time + x":

require(nlme)
m1 <- gls(y ~ time + x, method="REML")

รูปแบบแสดงรูปแบบวัฏจักรที่ชัดเจนในส่วนที่เหลือเมื่อพล็อตกับ 'เวลา' ตามที่คาดหวัง:

plot(time, m1$residuals)

และสิ่งที่ควรจะดีไม่มีรูปแบบหรือแนวโน้มที่ชัดเจนในการตกค้างเมื่อพล็อตกับ 'x':

plot(x, m1$residuals)

แบบจำลองอย่างง่ายของ "y ~ time + x" ที่มีโครงสร้างความสัมพันธ์แบบออโต้เรียร์ตามลำดับที่ 1 ควรพอดีกับข้อมูลที่ดีกว่ารุ่นก่อนหน้านี้มากเพราะโครงสร้างความสัมพันธ์อัตโนมัติเมื่อประเมินโดยใช้ AIC:

m2 <- gls(y ~ time + x, correlation = corAR1(form=~time), method="REML")
AIC(m1,m2)

อย่างไรก็ตามตัวแบบควรแสดงส่วนที่เหลือที่สัมพันธ์กันแบบชั่วคราวโดยอัตโนมัติ

plot(time, m2$residuals)

ขอบคุณมากสำหรับคำแนะนำใด ๆ


แบบจำลองของคุณไม่ได้ขึ้นอยู่กับการพึ่งพาเวลาที่เกิดจากรอบอย่างถูกต้อง (แม้สำหรับกรณีจำลองของคุณ) ดังนั้นลักษณะของ ' บัญชีถูกต้องสำหรับ ' จึงไม่เหมาะสม เหตุผลที่คุณยังคงมีรูปแบบในส่วนที่เหลือของคุณอาจเป็นเพราะสิ่งนั้น
Glen_b -Reinstate Monica

ฉันคิดว่าคุณมีมันย้อนหลัง การประมาณการควรได้รับโดยใช้ความน่าจะเป็นเต็มที่สูงสุดแทนที่จะเป็น REML Selection method = "ML" เป็นสิ่งจำเป็นสำหรับการดำเนินการทดสอบอัตราส่วนความน่าจะเป็นและจำเป็นถ้าคุณต้องการใช้ AIC เพื่อเปรียบเทียบแบบจำลองกับตัวทำนายที่แตกต่างกัน REML ให้การประมาณที่ดีขึ้นขององค์ประกอบความแปรปรวนและข้อผิดพลาดมาตรฐานกว่า ML การใช้ method = "ML" เพื่อเปรียบเทียบแบบจำลองที่แตกต่างกันบางครั้งเราแนะนำให้ปรับแบบจำลองขั้นสุดท้ายโดยใช้ method = "REML" และใช้การประมาณการและข้อผิดพลาดมาตรฐานจาก REML พอดีสำหรับการอนุมานสุดท้าย
วิทยาศาสตร์ด้านป่าไม้

คำตอบ:


24

ไตรมาสที่ 1

คุณกำลังทำสองสิ่งที่ผิดที่นี่ สิ่งแรกคือสิ่งเลวร้ายโดยทั่วไป ไม่โดยทั่วไปจะเจาะลึกลงไปในวัตถุโมเดลและดึงส่วนประกอบออกมา เรียนรู้การใช้ฟังก์ชันตัวแยกข้อมูลในกรณีresid()นี้ ในกรณีนี้คุณจะได้รับสิ่งที่มีประโยชน์ แต่ถ้าคุณมีโมเดลวัตถุชนิดอื่นเช่น GLM จากglm()นั้นก็mod$residualsจะมีส่วนที่เหลือทำงานจากการทำซ้ำ IRLS ล่าสุดและเป็นสิ่งที่คุณไม่ต้องการ!

สิ่งที่สองที่คุณทำผิดคือสิ่งที่ทำให้ฉันออกมาเหมือนกัน ส่วนที่เหลือที่คุณแยก (และจะแยกได้ถ้าคุณใช้resid()) เป็นส่วนที่เหลือหรือการตอบสนอง หลักนี้คือความแตกต่างระหว่างค่าติดตั้งและค่าสังเกตของการตอบสนองที่คำนึงถึงผลกระทบแง่คงเท่านั้น ค่าเหล่านี้จะมีความสัมพันธ์อัตโนมัติที่เหลือเหมือนกับของm1ผลกระทบคงที่ (หรือหากคุณต้องการตัวทำนายเชิงเส้น) จะเหมือนกันในสองรุ่น ( ~ time + x)

ในการรับค่าส่วนที่เหลือซึ่งรวมถึงคำที่มีความสัมพันธ์กันที่คุณระบุไว้คุณจำเป็นต้องมีค่าส่วนที่เป็นมาตรฐาน คุณได้รับสิ่งเหล่านี้โดยทำ:

resid(m1, type = "normalized")

สิ่งที่เหลืออยู่ (และประเภทอื่น ๆ ที่มี) นี้อธิบายไว้ใน?residuals.gls:

type: an optional character string specifying the type of residuals
      to be used. If ‘"response"’, the "raw" residuals (observed -
      fitted) are used; else, if ‘"pearson"’, the standardized
      residuals (raw residuals divided by the corresponding
      standard errors) are used; else, if ‘"normalized"’, the
      normalized residuals (standardized residuals pre-multiplied
      by the inverse square-root factor of the estimated error
      correlation matrix) are used. Partial matching of arguments
      is used, so only the first character needs to be provided.
      Defaults to ‘"response"’.

โดยการเปรียบเทียบนี่คือ ACF ของ raw (การตอบกลับ) และส่วนที่เหลือปกติ

layout(matrix(1:2))
acf(resid(m2))
acf(resid(m2, type = "normalized"))
layout(1)

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

หากต้องการดูสาเหตุที่เกิดขึ้นและที่ซึ่งเศษซากดิบไม่รวมคำที่เกี่ยวข้องให้พิจารณาแบบจำลองที่คุณติดตั้ง

Y=β0+β1เสื้อผมม.อี+β2x+ε

ที่ไหน

ε~ยังไม่มีข้อความ(0,σ2Λ)

Λρ^ρ|d|d

ค่าคงที่ดิบที่เป็นค่าเริ่มต้นที่ส่งคืนมาresid(m2)จากส่วนของตัวทำนายเชิงเส้นเท่านั้นดังนั้นจากบิตนี้

β0+β1เสื้อผมม.อี+β2x

Λ Λ

ไตรมาสที่ 2

ดูเหมือนว่าคุณกำลังพยายามปรับให้เข้ากับแนวโน้มที่ไม่ใช่เชิงเส้นด้วยฟังก์ชันเชิงเส้นของtimeและการขาดความพอดีกับ "แนวโน้ม" กับ AR (1) (หรือโครงสร้างอื่น ๆ ) หากข้อมูลของคุณเป็นเหมือนข้อมูลตัวอย่างที่คุณให้ไว้ที่นี่ฉันจะเหมาะกับเกมเพื่อให้การทำงานที่ราบรื่นของ covariates รุ่นนี้ก็คงจะเป็น

Y=β0+1(เสื้อผมม.อี)+2(x)+ε

Λ=ผม

library("mgcv")
m3 <- gam(y ~ s(time) + s(x), select = TRUE, method = "REML")

ที่ไหน select = TRUEใช้การหดตัวพิเศษเพื่ออนุญาตให้แบบจำลองลบคำใดคำหนึ่งออกจากแบบจำลอง

รุ่นนี้ให้

> summary(m3)

Family: gaussian 
Link function: identity 

Formula:
y ~ s(time) + s(x)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  23.1532     0.7104   32.59   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
          edf Ref.df      F  p-value    
s(time) 8.041      9 26.364  < 2e-16 ***
s(x)    1.922      9  9.749 1.09e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

และมีเงื่อนไขที่ราบรื่นซึ่งมีลักษณะดังนี้:

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

ส่วนที่เหลือจากรุ่นนี้ก็มีพฤติกรรมที่ดีขึ้นเช่นกัน (ส่วนที่เหลือดิบ)

acf(resid(m3))

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

ตอนนี้คำเตือน; มีปัญหาเกี่ยวกับอนุกรมเวลาที่ปรับให้เรียบซึ่งวิธีการที่ตัดสินว่าฟังก์ชั่นนั้นราบรื่นหรือกระตุกอย่างมากเพียงใดสมมติว่าข้อมูลนั้นมีความเป็นอิสระ สิ่งนี้หมายความว่าในแง่การปฏิบัติคือฟังก์ชั่นที่ราบรื่นของเวลา ( s(time)) สามารถพอดีกับข้อมูลที่เป็นข้อผิดพลาดแบบสุ่มอัตโนมัติที่เกี่ยวข้องและไม่เพียง แต่แนวโน้มพื้นฐาน ดังนั้นคุณควรใช้ความระมัดระวังในการปรับข้อมูลให้สอดคล้องกับอนุกรมเวลา

มีหลายวิธีในการปัดเศษ แต่วิธีหนึ่งคือการปรับให้เข้ากับรุ่นgamm()ที่โทรlme()ภายในและช่วยให้คุณใช้correlationอาร์กิวเมนต์ที่คุณใช้สำหรับgls()โมเดล นี่คือตัวอย่าง

mm1 <- gamm(y ~ s(time, k = 6, fx = TRUE) + s(x), select = TRUE,
            method = "REML")
mm2 <- gamm(y ~ s(time, k = 6, fx = TRUE) + s(x), select = TRUE,
            method = "REML", correlation = corAR1(form = ~ time))

s(time)s(time)ρ=0s(time)ρ>>0.5

โมเดลที่มี AR (1) ไม่ได้แสดงถึงการปรับปรุงที่สำคัญเหนือโมเดลที่ไม่มี AR (1):

> anova(mm1$lme, mm2$lme)
        Model df      AIC      BIC    logLik   Test   L.Ratio p-value
mm1$lme     1  9 301.5986 317.4494 -141.7993                         
mm2$lme     2 10 303.4168 321.0288 -141.7084 1 vs 2 0.1817652  0.6699

ถ้าเราดูการประมาณของ $ \ hat {\ rho}} ที่เราเห็น

> intervals(mm2$lme)
....

 Correlation structure:
         lower      est.     upper
Phi -0.2696671 0.0756494 0.4037265
attr(,"label")
[1] "Correlation structure:"

Phiρρ


ขอบคุณ Gavin สำหรับคำตอบที่ดีและมีรายละเอียดในเชิงลึก ดูเหมือนว่าข้อมูลของฉันจะสร้างผลลัพธ์ที่คล้ายคลึงกันในเชิงคุณภาพกับ GAM เนื่องจากมีการปรับปรุงเล็กน้อยมากหรือการปรับตัวที่แย่ลง (ประเมินผ่าน AIC / AICc) เมื่อเปรียบเทียบ GAM กับและไม่มีโครงสร้างความสัมพันธ์มาตรฐาน คุณ / ใครรู้หรือไม่: ถ้ามีความชัดเจนมาก, หากแนวโน้มที่ผิดปกติ, เป็นวัฏจักรของข้อมูล / สิ่งตกค้าง, มันจะเหมาะสมที่สุดที่จะติดกับโครงสร้างความสัมพันธ์ที่เหมาะสมที่สุดแทนที่จะเป็นแบบที่ไม่มีหรือไม่? ขอบคุณอีกครั้ง.
JupiterM104

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