การถดถอยพหุนามแบบมุมฉากดิบหรือ?


22

ฉันต้องการที่จะถอยหลังตัวแปรYบนx,x2,...,x5 5 ฉันควรทำสิ่งนี้โดยใช้ชื่อพหุนามแบบมุมฉากหรือไม่? ฉันดูคำถามบนเว็บไซต์ที่จัดการกับสิ่งเหล่านี้ แต่ฉันไม่เข้าใจจริงๆว่าอะไรคือความแตกต่างระหว่างการใช้งาน

เหตุใดฉันจึงไม่สามารถทำการถดถอยแบบ "ปกติ" เพื่อรับค่าสัมประสิทธิ์βผมของy=i=05βixi (พร้อมกับค่า p และสิ่งอื่น ๆ ที่ดีทั้งหมด) และแทนที่จะต้องกังวลว่าจะใช้หรือไม่ ชื่อพหุนามดิบหรือมุมฉาก? ตัวเลือกนี้ดูเหมือนว่าฉันจะอยู่นอกขอบเขตของสิ่งที่ฉันต้องการจะทำ

ในหนังสือสถิติที่ฉันกำลังอ่าน (ISLR โดย Tibshirani และคณะ) สิ่งเหล่านี้ไม่ได้กล่าวถึง ที่จริงแล้วพวกเขาถูกวัดผลในทางใดทางหนึ่ง
เหตุผลคือ AFAIK ซึ่งในlm()ฟังก์ชั่นใน R ใช้y ~ poly(x, 2)จำนวนเงินเพื่อใช้ชื่อพหุนามแบบมุมฉากและใช้y ~ x + I(x^2)จำนวนเงินเพื่อใช้วัตถุดิบ แต่ในหน้า 116 ผู้เขียนบอกว่าเราใช้ตัวเลือกแรกเพราะตัวหลังเป็น "ยุ่งยาก" ซึ่งไม่มีข้อบ่งชี้ว่าคำสั่งเหล่านี้จริง ๆ กับสิ่งที่แตกต่างกันโดยสิ้นเชิง
(คำถามที่สาม) เหตุใดผู้เขียน ISLR จึงทำให้ผู้อ่านสับสนเช่นนั้น


1
@Sycorax ฉันรู้ว่าpolyมีบางอย่างที่เกี่ยวข้องกับชื่อโพลิโนเมียลแบบฉากและฉัน (x ^ 2) ไม่ได้ (แม้ว่าฉันจะไม่ทราบรายละเอียด) - แต่ถึงกระนั้นทำไมผู้เขียน ISLR จึงแนะนำวิธีที่ใช้ไม่ได้ ? ดูเหมือนว่าจะทำให้เข้าใจผิดมากหากคำสั่งทั้งคู่ดูเหมือนจะทำแบบเดียวกัน แต่เพียงคนเดียวก็ใช้ได้
l7ll7

1
@ gung ฉันดูเอกสารของpolyและใช้เวลาในขณะที่มีปัญหานี้ แต่ฉันไม่สามารถคิดออกว่าทำไมโพลี (x, 2) และ x + I (x ^ 2) สร้างความแตกต่าง? คุณช่วยสอนฉันที่นี่ในความคิดเห็นได้ไหมถ้าคำถามนั้นเป็นคำถามที่ไม่เป็นความจริง?
l7ll7

1
@gung ฉันแก้ไขคำถามของฉันอีกครั้ง ตัวเลือกนี้ดิบ / orthogonal ทำให้ฉันสับสนมากยิ่งขึ้น - ก่อนหน้านี้ฉันคิดว่านี่เป็นเพียงRวิชาเทคนิคเล็กน้อยที่ฉันไม่เข้าใจ แต่ตอนนี้ดูเหมือนว่าจะเป็นปัญหาสถิติเต็มรูปแบบที่ขัดขวางฉันในการเขียนรหัสการถดถอยที่ไม่ควร รหัสนั้นยาก
l7ll7

