การลบการสกัดกั้นเป็นรูปแบบที่แตกต่างกัน แต่มีตัวอย่างมากมายที่ถูกต้องตามกฎหมาย คำตอบจนถึงตอนนี้ได้พูดถึงรายละเอียดตัวอย่างแล้วในกรณีที่การสกัดกั้นที่แท้จริงคือ 0 ฉันจะเน้นไปที่ตัวอย่างเล็ก ๆ น้อย ๆ ที่เราอาจสนใจโมเดลที่ผิดปกติ
ตัวอย่างที่ 1: ตัวแบบลักษณะ ANOVA สำหรับตัวแปรเด็ดขาดเรามักจะสร้างการเข้ารหัสสมาชิกกลุ่มเวกเตอร์ไบนารี แบบจำลองการถดถอยมาตรฐานถูกกำหนดให้เป็นตัวแปรสกัดกั้น + k - 1 เวกเตอร์จำลอง รหัสสกัดกั้นค่าที่คาดหวังสำหรับกลุ่ม "อ้างอิง" หรือเวกเตอร์ที่ละเว้นและเวกเตอร์ที่เหลือจะทดสอบความแตกต่างระหว่างแต่ละกลุ่มและการอ้างอิง แต่ในบางกรณีอาจมีประโยชน์หากมีค่าที่คาดหวังของแต่ละกลุ่ม
dat <- mtcars
dat$vs <- factor(dat$vs)
## intercept model: vs coefficient becomes difference
lm(mpg ~ vs + hp, data = dat)
Coefficients:
(Intercept) vs1 hp
26.96300 2.57622 -0.05453
## no intercept: two vs coefficients, conditional expectations for both groups
lm(mpg ~ 0 + vs + hp, data = dat)
Coefficients:
vs0 vs1 hp
26.96300 29.53922 -0.05453
ตัวอย่างที่ 2: กรณีของข้อมูลมาตรฐาน ในบางกรณีอาจมีข้อมูลที่ได้มาตรฐาน ในกรณีนี้การสกัดกั้นคือ 0 โดยการออกแบบ ฉันคิดว่าตัวอย่างคลาสสิกของสิ่งนี้คือรูปแบบสมการเชิงโครงสร้างแบบเก่าหรือปัจจัยซึ่งดำเนินการกับเมทริกซ์ความแปรปรวนร่วมของข้อมูล ในกรณีด้านล่างอาจเป็นความคิดที่ดีที่จะประเมินการสกัดกั้นต่อไปถ้าเพียงเพื่อลดระดับความเป็นอิสระเพิ่มเติม (ซึ่งคุณควรจะสูญเสียไปจริง ๆ เพราะค่าเฉลี่ยนั้นประมาณไว้) แต่มีสถานการณ์ไม่มาก การก่อสร้างหมายถึงอาจเป็น 0 (เช่นการทดลองบางอย่างที่ผู้เข้าร่วมกำหนดอันดับ แต่ถูก จำกัด ให้ให้ผลบวกและลบเท่ากัน)
dat <- as.data.frame(scale(mtcars))
## intercept is 0 by design
lm(mpg ~ hp + wt, data = dat)
Coefficients:
(Intercept) hp wt
3.813e-17 -3.615e-01 -6.296e-01
## leaving the intercept out
lm(mpg ~ 0 + hp + wt, data = dat)
Coefficients:
hp wt
-0.3615 -0.6296
ตัวอย่างที่ 3: โมเดลหลายตัวแปรและดักที่ซ่อนอยู่ ตัวอย่างนี้คล้ายกับตัวอย่างแรกในหลาย ๆ วิธี ในกรณีนี้ข้อมูลได้รับการสแต็คเพื่อให้ตัวแปรที่แตกต่างกันสองตัวอยู่ในเวกเตอร์ที่มีความยาวหนึ่งตัว ตัวแปรที่สองเข้ารหัสข้อมูลเกี่ยวกับว่าเวกเตอร์การตอบสนองy
เป็นของหรือmpg
disp
ในกรณีนี้หากต้องการรับการสกัดกั้นแยกต่างหากสำหรับแต่ละผลลัพธ์คุณต้องหยุดการดักจับโดยรวมและรวมทั้งเวกเตอร์จำลองทั้งสองสำหรับการวัด นี่คือการวิเคราะห์หลายตัวแปร โดยทั่วไปไม่ได้ใช้งานlm()
เพราะคุณมีมาตรการซ้ำแล้วซ้ำอีกและอาจอนุญาตให้มีการไม่ลงมือทำ อย่างไรก็ตามมีบางกรณีที่น่าสนใจที่จำเป็น ตัวอย่างเช่นเมื่อพยายามทำการวิเคราะห์การไกล่เกลี่ยที่มีเอฟเฟกต์แบบสุ่มเพื่อให้ได้เมทริกซ์ความแปรปรวนร่วมแบบเต็มคุณต้องมีแบบจำลองทั้งสองแบบพร้อมกันซึ่งสามารถทำได้โดยการซ้อนข้อมูลและการใช้เวกเตอร์จำลองที่ชาญฉลาด
## stack data for multivariate analysis
dat <- reshape(mtcars, varying = c(1, 3), v.names = "y",
timevar = "measure", times = c("mpg", "disp"), direction = "long")
dat$measure <- factor(dat$measure)
## two regressions with intercepts only
lm(cbind(mpg, disp) ~ 1, data = mtcars)
Coefficients:
mpg disp
(Intercept) 20.09 230.72
## using the stacked data, measure is difference between outcome means
lm(y ~ measure, data = dat)
Coefficients:
(Intercept) measurempg
230.7 -210.6
## separate 'intercept' for each outcome
lm(y ~ 0 + measure, data = dat)
Coefficients:
measuredisp measurempg
230.72 20.09
ฉันไม่ได้โต้แย้งว่าโดยทั่วไปแล้วสิ่งดักฟังควรถูกลบออก แต่มันก็ดีที่จะยืดหยุ่น