ฉันกำลังพยายามเรียกใช้ lm () ในชุดย่อยของข้อมูลของฉันและพบปัญหา
dt = data.table(y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100), x3 = as.factor(c(rep('men',50), rep('women',50)))) # sample data
lm( y ~ ., dt) # Use all x: Works
lm( y ~ ., dt[x3 == 'men']) # Use all x, limit to men: doesn't work (as expected)
ด้านบนใช้งานไม่ได้เนื่องจากชุดข้อมูลมีเฉพาะผู้ชายดังนั้นเราจึงไม่สามารถรวม x3 ตัวแปรเพศไว้ในแบบจำลองได้ แต่...
lm( y ~ . -x3, dt[x3 == 'men']) # Exclude x3, limit to men: STILL doesn't work
lm( y ~ x1 + x2, dt[x3 == 'men']) # Exclude x3, with different notation: works great
นี่เป็นปัญหาของสัญกรณ์ "เครื่องหมายลบ" ในสูตรหรือไม่ กรุณาแนะนำ. หมายเหตุ: แน่นอนฉันสามารถทำมันในวิธีที่แตกต่างกัน ตัวอย่างเช่นฉันสามารถยกเว้นตัวแปรก่อนที่จะใส่ลงใน lm () แต่ฉันกำลังสอนชั้นเรียนเกี่ยวกับสิ่งนี้และฉันไม่ต้องการให้นักเรียนสับสนโดยบอกว่าพวกเขาสามารถยกเว้นตัวแปรโดยใช้เครื่องหมายลบในสูตร
ฉันพยายาม "ขยาย"
—
MrFlick
.
เพื่อให้ได้สูตรที่ง่ายขึ้นด้วยterms(y ~ . -x3, data=dt, simplify=TRUE)
แต่แปลกที่มันยังคงx3
อยู่ในแอตทริบิวต์ของตัวแปรซึ่งเดินทางไปlm
@MrFlick - ดูเหมือนว่าตัวเลือก unimplemented-in-R
—
thelatemail
neg.out=
อาจเกี่ยวข้องกัน จากไฟล์วิธีใช้ S สำหรับterms
ที่neg.out=
มีการใช้งาน: แฟล็กควบคุมการจัดการคำที่ป้อนด้วยเครื่องหมาย "-" หากเป็น TRUE จะมีการตรวจสอบข้อกำหนดเพื่อการยกเลิกและไม่สนใจ หากเป็น FALSE คำศัพท์เชิงลบจะถูกเก็บไว้ (พร้อมลำดับที่เป็นลบ)
@MauritsEvers:
—
Artem Sokolov
lm
เรียกmodel.matrix
ใช้ข้อมูลที่ถูกแก้ไข ที่จุดเริ่มต้นมากประกอบด้วยและประเมินผลการแสดงออกต่อไปนี้:lm
mf <- stats::model.frame( y ~ . -x3, dt[x3=="men"], drop.unused.levels=TRUE )
สิ่งนี้ทำให้x3
กลายเป็นปัจจัยระดับเดียว model.matrix()
จากนั้นจะถูกเรียกใช้mf
ไม่ใช่ข้อมูลดั้งเดิมทำให้เกิดข้อผิดพลาดที่เราสังเกต
model.matrix(y ~ . - x3, data = dt[x3 == "men"])
และmodel.matrix(y ~ x1 + x2, data = dt[x3 == "men"])
ทำงาน (lm
โทรmodel.matrix
ภายใน) ความแตกต่างเพียงอย่างเดียวระหว่างเมทริกซ์โมเดลทั้งคู่คือแอ"contrasts"
ททริบิวต์ (ซึ่งยังมีอยู่x3
) และจะถูกเลือกในภายหลังlm
ตามปกติอาจทำให้เกิดข้อผิดพลาดที่คุณเห็น ดังนั้นความรู้สึกของฉันคือปัญหาเกี่ยวข้องกับการmodel.matrix
สร้างและจัดเก็บเมทริกซ์การออกแบบเมื่อนำคำศัพท์ออก