2
@ gung ที่จริงสับสนฉันมากกว่ามันช่วย ก่อนหน้านี้ฉันคิดว่าฉันควรไปกับชื่อพหุนาม orthogonal เพราะนั่นดูเหมือนจะเป็นวิธีที่ถูกต้อง แต่ในคำตอบนั้นมีการใช้ชื่อพหุนามแบบดิบ น่าแปลกใจที่ทุกคนในเน็ตกำลังกรีดร้อง "RTFM" แต่จริงๆแล้วมันไม่มีคำตอบที่ชัดเจนเมื่อจะใช้อะไร (ลิงก์ของคุณยังไม่ได้ให้คำตอบกับสิ่งนี้เป็นเพียงตัวอย่างเมื่อ orth. pol. ผิดพลาดไป)
l7ll7

2
เว้นแต่ว่าคุณกำลังทำงานในโดเมนทางกายภาพหรือวิศวกรรมที่ระบุการตอบสนองจะเป็นพหุนาม quintic เกือบแน่นอนว่าแนวทางที่ถูกต้องคือการไม่ถดถอยพหุนามในตอนแรก การลงทุนของคุณองศาของเสรีภาพในเส้นโค้งหรือบางสิ่งบางอย่างที่จะห่างไกลความยืดหยุ่นมากขึ้นและมีความเสถียรกว่าแบบพหุนาม
whuber

คำตอบ:


10

ฉันเชื่อว่าคำตอบนั้นเกี่ยวกับความมั่นคงเชิงตัวเลขน้อยกว่า (แม้ว่าจะมีบทบาท) และอื่น ๆ เกี่ยวกับการลดความสัมพันธ์

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

x = rnorm(1000)
raw.poly = poly(x,6,raw=T)
orthogonal.poly = poly(x,6)
cor(raw.poly)
cor(orthogonal.poly)

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

y = x*2 + 5*x**3 - 3*x**2 + rnorm(1000)
raw.mod = lm(y~poly(x,6,raw=T))
orthogonal.mod = lm(y~poly(x,6))
summary(raw.mod)
summary(orthogonal.mod)

หากคุณเรียกใช้รหัสนี้การตีความเป็นสิ่งที่ยากเนื่องจากค่าสัมประสิทธิ์มีการเปลี่ยนแปลงและดังนั้นจึงเป็นเรื่องยากที่จะเปรียบเทียบ เมื่อดูที่ T-stats เราจะเห็นว่าความสามารถในการกำหนดค่าสัมประสิทธิ์นั้นมีขนาดใหญ่กว่ามากที่มีชื่อพหุนามแบบมุมฉาก สำหรับสัมประสิทธิ์ที่เกี่ยวข้อง 3 ตัวฉันได้รับสถิติ t (560,21,449) สำหรับโมเดลฉากและมีเพียง (28, -38,121) สำหรับโมเดลพหุนามแบบดิบ นี่เป็นข้อแตกต่างอย่างมากสำหรับโมเดลที่เรียบง่ายโดยมีคำพหุนามค่อนข้างต่ำเพียงไม่กี่คำเท่านั้นที่มีความสำคัญ

ไม่ได้บอกว่าสิ่งนี้มาโดยไม่มีค่าใช้จ่าย มีค่าใช้จ่ายหลักสองประการที่ต้องคำนึงถึง 1) เราสูญเสียความสามารถในการตีความด้วยคำหลายคำแบบฉาก เราอาจเข้าใจว่าสัมประสิทธิ์x**3หมายถึงอะไร แต่การตีความสัมประสิทธิ์บนx**3-3x(hermite poly ที่สาม - ไม่จำเป็นว่าคุณจะใช้อะไร) อาจยากกว่านี้มาก ข้อที่สอง - เมื่อเราบอกว่านี่คือชื่อพหุนามเป็นมุมฉาก - เราหมายความว่าพวกมันเป็นมุมฉากเทียบกับการวัดระยะทาง การเลือกระยะทางที่เกี่ยวข้องกับสถานการณ์ของคุณอาจเป็นเรื่องยาก อย่างไรก็ตามต้องบอกว่าฉันเชื่อว่าpolyฟังก์ชั่นถูกออกแบบมาเพื่อเลือกว่ามันเป็นมุมฉากด้วยความเคารพความแปรปรวนร่วม - ซึ่งมีประโยชน์สำหรับการถดถอยเชิงเส้น


