ในขณะที่คุณทราบความแตกต่างเดิมอย่างถูกต้องเป็นเพราะในกรณีแรกที่คุณใช้ชื่อพหุนาม "ดิบ" ในขณะที่ในกรณีที่สองคุณใช้พหุนาม orthogonal ดังนั้นหากต่อมาlm
เรียกร้องการเปลี่ยนแปลงเป็น: fit3<-lm(y~ poly(x,degree=2, raw = TRUE) -1)
เราจะได้รับผลลัพธ์ที่เหมือนกันระหว่าง และfit
fit3
เหตุผลที่ว่าทำไมเราได้รับผลลัพธ์ที่เหมือนกันในกรณีนี้คือ "จิ๊บจ๊อย"; เราพอดีกับรูปแบบเดียวกันที่แน่นอนในขณะที่เราติดตั้งfit<-lm(y~.-1,data=x_exp)
ไม่น่าประหลาดใจที่มี
หนึ่งสามารถตรวจสอบได้ง่ายว่าแบบจำลองการฝึกอบรมของทั้งสองรุ่นเหมือนกันall.equal( model.matrix(fit), model.matrix(fit3) , check.attributes= FALSE) # TRUE
)
สิ่งที่น่าสนใจกว่าคือทำไมคุณจะได้พล็อตเดียวกันเมื่อใช้การสกัดกั้น สิ่งแรกที่ควรสังเกตคือเมื่อติดตั้งโมเดลที่มีจุดตัด
ในกรณีของfit2
เราเพียงแค่เลื่อนตัวแบบการทำนายในแนวตั้ง รูปร่างที่แท้จริงของเส้นโค้งเหมือนกัน
ในทางกลับกันรวมถึงการสกัดกั้นในกรณีของfit
ผลลัพธ์ไม่เพียง แต่เป็นเส้นที่แตกต่างกันในแง่ของการจัดวางแนวตั้ง แต่มีรูปร่างที่แตกต่างกันโดยรวม
เราสามารถเห็นได้อย่างง่ายดายโดยการต่อท้ายพอดีกับพล็อตที่มีอยู่
fit_b<-lm(y~. ,data=x_exp)
yp=predict(fit_b,xp_exp)
lines(xp,yp, col='green', lwd = 2)
fit2_b<-lm(y~ poly(x,degree=2, raw = FALSE) )
yp=predict(fit2_b,data.frame(x=xp))
lines(xp,yp,col='blue')
ตกลง ... ทำไมการสกัดกั้นจึงไม่เหมาะในขณะที่การสกัดกั้นรวมถึงพอดีเหมือนกัน จับเป็นอีกครั้งในสภาพ orthogonality
ในกรณีของfit_b
แบบจำลองเมทริกซ์ที่ใช้มีองค์ประกอบที่ไม่ใช่มุมฉากเมทริกซ์แกรมcrossprod( model.matrix(fit_b) )
อยู่ไกลจากเส้นทแยงมุม ในกรณีของfit2_b
องค์ประกอบเป็นมุมฉาก ( crossprod( model.matrix(fit2_b) )
เป็นแนวทแยงได้อย่างมีประสิทธิภาพ)
เช่นในกรณีที่fit
เมื่อเราขยายมันเพื่อรวมการสกัดกั้นในfit_b
เราเปลี่ยนรายการนอกแนวขวางของGram matrix และทำให้ผลลัพธ์ที่ได้นั้นแตกต่างกันโดยรวม (ความโค้งแตกต่างกันเป็นต้น) ในการเปรียบเทียบ กับแบบที่มีให้โดย ในกรณีของแต่เมื่อเราขยายไปยังรวมถึงการสกัดกั้นในขณะที่เราผนวกคอลัมน์ที่มีอยู่แล้วตั้งฉากกับคอลัมน์ที่เรามีที่ตั้งฉากคือกับพหุนามอย่างต่อเนื่องของการศึกษาระดับปริญญา 0 นี่เป็นเพียงผลลัพธ์ในการเคลื่อนที่ในแนวตั้งของเราโดยการสกัดกั้น นี่คือเหตุผลที่แปลงแตกต่างกันXTXfit
fit2
fit2_b
คำถามที่น่าสนใจคือทำไมfit_b
และfit2_b
เหมือนกัน; หลังจากเมทริกซ์โมเดลทั้งหมดจากfit_b
และfit2_b
ไม่เหมือนกันในมูลค่าที่ตราไว้ ที่นี่เราก็ต้องจำไว้ว่าในที่สุดfit_b
และfit2_b
มีข้อมูลเดียวกัน fit2_b
เป็นเพียงการรวมกันเชิงเส้นของfit_b
ผลลัพธ์ที่เป็นหลักของพวกเขาจะเหมือนกัน ความแตกต่างที่สังเกตได้ในสัมประสิทธิ์การสะท้อนกลับจะแสดงการรวมตัวกันอีกครั้งของค่าfit_b
เพื่อให้ได้ฉากฉากหลัง (ดูคำตอบกรัม Grothendieck นี่เกินไปสำหรับตัวอย่างที่แตกต่างกัน.)
=
และ<-
สำหรับการมอบหมายที่ไม่สอดคล้องกัน ฉันจะไม่ทำสิ่งนี้จริงๆมันไม่ได้ทำให้สับสน แต่มันเพิ่มสัญญาณรบกวนทางภาพลงในโค้ดของคุณโดยไม่มีประโยชน์ คุณควรใช้รหัสอื่นเพื่อใช้ในรหัสส่วนตัวของคุณและติดกับมัน