ค่าที่คุณได้รับจาก BLUP นั้นไม่ได้รับการประเมินในลักษณะเดียวกับการประมาณค่าสีน้ำเงินของเอฟเฟกต์คงที่ โดยการประชุม BLUPs จะเรียกว่าการคาดการณ์ เมื่อคุณใส่โมเดลเอฟเฟ็กต์แบบผสมสิ่งที่ถูกประเมินในตอนแรกคือค่าเฉลี่ยและความแปรปรวน (และความแปรปรวนร่วม) ของเอฟเฟกต์แบบสุ่ม ผลแบบสุ่มสำหรับหน่วยการศึกษาที่กำหนด (พูดนักเรียน) จะถูกคำนวณจากค่าเฉลี่ยและความแปรปรวนโดยประมาณและข้อมูล ในแบบจำลองเชิงเส้นอย่างง่ายค่าเฉลี่ยจะถูกประเมิน (เช่นเดียวกับความแปรปรวนที่เหลือ) แต่คะแนนที่สังเกตจะถูกพิจารณาว่าประกอบด้วยทั้งที่และข้อผิดพลาดซึ่งเป็นตัวแปรสุ่ม ในรูปแบบเอฟเฟ็กต์เอฟเฟกต์เอฟเฟกต์สำหรับหน่วยที่กำหนดจะเป็นตัวแปรสุ่มเช่นเดียวกัน (แม้ว่าในบางกรณีจะได้รับการรับรู้แล้ว)
นอกจากนี้คุณยังสามารถรักษายูนิตเช่นนี้เป็นเอฟเฟกต์คงที่ได้หากต้องการ ในกรณีนั้นพารามิเตอร์สำหรับหน่วยนั้นจะถูกประเมินตามปกติ อย่างไรก็ตามในกรณีเช่นนี้ค่าเฉลี่ย (ตัวอย่าง) ของประชากรที่ไม่ได้คาดคะเนไว้
ยิ่งกว่านั้นข้อสมมุติเบื้องหลังเอฟเฟกต์แบบสุ่มคือพวกมันสุ่มตัวอย่างแบบสุ่มจากประชากรบางกลุ่มและเป็นประชากรที่คุณสนใจ สมมติฐานพื้นฐานที่มีเอฟเฟกต์คงที่คือคุณเลือกหน่วยเหล่านั้นอย่างเด็ดเดี่ยวเพราะมันเป็นหน่วยเดียวที่คุณสนใจ
หากคุณหันหลังให้พอดีกับโมเดลเอฟเฟกต์แบบผสมและทำนายเอฟเฟ็กต์แบบเดียวกันพวกมันมีแนวโน้มที่จะ 'หด' ต่อค่าเฉลี่ยของประชากรเมื่อเทียบกับค่าประมาณผลกระทบคงที่ คุณสามารถคิดได้ว่าสิ่งนี้คล้ายกับการวิเคราะห์แบบเบย์โดยที่ค่าเฉลี่ยและความแปรปรวนโดยประมาณระบุก่อนหน้านี้และ BLUP เป็นเหมือนค่าเฉลี่ยของคนหลังที่มาจากการรวมข้อมูลกับค่าก่อนหน้าอย่างเหมาะสมที่สุด
จำนวนของการหดตัวแตกต่างกันไปตามปัจจัยหลายประการ การกำหนดที่สำคัญว่าการคาดการณ์ผลกระทบแบบสุ่มจะมาจากการประมาณค่าผลกระทบคงที่นานแค่ไหนคืออัตราส่วนของความแปรปรวนของผลกระทบแบบสุ่มต่อความแปรปรวนข้อผิดพลาด นี่คือตัวอย่างด่วนR
สำหรับกรณีที่ง่ายที่สุดด้วยหน่วย 5 'ระดับ 2' ที่พอดีเท่านั้น (สกัดกั้น) (คุณสามารถคิดว่านี่เป็นคะแนนทดสอบสำหรับนักเรียนในชั้นเรียน)
library(lme4) # we'll need to use this package
set.seed(1673) # this makes the example exactly reproducible
nj = 5; ni = 5; g = as.factor(rep(c(1:nj), each=ni))
##### model 1
pop.mean = 16; sigma.g = 1; sigma.e = 5
r.eff1 = rnorm(nj, mean=0, sd=sigma.g)
error = rnorm(nj*ni, mean=0, sd=sigma.e)
y = pop.mean + rep(r.eff1, each=ni) + error
re.mod1 = lmer(y~(1|g))
fe.mod1 = lm(y~0+g)
df1 = data.frame(fe1=coef(fe.mod1), re1=coef(re.mod1)$g)
##### model 2
pop.mean = 16; sigma.g = 5; sigma.e = 5
r.eff2 = rnorm(nj, mean=0, sd=sigma.g)
error = rnorm(nj*ni, mean=0, sd=sigma.e)
y = pop.mean + rep(r.eff2, each=ni) + error
re.mod2 = lmer(y~(1|g))
fe.mod2 = lm(y~0+g)
df2 = data.frame(fe2=coef(fe.mod2), re2=coef(re.mod2)$g)
##### model 3
pop.mean = 16; sigma.g = 5; sigma.e = 1
r.eff3 = rnorm(nj, mean=0, sd=sigma.g)
error = rnorm(nj*ni, mean=0, sd=sigma.e)
y = pop.mean + rep(r.eff3, each=ni) + error
re.mod3 = lmer(y~(1|g))
fe.mod3 = lm(y~0+g)
df3 = data.frame(fe3=coef(fe.mod3), re3=coef(re.mod3)$g)
ดังนั้นอัตราส่วนความแปรปรวนของผลการสุ่มแปรปรวนข้อผิดพลาดคือ 1/5 สำหรับmodel 1
5/5 สำหรับmodel 2
และ 5/1 model 3
สำหรับ โปรดทราบว่าฉันใช้ระดับหมายถึงการเข้ารหัสสำหรับรุ่นผลกระทบคงที่ ตอนนี้เราสามารถตรวจสอบว่าเอฟเฟกต์คงที่และการสุ่มเอฟเฟ็กต์ที่คาดการณ์ไว้เปรียบเทียบได้อย่างไรสำหรับสถานการณ์ทั้งสามนี้
df1
# fe1 re1
# g1 17.88528 15.9897
# g2 18.38737 15.9897
# g3 14.85108 15.9897
# g4 14.92801 15.9897
# g5 13.89675 15.9897
df2
# fe2 re2
# g1 10.979130 11.32997
# g2 13.002723 13.14321
# g3 26.118189 24.89537
# g4 12.109896 12.34319
# g5 9.561495 10.05969
df3
# fe3 re3
# g1 13.08629 13.19965
# g2 16.36932 16.31164
# g3 17.60149 17.47962
# g4 15.51098 15.49802
# g5 13.74309 13.82224
อีกวิธีหนึ่งที่จะจบลงด้วยการคาดการณ์ผลกระทบแบบสุ่มที่ใกล้เคียงกับประมาณการผลกระทบคงที่คือเมื่อคุณมีข้อมูลมากขึ้น เราสามารถเปรียบเทียบmodel 1
จากด้านบนด้วยอัตราส่วนที่ต่ำของความแปรปรวนของผลกระทบแบบสุ่มกับความแตกต่างของข้อผิดพลาดกับรุ่น ( model 1b
) ที่มีอัตราส่วนเดียวกัน แต่มีข้อมูลมากขึ้น (สังเกตว่าni = 500
แทนที่จะเป็นni = 5
)
##### model 1b
nj = 5; ni = 500; g = as.factor(rep(c(1:nj), each=ni))
pop.mean = 16; sigma.g = 1; sigma.e = 5
r.eff1b = rnorm(nj, mean=0, sd=sigma.g)
error = rnorm(nj*ni, mean=0, sd=sigma.e)
y = pop.mean + rep(r.eff1b, each=ni) + error
re.mod1b = lmer(y~(1|g))
fe.mod1b = lm(y~0+g)
df1b = data.frame(fe1b=coef(fe.mod1b), re1b=coef(re.mod1b)$g)
นี่คือผลกระทบ:
df1
# fe1 re1
# g1 17.88528 15.9897
# g2 18.38737 15.9897
# g3 14.85108 15.9897
# g4 14.92801 15.9897
# g5 13.89675 15.9897
df1b
# fe1b re1b
# g1 15.29064 15.29543
# g2 14.05557 14.08403
# g3 13.97053 14.00061
# g4 16.94697 16.92004
# g5 17.44085 17.40445
ในบันทึกที่เกี่ยวข้องค่อนข้างดั๊กเบตส์ (ผู้เขียนแพ็คเกจ R lme4) ไม่ชอบคำว่า "BLUP" และใช้ "โหมดเงื่อนไข" แทน (ดูหน้า 22-23 ของร่างหนังสือPDF lme4 ของเขา) โดยเฉพาะอย่างยิ่งเขาชี้ให้เห็นในส่วนที่ 1.6 ว่า "BLUP" สามารถใช้กับโมเดลเอฟเฟกต์แบบ เชิงเส้นได้อย่างมีความหมายเท่านั้น