3
-1 ข้อผิดพลาดมาตรฐานขนาดใหญ่ที่คุณเห็นในค่าสัมประสิทธิ์การสั่งซื้อที่ต่ำกว่าคือปลาเฮอริ่งแดง ค่าสัมประสิทธิ์การสั่งซื้อที่ลดลงในสองรุ่นของคุณกำลังประเมินสิ่งต่าง ๆ โดยสิ้นเชิงดังนั้นการเปรียบเทียบข้อผิดพลาดมาตรฐานของพวกเขาจึงไม่สมเหตุสมผล ค่าสัมประสิทธิ์การเรียงลำดับสูงสุดคือสิ่งเดียวที่ประเมินสิ่งเดียวกันในทั้งสองโมเดลและคุณจะเห็นว่าสถิติ t เหมือนกันว่าชื่อพหุนามเป็นแบบมุมฉากหรือไม่ ทั้งสองรุ่นของคุณมีความเท่าเทียมกันทางสถิติในแง่ของค่าติดตั้ง R ^ 2 และอื่น ๆ ส่วนใหญ่แตกต่างกันเพียงในการตีความค่าสัมประสิทธิ์
Jake Westfall

@ JakeWestfall ฉันไม่คิดว่าฉันเห็นด้วยกับคุณ ประการแรกการรันโค้ดจะสร้างค่าที่แตกต่างกันไปสำหรับคำสั่งพหุนามทั้งหมดไม่ใช่ทั้งหมด แต่เพียงอย่างเดียวนั่นคือจะต้องใช้พหุนามและใช้ PCA กับมัน ประการที่สองและที่สำคัญกว่านั้น t-stats นั้นแตกต่างกันอย่างมาก - การรันโค้ดในคำตอบของฉันจะยืนยันว่า - ในทางปฏิบัติเรากำลังแก้ไขปัญหาพหุนิยม คุณพูดถูกที่ติดตั้งค่า R ^ 2, F-tests และอื่น ๆ จะไม่เปลี่ยนแปลง ว่าในความเป็นจริงเหตุผลที่จะ orthogonalize - มันไม่มีอะไรเปลี่ยนแปลงยกเว้นความสามารถของเราในการตรวจสอบข้อตกลงพหุนาม
user5957401

1
Re: จุดแรกขอโทษฉันหมายถึงหมายถึง t-stat ของคำสั่งสูงสุดไม่ได้เป็นค่าสัมประสิทธิ์ ตัวทำนายนั้นถูกปรับสเกล + เลื่อนระหว่างโมเดลดังนั้นใช่การเปลี่ยนแปลงโคฟ แต่มันทดสอบเอฟเฟ็กต์ที่เหมือนกันดังที่แสดงโดยt
Jake Westfall

Re: จุดที่สองเหตุผล "สถิติของ t-different แตกต่างกันมาก" สำหรับคำสั่งซื้อที่ต่ำกว่าคืออีกครั้งเพราะพวกเขากำลังประเมินสิ่งที่แตกต่างอย่างสิ้นเชิงในทั้งสองรุ่น พิจารณาผลเชิงเส้น: raw.modโดยประมาณความชันของเส้นโค้งที่ x = 0 ซึ่งorthogonal.modจะประมาณความชันส่วนขอบ (เช่นเดียวกับlm(y ~ poly(x,1))ที่คำสั่งที่สูงกว่าถูกละเว้น) ไม่มีเหตุผลที่การประมาณการของการประเมินที่แตกต่างกันอย่างสมบูรณ์เหล่านี้ควรมีข้อผิดพลาดมาตรฐานเทียบเคียงได้ เราสามารถสร้างตัวอย่างเคาน์เตอร์ได้ง่าย ๆ ซึ่งraw.modมีสถิติ t สูงกว่ามาก
Jake Westfall

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

