ดำเนินการถดถอยเชิงเส้น แต่บังคับให้โซลูชันหาจุดข้อมูลบางจุด


14

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

เป็นตัวอย่างที่เรียบง่ายและเป็นรูปธรรมขอให้เราบอกว่าฉันมี 100 จุดกระจายอยู่บนระนาบ xy และฉันเลือกที่จะใส่พหุนามตามลำดับ ฉันรู้วิธีการดำเนินการถดถอยเชิงเส้นนี้เป็นอย่างดี อย่างไรก็ตามขอให้เราบอกว่าฉันต้องการ 'บังคับ' วิธีแก้ปัญหาของฉันเพื่อบอกว่าจุดข้อมูลสามจุดที่พิกัด , x = 19 , และx = 89 , (และพิกัด y ที่สอดคล้องกัน แน่นอน).x=3x=19x=89

ขั้นตอนทั่วไปนี้เรียกว่าทำอย่างไรและมีข้อผิดพลาดเฉพาะที่ฉันต้องระวังหรือไม่

แก้ไข:

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

ขอบคุณ!


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

4
มันเป็นแบบเชิงเส้นเพราะคุณกำลังค้นหาความสามารถร่วมกับชุดแบบเชิงเส้น ตัวอย่างเช่นถ้าคุณต้องการเพื่อให้พอดีกับข้อมูลของคุณไปลูกบาศก์แล้วคุณกำลังมองหาผู้ร่วม efficients (คน 's) ของY = C 0 + 1 x + 2 x 2 + 3 x 3 cy=c0+c1x+c2x2+c3x3
Spacey

1
@ Mohammad: อีกวิธีหนึ่งในการประมาณสิ่งที่คุณต้องการคือการใช้สารละลายกำลังสองน้อยที่สุดและให้น้ำหนักที่มีขนาดใหญ่มากกับจุดที่คุณต้องการให้เส้นการถดถอยผ่านไป สิ่งนี้ควรบังคับให้โซลูชันผ่านจุดที่คุณเลือกอย่างใกล้ชิด
Jason R

@ JasonR ดีใจที่ได้พบคุณที่นี่ ใช่ WLS ย่อมเป็นคู่แข่งที่น่าสนใจ ฉันได้ไปด้วยคำตอบ whubers เพราะพหุนามพหุนามฉลาดและเพราะมันยังคงโครงสร้างข้อผิดพลาดทาง
Spacey

คำตอบ:


19

โมเดลที่เป็นปัญหาสามารถเขียนได้

y=p(x)+(xx1)(xxd)(β0+β1x++βpxp)+ε

โดยที่คือพหุนามของดีกรีd - 1ผ่านจุดที่กำหนดไว้ล่วงหน้า( x 1 , y 1 ) , , ( x d , y d )และεเป็นแบบสุ่ม (ใช้พหุนามการประมาณค่าลากรองจ์ ) การเขียน( x - x 1 ) ( x - x d ) = rp(xi)=yid1(x1,y1),,(xd,yd)εทำให้เราสามารถเขียนโมเดลนี้ใหม่เป็น(xx1)(xxd)=r(x)

yp(x)=β0r(x)+β1r(x)x+β2r(x)x2++βpr(x)xp+ε,

p+1r(x)xi, i=0,1,,pR2

d=1(x1,y1)=(0,0)p(x)=0y=β0x++βpxp+1+ε.


นี่คือตัวอย่างการทำงาน (ในR)

# Generate some data that *do* pass through three points (up to random error).
x <- 1:24
f <- function(x) ( (x-2)*(x-12) + (x-2)*(x-23) + (x-12)*(x-23) )  / 100
y0 <-(x-2) * (x-12) * (x-23) * (1 + x - (x/24)^2) / 10^4  + f(x)
set.seed(17)
eps <- rnorm(length(y0), mean=0, 1/2)
y <- y0 + eps
data <- data.frame(x,y)

# Plot the data and the three special points.
plot(data)
points(cbind(c(2,12,23), f(c(2,12,23))), pch=19, col="Red", cex=1.5)

# For comparison, conduct unconstrained polynomial regression
data$x2 <- x^2
data$x3 <- x^3
data$x4 <- x^4

fit0 <- lm(y ~ x + x2 + x3 + x4, data=data)
lines(predict(fit0), lty=2, lwd=2)

# Conduct the constrained regressions
data$y1 <- y - f(x)
data$r <- (x-2)*(x-12)*(x-23)
data$z0 <- data$r
data$z1 <- data$r * x
data$z2 <- data$r * x^2

fit <- lm(y1 ~ z0 + z1 + z2 - 1, data=data)
lines(predict(fit) + f(x), col="Red", lwd=2)

พล็อต

จุดคงที่สามจุดจะแสดงเป็นสีแดงทึบซึ่งไม่ได้เป็นส่วนหนึ่งของข้อมูล พหุนามลำดับที่สี่น้อยที่สุดที่ไม่มีเงื่อนไข จำกัด จะแสดงด้วยเส้นประสีดำ (มันมีห้าพารามิเตอร์); ข้อ จำกัด ที่พอดี (ของคำสั่งห้า แต่มีเพียงสามพารามิเตอร์ฟรี) แสดงขึ้นด้วยเส้นสีแดง

การตรวจสอบกำลังสองน้อยที่สุด ( summary(fit0)และsummary(fit)) สามารถให้คำแนะนำได้ - ฉันปล่อยให้ผู้อ่านที่สนใจ


βr(x)xixir(x)

ฉันได้เพิ่มตัวอย่างการทำงานโมฮัมหมัด
whuber

โอ้สมบูรณ์แบบ ฉันจะศึกษามัน การใช้ตัวอย่างของคุณยังคงเป็นไปได้ที่จะบังคับให้โพลีผ่านจุดที่เป็นส่วนหนึ่งของข้อมูลใช่มั้ย
Spacey

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

โพสต์ของคุณทำให้ฉันเมื่อคืนนี้ ฉันสอนตัวเอง LIP (LIP น่าสนใจมันเหมือนการสลายตัวของฟูริเยร์ แต่มี polys)
Spacey

9

(xi,yi)xixyiy

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

XX2


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


1
xiyi

2
แม้ว่าการขว้างด้วยคะแนนเพิ่มอีกสามจุดและถ่วงน้ำหนักพวกเขา ( คำตอบของla Glen_b) ก็สามารถสร้างความเหมาะสมเช่นนั้นการตีความเอาท์พุททางสถิติใด ๆ จะเป็นปัญหา: การแก้ไขบางอย่างอาจจำเป็น
whuber

6

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

อันดับแรกโปรดทราบว่าองศาอิสระสำหรับพหุนาม (หรือฟังก์ชันที่เหมาะสมใด ๆ ) อย่างน้อยต้องมีขนาดใหญ่เท่ากับจำนวนคะแนนที่ "รู้จัก" หากองศาอิสระเท่ากับคุณไม่ต้องการข้อมูลเลยเนื่องจากเส้นโค้งถูกกำหนดโดยสมบูรณ์ หากมีคะแนน 'ที่รู้จัก' มากกว่าคุณจะไม่สามารถแก้ไขได้ (เว้นแต่ว่าพวกเขาจะอยู่บนพหุนามเดียวกันทั้งหมดของระดับที่ระบุ จากนี้ไปฉันจะพูดถึงเมื่อพหุนามมี df มากกว่าจุดที่รู้จัก (เช่นลูกบาศก์ - กับ 4df - และสามจุดที่รู้จักดังนั้นลูกบาศก์ไม่ได้ถูกบ่อนทำลายโดยคะแนนที่รู้จักหรือไม่ได้กำหนดอย่างสมบูรณ์) .

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

  (a) การกำหนดพารามิเตอร์ใหม่เพื่อรวมข้อ จำกัด แต่ละข้อซึ่งส่งผลให้แบบจำลองลำดับต่ำลงโดยปริยาย

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

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

ใช้คำเตือนทั้งหมดของ @ gung


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

ดูการแก้ไขของฉันด้านบนซึ่งรวมถึงคำค้นหาและลิงก์ที่มีรายละเอียดเพิ่มเติมเล็กน้อย
Glen_b -Reinstate Monica

2
+1 การลดน้ำหนักเป็นความคิดที่ดี อาจต้องมีการปรับค่าสถิติการส่งออกบางอย่างเช่นการประเมินข้อผิดพลาด RMS
whuber

s2FR2

ขอบคุณสำหรับคำตอบของคุณ Glen_b แม้ว่าฉันจะยอมรับ @whuber แล้ว แต่ฉันก็ยังได้เรียนรู้อะไรมากมายจากคุณ
Spacey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.