8

เหตุใดฉันจึงไม่สามารถทำการถดถอยแบบ "ปกติ" เพื่อให้ได้ค่าสัมประสิทธิ์

0.4.4000000059604644775390625

การใช้พหุนามดิบจะทำให้เกิดปัญหาเพราะเราจะมีจำนวนมาก นี่เป็นข้อพิสูจน์เล็ก ๆ : เรากำลังเปรียบเทียบจำนวนเงื่อนไขเมทริกซ์กับพหุนามแบบออโธกอนอล

> kappa(model.matrix(mpg~poly(wt,10),mtcars))
[1] 5.575962
> kappa(model.matrix(mpg~poly(wt,10, raw = T),mtcars))
[1] 2.119183e+13

คุณสามารถตรวจสอบคำตอบของฉันที่นี่เพื่อดูตัวอย่าง

ทำไมมีค่าสัมประสิทธิ์จำนวนมากสำหรับพหุนามลำดับที่สูงขึ้น


6
คุณดูเหมือนจะใช้ความแม่นยำเดียวลอยและอ้างถึงความแม่นยำสี่เท่า! มันเกิดขึ้นได้อย่างไร? ยกเว้น GPUs การคำนวณทางสถิติเกือบทั้งหมดใช้ความแม่นยำสองเท่าเป็นอย่างน้อย เช่นในRการส่งออกของเป็นprint(0.4, digits=20) 0.40000000000000002
whuber

6

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

R2XYX=0X=0X

data("iris")

#Raw:
fit.raw <- lm(Petal.Length ~ Petal.Width + I(Petal.Width^2) +
                  I(Petal.Width^3), data = iris)
summary(fit.raw)

#> Coefficients:
#>                  Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)        1.1034     0.1304   8.464 2.50e-14 ***
#> Petal.Width        1.1527     0.5836   1.975  0.05013 .  
#> I(Petal.Width^2)   1.7100     0.5487   3.116  0.00221 ** 
#> I(Petal.Width^3)  -0.5788     0.1408  -4.110 6.57e-05 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 0.3898 on 146 degrees of freedom
#> Multiple R-squared:  0.9522, Adjusted R-squared:  0.9512 
#> F-statistic: 969.9 on 3 and 146 DF,  p-value: < 2.2e-16

#Orthogonal
fit.orth <- lm(Petal.Length ~ stats::poly(Petal.Width, 3), data = iris)

#Marginal effect of X at X=0 from orthogonal model
library(margins)
summary(margins(fit.orth, variables = "Petal.Width", 
                at = data.frame(Petal.Width = 0)))
#> Warning in check_values(data, at): A 'at' value for 'Petal.Width' is
#> outside observed data range (0.1,2.5)!
#>       factor Petal.Width    AME     SE      z      p  lower  upper
#>  Petal.Width      0.0000 1.1527 0.5836 1.9752 0.0482 0.0089 2.2965

สร้างเมื่อ 2019-10-25 โดยแพ็คเกจ reprex (v0.3.0)

ผลกระทบเล็กน้อยPetal.Widthที่ 0 จากความพอดีมุมฉากและความคลาดเคลื่อนมาตรฐานนั้นเท่ากับผลจากความพอดีพหุนามดิบ การใช้ชื่อโพลิโนเมียลแบบฉากฉากไม่ได้ช่วยปรับปรุงความแม่นยำของการประมาณปริมาณที่เท่ากันระหว่างทั้งสองรุ่น

ที่สำคัญคือต่อไปนี้: การใช้ชื่อโพลิโนเมียลแบบมุมฉากช่วยให้คุณสามารถแยกการมีส่วนร่วมของแต่ละคำเพื่ออธิบายความแปรปรวนในผลลัพธ์ ที่นี่ฉันกำลังพูดถึงความสัมพันธ์กึ่งภาคสองกำลังสอง หากคุณพอดีกับพหุนาม orthogonal ของคำสั่งที่ 3 ความสัมพันธ์ semipartial กำลังสองสำหรับแต่ละคำจะแสดงความแปรปรวนในผลลัพธ์ที่อธิบายโดยคำนั้นในแบบจำลอง ดังนั้นหากคุณต้องการตอบว่า "ความแปรปรวนในเท่าใดYXYX

library(jtools)
data("iris")

fit.raw3 <- lm(Petal.Length ~ Petal.Width + I(Petal.Width^2) +
                  I(Petal.Width^3), data = iris)
fit.raw1 <- lm(Petal.Length ~ Petal.Width, data = iris)

round(summ(fit.raw3, part.corr = T)$coef, 3)
#>                    Est.  S.E. t val.     p partial.r part.r
#> (Intercept)       1.103 0.130  8.464 0.000        NA     NA
#> Petal.Width       1.153 0.584  1.975 0.050     0.161  0.036
#> I(Petal.Width^2)  1.710 0.549  3.116 0.002     0.250  0.056
#> I(Petal.Width^3) -0.579 0.141 -4.110 0.000    -0.322 -0.074

round(summ(fit.raw1, part.corr = T)$coef, 3)
#>              Est.  S.E. t val. p partial.r part.r
#> (Intercept) 1.084 0.073 14.850 0        NA     NA
#> Petal.Width 2.230 0.051 43.387 0     0.963  0.963

fit.orth3 <- lm(Petal.Length ~ stats::poly(Petal.Width, 3), 
               data = iris)
fit.orth1 <- lm(Petal.Length ~ stats::poly(Petal.Width, 3)[,1], 
               data = iris)

round(summ(fit.orth3, part.corr = T)$coef, 3)
#>                                Est.  S.E.  t val. p partial.r part.r
#> (Intercept)                   3.758 0.032 118.071 0        NA     NA
#> stats::poly(Petal.Width, 3)1 20.748 0.390  53.225 0     0.975  0.963
#> stats::poly(Petal.Width, 3)2 -3.015 0.390  -7.735 0    -0.539 -0.140
#> stats::poly(Petal.Width, 3)3 -1.602 0.390  -4.110 0    -0.322 -0.074

round(summ(fit.orth1, part.corr = T)$coef, 3)
#>                                    Est.  S.E. t val. p partial.r part.r
#> (Intercept)                       3.758 0.039 96.247 0        NA     NA
#> stats::poly(Petal.Width, 3)[, 1] 20.748 0.478 43.387 0     0.963  0.963

สร้างเมื่อ 2019-10-25 โดยแพ็คเกจ reprex (v0.3.0)

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

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


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

1
ขอบคุณสำหรับคำใจดี ฉันคิดว่าคุณต้องรวมstats::ในการเรียกร้องให้poly()ในlm()สำหรับmarginsที่จะรับรู้มัน (ซึ่งเป็นโง่) ฉันต้องการที่จะมุ่งเน้นการโต้แย้งของฉันเกี่ยวกับการประเมินจุดและข้อผิดพลาดมาตรฐานและฉันรู้ว่ามีการนำเสนอข้อมูลที่ไม่เกี่ยวข้องและทำให้ไขว้เขวมากมาย แต่ฉันหวังว่าข้อความจะแสดงจุดของฉัน
โนอาห์

แค่นั้นแหละ stats::poly()ผมคัดลอกรหัสของคุณตรงและคุณใช้ ข้อผิดพลาดบอกว่า'degree' must be less than number of unique points- ซึ่งไม่ได้ช่วยอะไรมาก อย่างไรก็ตามmargin()กำลังสำรองงบที่พิสูจน์ได้ดังนั้นจึงไม่สำคัญ
user5957401

4

ฉันยืนยันการตอบสนองที่ยอดเยี่ยมจาก @ user5957401 และเพิ่มความคิดเห็นเกี่ยวกับการแก้ไขการประมาณและการรายงาน

แม้ในโดเมนของค่าพารามิเตอร์ที่มีเสถียรภาพค่าสัมประสิทธิ์ / พารามิเตอร์ที่จำลองโดยพหุนามแบบฉากจะมีข้อผิดพลาดมาตรฐานที่น้อยกว่าอย่างมากจากค่าสัมประสิทธิ์ / พารามิเตอร์ที่จำลองโดยพารามิเตอร์ดิบ โดยพื้นฐานแล้วพหุนาม orthogonal เป็นชุดของตัวบอกความแปรปรวนแบบไม่ต้องเสียค่าใช้จ่าย นั่นคือ PCA ฟรี!

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

ในการจำลองอย่างรวดเร็วด้วยพหุนามดีกรี -5, N = 1,000 คะแนน, ค่าพารามิเตอร์แบบสุ่ม (ลดขนาดลงตาม 10-d เพื่อรักษาตัวแปรการตอบสนองภายใน 2 ออร์เดอร์ของขนาด) และเสียงที่ไม่เกี่ยวข้อง ~ ครึ่งหนึ่งของความแปรผันโดยรวมของตัวแปรตอบสนอง R2ของทั้งสองรุ่นนั้นเหมือนกัน ดังนั้นadJ R2's พลังการทำนายเหมือนกัน แต่ข้อผิดพลาดมาตรฐานของค่าพารามิเตอร์สำหรับโมเดลฉากมีค่าเท่ากับหรือคำสั่งของขนาดต่ำกว่าโมเดลดิบ

ดังนั้นฉันจะเป็น "คำสั่งของขนาด" มีความมั่นใจมากขึ้นในการรายงานรูปแบบมุมฉากกว่าแบบดิบ ในทางปฏิบัติฉันจะแก้ไขด้วยแบบจำลองทั้งสอง แต่ฉันจะคาดการณ์เฉพาะกับฉากมุมฉากเท่านั้น


1

ฉันจะแสดงความคิดเห็นเพียงเพื่อพูดถึงเรื่องนี้ แต่ฉันไม่มีตัวแทนเพียงพอดังนั้นฉันจะพยายามขยายคำตอบ คุณอาจสนใจที่จะเห็นว่าในส่วนของห้องปฏิบัติการ 7.8.1 ใน "การเรียนรู้เบื้องต้นเกี่ยวกับสถิติ" (James et. al., 2017, การแก้ไขการพิมพ์ครั้งที่ 8) พวกเขาพูดคุยถึงความแตกต่างระหว่างการใช้คำพหุนาม orthogonal หรือไม่raw=TRUEหรือraw=FALSEในpoly()ฟังก์ชั่น ตัวอย่างเช่นการประมาณค่าสัมประสิทธิ์จะเปลี่ยนแปลง แต่ค่าติดตั้งจะไม่:

# using the Wage dataset in the ISLR library
fit1 <- lm(wage ~ poly(age, 4, raw=FALSE), data=Wage)
fit2 <- lm(wage ~ poly(age, 4, raw=TRUE), data=Wage)
print(coef(fit1)) # coefficient estimates differ
print(coef(fit2))
all.equal(predict(fit1), predict(fit2)) #returns TRUE    

หนังสือเล่มนี้ยังกล่าวถึงวิธีการเมื่อ polynomials มุมฉากจะใช้, p-ค่าที่ได้ใช้anova()ซ้อนกัน F-test (การสำรวจสิ่งที่พหุนามองศาอาจจะมีการรับประกัน) เป็นเช่นเดียวกับผู้ที่ได้รับเมื่อใช้ t-test summary(fit)มาตรฐานส่งออกโดย นี่แสดงให้เห็นว่าสถิติ F มีค่าเท่ากับกำลังสองของสถิติ t ในบางสถานการณ์


ไม่ควรใช้ความคิดเห็นเป็นคำตอบโดยไม่คำนึงถึงชื่อเสียงของคุณ
Michael R. Chernick

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