ความสัมพันธ์ระหว่างตัวประมาณค่า OLS สำหรับการสกัดกั้นและความชัน


25

ในรูปแบบการถดถอยอย่างง่าย

Y=β0+β1x+ε,

ตัวประมาณ OLSและมีความสัมพันธ์กันββ^0OLSβ^1OLS

สูตรสำหรับความสัมพันธ์ระหว่างตัวประมาณสองตัวคือ (ถ้าฉันได้มาอย่างถูกต้อง):

Corr(β^0OLS,β^1OLS)=-Σผม=1nxผมnΣผม=1nxผม2.

คำถาม:

  1. คำอธิบายที่เข้าใจง่ายสำหรับการปรากฏตัวของความสัมพันธ์คืออะไร?
  2. การปรากฏตัวของความสัมพันธ์มีนัยสำคัญหรือไม่?

โพสต์ได้รับการแก้ไขและยืนยันว่าความสัมพันธ์หายไปกับขนาดตัวอย่างได้ถูกลบออก (ขอบคุณ @whuber และ @ChristophHanck)


7
สูตรนี้ถูกต้อง แต่คุณสามารถอธิบายสิ่งที่คุณใช้ในการแสดงอาการเชิงเส้นกำกับได้หรือไม่? หลังจากทั้งหมดในหลายกรณีความสัมพันธ์ไม่หายไป - มันคงที่ พิจารณาเช่นการทดลองที่มีข้อมูลไบนารีและสมมติว่าจะเก็บรวบรวมโดยสลับระหว่างและ0แล้วและความสัมพันธ์มักจะใกล้เคียงกับ , ไม่ว่าขนาดใหญ่จะกลายเป็น x i 1 0 x i = x 2 ฉันn / 2 xผมxผม10Σxผม=Σxผม2n/2n2/20n
whuber

1
ฉันจะบอกว่ามันจะหายไปถ้า : เขียนซึ่ง plims เพื่อ2)} Corr ( β O L S 0 , β O L S 1 ) = - 1E(X)=0
Corr(β^0OLS,β^1OLS)=-1ยังไม่มีข้อความΣผม=1ยังไม่มีข้อความxผมยังไม่มีข้อความΣผม=1ยังไม่มีข้อความxผม2ยังไม่มีข้อความ2=-1ยังไม่มีข้อความΣผม=1ยังไม่มีข้อความxผมΣผม=1ยังไม่มีข้อความxผม2ยังไม่มีข้อความ,
-E(X)/E(X2)
Christoph Hanck

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

3
สูตรของคุณแสดงให้เห็นอย่างเรียบร้อยเช่นสำหรับ regressor ที่มีค่าเฉลี่ยเป็นศูนย์กลางความสัมพันธ์กับการสกัดกั้นจะหายไป x
Michael M

คำตอบ:


16

ให้ฉันลองดังนี้ (จริงๆไม่แน่ใจว่าเป็นสัญชาตญาณที่มีประโยชน์):

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

E(X)E(X2)
E(X)>0E(X)=0

ฉันกำลังคิดถึงสิ่งนี้:

ในตัวอย่างสีน้ำเงินค่าประมาณความชันคือประจบซึ่งหมายความว่าการประมาณค่าสกัดกั้นอาจมากกว่า ความชันของตัวอย่างทองนั้นค่อนข้างใหญ่ดังนั้นการสกัดกั้นอาจมีขนาดเล็กลงเพื่อชดเชยสิ่งนี้

ป้อนคำอธิบายรูปภาพที่นี่

ในทางตรงกันข้ามถ้าเราสามารถมีความชันโดยไม่มีข้อ จำกัด ใด ๆ ในการสกัดกั้นE(X)=0

ตัวหารของสูตรสามารถตีความตามบรรทัดเหล่านี้ได้: หากสำหรับความหมายที่กำหนดความแปรปรวนที่วัดโดยการเพิ่มข้อมูลจะถูกละเลงไปเหนือx -axis เพื่อให้มีประสิทธิภาพ "ดู" มากขึ้นหมายถึงศูนย์อีกครั้งคลายข้อ จำกัด ในการสกัดกั้นสำหรับให้ค่าเฉลี่ยของXE(X2)xX

นี่คือรหัสที่ฉันหวังว่าจะอธิบายได้อย่างสมบูรณ์:

n <- 30
x_1 <- sort(runif(n,2,3))
beta <- 2
y_1 <- x_1*beta + rnorm(n) # the golden sample

x_2 <- sort(runif(n,2,3)) 
beta <- 2
y_2 <- x_2*beta + rnorm(n) # the blue sample

xax <- seq(-1,3,by=.001)
plot(x_1,y_1,xlim=c(-1,3),ylim=c(-4,7),pch=19,col="gold",ylab="y",xlab="x")
abline(lm(y_1~x_1),col="gold",lwd=2)
abline(v=0,lty=2)
lines(xax,beta*xax) # the "true" regression line
abline(lm(y_2~x_2),col="lightblue",lwd=2)
points(x_2,y_2,pch=19,col="lightblue")

1
สำหรับความหมายเชิงปฏิบัติให้พิจารณาการพัฒนาและการใช้เส้นโค้งการสอบเทียบสำหรับเครื่องมือในห้องปฏิบัติการ สำหรับการพัฒนาการสอบเทียบค่าที่ทราบของจะถูกทดสอบด้วยเครื่องมือและวัดค่าเอาต์พุตของเครื่องมือyตามด้วยการถดถอยเชิงเส้น จากนั้นตัวอย่างที่ไม่รู้จักจะถูกนำไปใช้กับเครื่องมือและค่าyใหม่จะใช้ในการทำนายx ที่ไม่รู้จักตามการสอบเทียบการถดถอยเชิงเส้น การวิเคราะห์ข้อผิดพลาดของการประมาณค่าของx ที่ไม่รู้จักจะเกี่ยวข้องกับความสัมพันธ์ระหว่างการประมาณความชันของการถดถอยและการสกัดกั้น xyyxx
EdM

17

คุณอาจต้องการติดตามIntroduction to เศรษฐมิติของ Dougherty บางทีเมื่อพิจารณาแล้วว่าเป็นตัวแปรที่ไม่สุ่มและกำหนดค่าเบี่ยงเบนกำลังสองเฉลี่ยของxเป็นMSD ( x ) = 1xx2 โปรดทราบว่า MSD ถูกวัดในจตุรัสของหน่วยของx(เช่นถ้าxเป็นซม.ดังนั้น MSD จะอยู่ในหน่วยcm2) ในขณะที่รูตหมายถึงการเบี่ยงเบนกำลังสองสแควร์,RMSD(x)=เอ็มเอส(x)=1nΣผม=1n(xผม-x¯)2xxซม.ซม.2อยู่ในระดับเดิม อัตราผลตอบแทนนี้RMSD(x)=เอ็มเอส(x)

Corr(β^0OLS,β^1OLS)=-x¯เอ็มเอส(x)+x¯2

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

ฉันจะย้ำถึงความสำคัญของผลลัพธ์นี้: ถ้าไม่มีค่าศูนย์เราสามารถแปลงมันได้โดยการลบˉ xเพื่อให้อยู่ตรงกลาง ถ้าเราพอดีกับเส้นถดถอยของyบนx - ˉ xความชันและการประมาณค่าตัดแกนจะไม่ถูกนำมาสัมพันธ์กัน - ค่าที่ต่ำกว่าหรือสูงเกินไปในค่าหนึ่งไม่น่าจะทำให้ค่าต่ำหรือค่าสูงเกินไป แต่เส้นถดถอยนี้เป็นเพียงการแปลของyบนเส้นถดถอยx ! ข้อผิดพลาดมาตรฐานของการสกัดกั้นของYบนx - ˉ xเส้นเป็นเพียงตัวชี้วัดของความไม่แน่นอนของปีxx¯Yx-x¯YxYx-x¯Y^เมื่อตัวแปรที่แปลของคุณ ; เมื่อสายที่จะแปลกลับไปยังตำแหน่งเดิมย้อนกลับนี้จะเป็นข้อผิดพลาดมาตรฐานของปีที่x = ˉ x โดยทั่วไปข้อผิดพลาดมาตรฐานของปีที่ใด ๆxค่าเป็นเพียงข้อผิดพลาดมาตรฐานของการสกัดกั้นของการถดถอยของปีบนแปลเหมาะสมx ; ข้อผิดพลาดมาตรฐานของปีที่x = 0เป็นหลักสูตรที่ข้อผิดพลาดมาตรฐานของการสกัดกั้นในต้นฉบับถดถอยที่ไม่ได้แปลx-x¯=0Y^x=x¯y^xyxy^x=0

เนื่องจากเราสามารถแปลในความรู้สึกบางมีอะไรพิเศษเกี่ยวกับx = 0และดังนั้นจึงไม่มีอะไรพิเศษเกี่ยวกับβ 0 กับบิตของความคิดสิ่งที่ผมกำลังจะบอกว่าผลงานปีที่ใด ๆค่าของxซึ่งจะเป็นประโยชน์ถ้าคุณกำลังมองหาข้อมูลเชิงลึกในช่วงความเชื่อมั่นเช่นสำหรับการตอบสนองเฉลี่ยจากบรรทัดถดถอยของคุณ แต่เราได้เห็นว่ามีเป็นบางสิ่งบางอย่างที่พิเศษเกี่ยวกับปีที่x = ˉ xเพราะมันอยู่ที่นี่ว่าข้อผิดพลาดในความสูงโดยประมาณของเส้นถดถอย - ซึ่งเป็นของประมาณการที่แน่นอนxx=0β^0y^xy^x=x¯ - และข้อผิดพลาดในความชันโดยประมาณของเส้นการถดถอยไม่มีอะไรเกี่ยวข้องกัน ตัดประมาณของคุณคือ β 0= ˉ Y - β 1 ˉ xและข้อผิดพลาดในการประมาณค่าของมันจะต้องมีต้นกำเนิดทั้งจากการประมาณค่าของ ˉ ปีหรือประมาณค่าของ β 1(ตั้งแต่ที่เราได้รับการยกย่องxเป็นไม่ใช่สุ่ม); ตอนนี้เรารู้แหล่งที่มาของทั้งสองของข้อผิดพลาดจะ uncorrelated ก็เป็นที่ชัดเจนว่าทำไมพีชคณิตควรจะมีความสัมพันธ์ทางลบระหว่างความลาดชันประมาณและตัด (ไขว้เขวลาดชันจะมีแนวโน้มที่จะตัดประมาทตราบ ˉy¯β^0=y¯β^1x¯y¯β^1x) แต่ความสัมพันธ์เชิงบวกระหว่างการสกัดกั้นโดยประมาณและการตอบสนองที่คาดเฉลี่ย Y = ˉ ปีที่x= ˉ x แต่สามารถเห็นความสัมพันธ์ดังกล่าวได้โดยไม่ต้องใช้พีชคณิตเช่นกันx¯<0y^=y¯x=x¯

ลองนึกภาพเส้นถดถอยโดยประมาณเป็นไม้บรรทัด ผู้ปกครองที่จะต้องผ่าน ) เราเพิ่งเห็นว่ามีความไม่แน่นอนสองอย่างที่ไม่เกี่ยวข้องกันในตำแหน่งของเส้นนี้ซึ่งฉันเห็นภาพ kinaesthetically ว่า "ความไม่แน่นอน" การเปลี่ยน "และความไม่แน่นอน" การเลื่อนแบบขนาน " ก่อนที่คุณจะบิดไม้บรรทัดให้ถือที่( ˉ x , ˉ y )(x¯,y¯)(x¯,y¯)ในฐานะที่เป็นเดือยแล้วให้มันมีความหลากหลายที่เกี่ยวข้องกับความไม่แน่นอนของคุณในความลาดชัน ผู้ปกครองจะมีการโยกเยกที่ดีมากขึ้นอย่างรุนแรงดังนั้นหากคุณไม่แน่ใจเกี่ยวกับความลาดชัน (แน่นอนความลาดชันเชิงบวกก่อนหน้านี้อาจจะกลายเป็นลบหากความไม่แน่นอนของคุณมีขนาดใหญ่) แต่โปรดทราบว่าความสูงของเส้นถดถอยที่ไม่เปลี่ยนแปลงจากความไม่แน่นอนเช่นนี้และเอฟเฟ็กต์ของ twang จะเห็นได้ชัดเจนยิ่งขึ้นจากค่าเฉลี่ยที่คุณมองx=x¯

ในการ "เลื่อน" ไม้บรรทัดจับให้แน่นแล้วเลื่อนขึ้นและลงระวังให้ขนานกับตำแหน่งเดิม - อย่าเปลี่ยนความชัน! การเลื่อนขึ้นและลงอย่างแรงขึ้นอยู่กับความไม่แน่นอนของคุณเกี่ยวกับความสูงของเส้นถดถอยขณะที่ผ่านจุดเฉลี่ย ลองคิดดูว่าข้อผิดพลาดมาตรฐานของการสกัดกั้นจะเป็นอย่างไรถ้าถูกแปลเพื่อให้แกน-yผ่านจุดเฉลี่ย อีกวิธีหนึ่งคือตั้งแต่ความสูงโดยประมาณของเส้นถดถอยที่นี่เป็นเพียงˉ ปีก็ยังเป็นข้อผิดพลาดมาตรฐานของˉ Y โปรดทราบว่าความไม่แน่นอนของ "การเลื่อน" แบบนี้มีผลต่อทุกจุดบนเส้นการถดถอยอย่างเท่าเทียมกันซึ่งแตกต่างจาก "twang"xyy¯y¯

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

ซึ่งรวมถึงความไม่แน่นอนในปีที่x = 0ซึ่งเป็นหลักสิ่งที่เราหมายถึงข้อผิดพลาดมาตรฐานในβ 0 ทีนี้สมมุติว่าˉ xอยู่ทางขวาของx = 0 ; จากนั้นการปรับกราฟให้มีความลาดชันโดยประมาณที่สูงขึ้นมีแนวโน้มที่จะลดการสกัดกั้นโดยประมาณของเราเนื่องจากร่างสเก็ตช์จะแสดง นี่คือความสัมพันธ์เชิงลบที่ทำนายโดย- ˉ xy^x=0β^0x¯x=0เมื่อˉxเป็นบวก ในทางกลับกันถ้าˉxอยู่ทางซ้ายของx=0คุณจะเห็นว่าความชันโดยประมาณที่สูงกว่ามีแนวโน้มที่จะเพิ่มการสกัดกั้นโดยประมาณของเราซึ่งสอดคล้องกับความสัมพันธ์เชิงบวกที่สมการของคุณคาดการณ์เมื่อˉxติดลบ โปรดทราบว่าถ้าˉxอยู่ไกลจากศูนย์การประมาณของเส้นถดถอยที่มีความชันไล่ระดับไม่แน่นอนออกไปทางyx¯MSD(x)+x¯2x¯x¯x=0x¯x¯Yแกนจะกลายเป็นล่อแหลมมากขึ้น (ความกว้างของ "twang" แย่ลงจากค่าเฉลี่ย) ว่า "การทำเสียงซอ" ข้อผิดพลาดใน-ระยะจะหนาแน่นเกินดุลข้อผิดพลาด "เลื่อน" ในˉ Yระยะดังนั้นข้อผิดพลาดในβ 0เกือบจะถูกกำหนดโดยสิ้นเชิงข้อผิดพลาดใด ๆ ในβ 1 ในขณะที่คุณสามารถตรวจสอบพีชคณิตถ้าเราใช้เวลาˉ x →การ± โดยไม่ต้องเปลี่ยนเอ็มเอสหรือค่าเบี่ยงเบนมาตรฐานของความผิดพลาดs Uความสัมพันธ์ระหว่างβ 0 และβ^1x¯Y¯β^0β^1x¯±sยูβ^0มีแนวโน้มที่จะ1β^11

ความลาดชันและการจำลองดัก

เพื่อแสดงให้เห็นถึงสิ่งนี้ (คุณอาจต้องการคลิกขวาที่ภาพและบันทึกหรือดูขนาดเต็มในแท็บใหม่หากตัวเลือกนั้นมีให้คุณ) ฉันเลือกที่จะพิจารณาตัวอย่างซ้ำของที่U ฉัน ~ N ( 0 , 10 2 )มีการ IID กว่าชุดถาวรของxค่ากับˉ x = 10ดังนั้นE ( ˉ Y ) = 25Yผม=5+2xผม+ยูผมยูผม~ยังไม่มีข้อความ(0,102)xx¯=10E(y¯)=25. ในการตั้งค่านี้มีความสัมพันธ์เชิงลบแข็งแกร่งอย่างเป็นธรรมระหว่างความลาดชันประมาณและการสกัดกั้นและความสัมพันธ์เชิงบวกระหว่างอ่อนแอการตอบสนองเฉลี่ยประมาณx = ˉ xและประมาณตัด อนิเมชั่นแสดงตัวอย่างที่จำลองขึ้นจำนวนมากพร้อมเส้นตัวอย่างการถดถอย (ทอง) ลากผ่านเส้นการถดถอยจริง (สีดำ) แถวที่สองแสดงให้เห็นว่าการสะสมของเส้นการถดถอยโดยประมาณนั้นดูเหมือนว่ามีข้อผิดพลาดเฉพาะในˉ y ที่ประมาณและลาดที่ตรงกับความชันจริง ("การเลื่อน" ผิดพลาด); จากนั้นหากมีข้อผิดพลาดเฉพาะในลาดและand yy¯x=x¯y¯y¯จับคู่กับค่าประชากร (ข้อผิดพลาด "การจับคู่"); และในที่สุดสิ่งที่คอลเลกชันของเส้นโดยประมาณดูเหมือนจริงเมื่อทั้งสองแหล่งที่มาของข้อผิดพลาดรวมกัน สิ่งเหล่านี้ได้รับการกำหนดรหัสสีโดยขนาดของการสกัดกั้นโดยประมาณจริง ๆ (ไม่ใช่จุดตัดที่แสดงในสองกราฟแรกที่แหล่งที่มาของข้อผิดพลาดถูกกำจัด) จากสีน้ำเงินสำหรับการตัดต่ำไปจนถึงแดงสำหรับการสกัดสูง โปรดสังเกตว่าจากสีเพียงอย่างเดียวเราจะเห็นได้ว่าตัวอย่างที่มีค่า ต่ำมีแนวโน้มที่จะสร้างค่าดักจับโดยประมาณที่ต่ำกว่าเช่นเดียวกับตัวอย่างที่มีค่าสูงy¯ความลาดชันโดยประมาณ แถวถัดไปแสดงการแจกแจงแบบจำลอง (ฮิสโตแกรม) และเชิงทฤษฎี (เส้นโค้งปกติ) ของการประมาณและแถวสุดท้ายจะแสดงแผนการกระจายระหว่างพวกเขา สังเกตว่ามีความสัมพันธ์ระหว่างไม่มีและความลาดชันประมาณความสัมพันธ์เชิงลบระหว่างการสกัดกั้นโดยประมาณและความลาดชันและความสัมพันธ์เชิงบวกระหว่างการสกัดกั้นและˉ Yy¯y¯

MSD กำลังทำอะไรอยู่ในส่วนของ ? แพร่กระจายออกช่วงของxค่าคุณวัดมากกว่าเป็นที่รู้จักกันดีที่จะช่วยให้คุณสามารถที่จะประเมินความลาดชันอย่างแม่นยำมากขึ้นและสัญชาตญาณที่มีความชัดเจนจากร่าง แต่มันไม่ได้ช่วยให้คุณสามารถประเมินˉYใด ๆ ที่ดี ฉันขอแนะนำให้คุณนึกภาพการใช้ MSD ใกล้ศูนย์ (เช่นการสุ่มตัวอย่างคะแนนนั้นใกล้กับค่าเฉลี่ยของx) มากเท่านั้นดังนั้นความไม่แน่นอนของคุณในความชันจะใหญ่มาก: ลองคิด twangs ที่ยิ่งใหญ่ แต่ไม่เปลี่ยนความไม่แน่นอนแบบเลื่อน หากy-axisของคุณอยู่ห่างจากˉx(กล่าวอีกนัยหนึ่งคือถ้าˉx0x¯MSD(x)+x¯2xy¯xyx¯x¯0) คุณจะพบว่าความไม่แน่นอนในการสกัดกั้นของคุณจะถูกครอบงำอย่างเต็มที่จากข้อผิดพลาดการบิดที่เกี่ยวข้องกับความลาดชัน ในทางตรงกันข้ามหากคุณเพิ่มการกระจายของการวัดของคุณโดยไม่ต้องเปลี่ยนค่าเฉลี่ยคุณจะปรับปรุงความแม่นยำของการประมาณความชันของคุณได้อย่างหนาแน่นและต้องการเพียงการใช้ twangs ที่อ่อนโยนต่อสายของคุณเท่านั้น ตอนนี้ความสูงของการสกัดกั้นของคุณถูกครอบงำด้วยความไม่แน่นอนของการเลื่อนซึ่งไม่เกี่ยวข้องกับความชันโดยประมาณของคุณ สิ่งนี้นับด้วยความจริงเกี่ยวกับพีชคณิตว่าความสัมพันธ์ระหว่างความชันโดยประมาณกับการสกัดกั้นมีแนวโน้มที่จะเป็นศูนย์เช่นMSD ( x ) ± และเมื่อˉ x0ต่อ± 1xMSD(x)±x¯0±1(เครื่องหมายเป็นตรงข้ามของสัญญาณของ ) ในฐานะเอ็มเอส( x ) 0x¯MSD(x)0

ความสัมพันธ์ของตัวประมาณค่าความชันและการสกัดกั้นเป็นหน้าที่ของทั้งและ MSD (หรือ RMSD) ของxดังนั้นการมีส่วนร่วมของพวกเขามีน้ำหนักมากขึ้นอย่างไร? อันที่จริงเรื่องทั้งหมดที่เป็นอัตราส่วนของˉ xเพื่อ RMSD ของx ปรีชาเรขาคณิตคือ RMSD จะช่วยให้เราชนิดของ "หน่วยธรรมชาติ" สำหรับx ; ถ้าเราลดค่าx -axis โดยใช้w i = x i / RMSD ( x )นี่คือการยืดในแนวนอนที่ทำให้การสกัดกั้นโดยประมาณและunch yไม่เปลี่ยนแปลงทำให้เราใหม่x¯xx¯xxxwi=xi/RMSD(x)y¯และคูณลาดประมาณโดย RMSD ของx สูตรสำหรับความสัมพันธ์ระหว่างความลาดชันและตัดใหม่ประมาณคือในแง่เดียวของ RMSD ( W )ซึ่งเป็นหนึ่งและ ˉ Wซึ่งเป็นอัตราส่วน ˉ xRMSD(w)=1xRMSD(w)w¯ ) เมื่อการประมาณค่าสกัดกั้นไม่เปลี่ยนแปลงและการประมาณค่าความชันจะถูกคูณด้วยค่าคงที่เป็นบวกจากนั้นค่าสหสัมพันธ์ระหว่างพวกมันจึงไม่เปลี่ยนแปลง: ดังนั้นความสัมพันธ์ระหว่างความชันดั้งเดิมกับการสกัดกั้นจึงขึ้นอยู่กับ ˉ x เท่านั้นx¯RMSD(x) ) พีชคณิตเราสามารถดูได้โดยการหารด้านบนและด้านล่างของ- ˉ xx¯RMSD(x)โดยRMSD(x)ที่จะได้รับCorr( β 0, β 1)=-( ˉ x /RMSD(x))x¯MSD(x)+x¯2RMSD(x) 2Corr(β^0,β^1)=(x¯/RMSD(x))1+(x¯/RMSD(x))2

เมื่อต้องการค้นหาความสัมพันธ์ระหว่างβ 0และˉ YพิจารณาCov ( β 0 , ˉ Y ) = Cov ( ˉ Y - β 1 ˉ x , ˉ Y ) โดย bilinearity ของCovนี้อยู่Cov ( ˉ Y , ˉ Y ) - ˉ x Cov ( β 1 , ˉ Y )β^0y¯Cov(β^0,y¯)=Cov(y¯β^1x¯,y¯)CovCov(y¯,y¯)x¯Cov(β^1,y¯). เทอมแรกคือในขณะที่คำที่สองที่เราสร้างไว้ก่อนหน้านี้เป็นศูนย์ จากนี้เราอนุมานVar(y¯)=σu2n

Corr(β^0,Y¯)=11+(x¯/RMSD(x))2

ดังนั้นความสัมพันธ์นี้ก็ขึ้นอยู่กับอัตราส่วน ) โปรดทราบว่าสี่เหลี่ยมของCorr( β 0, β 1)และCorr( β 0, ˉ Y )รวมถึงหนึ่ง: เราคาดว่าตั้งแต่ทุกรูปแบบการสุ่มตัวอย่าง (สำหรับการแก้ไขx) ใน β 0เป็นเพราะทั้งรูปแบบ ใน β 1หรือการเปลี่ยนแปลงใน ˉ Y , และแหล่งที่มาของการเปลี่ยนแปลงเหล่านี้จะ uncorrelated กับแต่ละอื่น ๆ นี่คือพล็อตของความสัมพันธ์กับอัตราส่วนx¯RMSD(x)Corr(β^0,β^1)Corr(β^0,Y¯)xβ^0β^1Y¯ )x¯RMSD(x)

ความสัมพันธ์ของการสกัดกั้นและความชันและการสกัดกั้นและค่าเฉลี่ย y เทียบกับอัตราส่วนของค่าเฉลี่ย x ต่อ RMSD

พล็อตที่แสดงให้เห็นอย่างชัดเจนว่าเมื่อสูงเมื่อเทียบกับ RMSDข้อผิดพลาดในการประมาณการตัดเป็นส่วนใหญ่เนื่องจากข้อผิดพลาดในการประมาณการความลาดชันและทั้งสองมีความสัมพันธ์อย่างใกล้ชิดขณะที่เมื่อˉ xอยู่ในระดับต่ำเมื่อเทียบกับ RMSDมันเป็นข้อผิดพลาด ในการประมาณค่าของthat yที่ครอบงำและความสัมพันธ์ระหว่างการสกัดกั้นและความลาดชันนั้นอ่อนแอ โปรดทราบว่าความสัมพันธ์ของการสกัดกั้นกับความชันเป็นฟังก์ชันแปลกของอัตราส่วนˉ xx¯x¯Y¯ดังนั้นเครื่องหมายขึ้นอยู่กับเครื่องหมายของ ˉ xและเป็นศูนย์ถ้า ˉ x =0ในขณะที่ความสัมพันธ์ของการสกัดกั้นกับ ˉ yนั้นเป็นค่าบวกเสมอและเป็นฟังก์ชั่นของอัตราส่วนนั่นคือมันไม่ได้ ว่าสิ่งที่ด้านข้างของYแกนที่ ˉ xมี ความสัมพันธ์มีความเท่าเทียมกันในขนาดถ้า ˉ xเป็นหนึ่ง RMSD ห่างจากYแกนเมื่อCorr( β 0, ˉ Y )=1x¯RMSD(x)x¯x¯=0Y¯Yx¯x¯YและCorr(β0,β1)=±1Corr(β^0,Y¯)=120.707ที่ป้ายอยู่ฝั่งตรงข้ามของˉx ในตัวอย่างในการจำลองด้านบนˉx=10และRMSD(x)5.16ดังนั้นค่าเฉลี่ยอยู่ที่1.93RMSDs จากy-axis; ในอัตราส่วนนี้ความสัมพันธ์ระหว่างการสกัดกั้นและความลาดชันนั้นแข็งแกร่งขึ้น แต่ความสัมพันธ์ระหว่างการสกัดกั้นและˉyยังคงไม่สำคัญCorr(β^0,β^1)=±12±0.707x¯x¯=10RMSD(x)5.161.93YY¯

นอกจากนี้ฉันชอบคิดสูตรสำหรับข้อผิดพลาดมาตรฐานของการสกัดกั้น

s.อี.(β^0OLS)=sยู2(1n+x¯2nเอ็มเอส(x))

ในฐานะและเหมือนกันสำหรับสูตรสำหรับข้อผิดพลาดมาตรฐานของปีที่x=x0(ใช้สำหรับช่วงความเชื่อมั่นสำหรับการตอบสนองค่าเฉลี่ยและที่ตัดเป็นเพียงกรณีพิเศษตามที่ผมอธิบายก่อนหน้านี้ผ่านการแปล ข้อโต้แย้ง),ข้อผิดพลาดในการเลื่อน+ข้อผิดพลาดการบิดY^x=x0

s.อี.(Y^)=sยู2(1n+(x0-x¯)2nเอ็มเอส(x))

รหัส R สำหรับแปลง

require(graphics)
require(grDevices)
require(animation

#This saves a GIF so you may want to change your working directory
#setwd("~/YOURDIRECTORY")
#animation package requires ImageMagick or GraphicsMagick on computer
#See: http://www.inside-r.org/packages/cran/animation/docs/im.convert
#You might only want to run up to the "STATIC PLOTS" section
#The static plot does not save a file, so need to change directory.

#Change as desired
simulations <- 100 #how many samples to draw and regress on
xvalues <- c(2,4,6,8,10,12,14,16,18) #used in all regressions
su <- 10 #standard deviation of error term
beta0 <- 5 #true intercept
beta1 <- 2 #true slope
plotAlpha <- 1/5 #transparency setting for charts
interceptPalette <- colorRampPalette(c(rgb(0,0,1,plotAlpha),
            rgb(1,0,0,plotAlpha)), alpha = TRUE)(100) #intercept color range
animationFrames <- 20 #how many samples to include in animation

#Consequences of previous choices
n <- length(xvalues) #sample size
meanX <- mean(xvalues) #same for all regressions
msdX <- sum((xvalues - meanX)^2)/n #Mean Square Deviation
minX <- min(xvalues)
maxX <- max(xvalues)
animationFrames <- min(simulations, animationFrames)

#Theoretical properties of estimators
expectedMeanY <- beta0 + beta1 * meanX
sdMeanY <- su / sqrt(n) #standard deviation of mean of Y (i.e. Y hat at mean x)
sdSlope <- sqrt(su^2 / (n * msdX))
sdIntercept <- sqrt(su^2 * (1/n + meanX^2 / (n * msdX)))


data.df <- data.frame(regression = rep(1:simulations, each=n),
                      x = rep(xvalues, times = simulations))

data.df$y <- beta0 + beta1*data.df$x + rnorm(n*simulations, mean = 0, sd = su) 

regressionOutput <- function(i){ #i is the index of the regression simulation
  i.df <- data.df[data.df$regression == i,]
  i.lm <- lm(y ~ x, i.df)
  return(c(i, mean(i.df$y), coef(summary(i.lm))["x", "Estimate"],
          coef(summary(i.lm))["(Intercept)", "Estimate"]))
}

estimates.df <- as.data.frame(t(sapply(1:simulations, regressionOutput)))
colnames(estimates.df) <- c("Regression", "MeanY", "Slope", "Intercept")

perc.rank <- function(x) ceiling(100*rank(x)/length(x))
rank.text <- function(x) ifelse(x < 50, paste("bottom", paste0(x, "%")), 
                                paste("top", paste0(101 - x, "%")))
estimates.df$percMeanY <- perc.rank(estimates.df$MeanY)
estimates.df$percSlope <- perc.rank(estimates.df$Slope)
estimates.df$percIntercept <- perc.rank(estimates.df$Intercept)
estimates.df$percTextMeanY <- paste("Mean Y", 
                                    rank.text(estimates.df$percMeanY))
estimates.df$percTextSlope <- paste("Slope",
                                    rank.text(estimates.df$percSlope))
estimates.df$percTextIntercept <- paste("Intercept",
                                    rank.text(estimates.df$percIntercept))

#data frame of extreme points to size plot axes correctly
extremes.df <- data.frame(x = c(min(minX,0), max(maxX,0)),
              y = c(min(beta0, min(data.df$y)), max(beta0, max(data.df$y))))

#STATIC PLOTS ONLY

par(mfrow=c(3,3))

#first draw empty plot to reasonable plot size
with(extremes.df, plot(x,y, type="n", main = "Estimated Mean Y"))
invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                 estimates.df$Intercept, beta1, 
                 interceptPalette[estimates.df$percIntercept]))

with(extremes.df, plot(x,y, type="n", main = "Estimated Slope"))
invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                 expectedMeanY - estimates.df$Slope * meanX, estimates.df$Slope, 
                 interceptPalette[estimates.df$percIntercept]))

with(extremes.df, plot(x,y, type="n", main = "Estimated Intercept"))
invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                 estimates.df$Intercept, estimates.df$Slope, 
                 interceptPalette[estimates.df$percIntercept]))

with(estimates.df, hist(MeanY, freq=FALSE, main = "Histogram of Mean Y",
                        ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdMeanY))))
curve(dnorm(x, mean=expectedMeanY, sd=sdMeanY), lwd=2, add=TRUE)

with(estimates.df, hist(Slope, freq=FALSE, 
                        ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdSlope))))
curve(dnorm(x, mean=beta1, sd=sdSlope), lwd=2, add=TRUE)

with(estimates.df, hist(Intercept, freq=FALSE, 
                        ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdIntercept))))
curve(dnorm(x, mean=beta0, sd=sdIntercept), lwd=2, add=TRUE)

with(estimates.df, plot(MeanY, Slope, pch = 16,  col = rgb(0,0,0,plotAlpha), 
                        main = "Scatter of Slope vs Mean Y"))

with(estimates.df, plot(Slope, Intercept, pch = 16, col = rgb(0,0,0,plotAlpha),
                        main = "Scatter of Intercept vs Slope"))

with(estimates.df, plot(Intercept, MeanY, pch = 16, col = rgb(0,0,0,plotAlpha),
                        main = "Scatter of Mean Y vs Intercept"))


#ANIMATED PLOTS

makeplot <- function(){for (i in 1:animationFrames) {

  par(mfrow=c(4,3))

  iMeanY <- estimates.df$MeanY[i]
  iSlope <- estimates.df$Slope[i]
  iIntercept <- estimates.df$Intercept[i]

  with(extremes.df, plot(x,y, type="n", main = paste("Simulated dataset", i)))
  with(data.df[data.df$regression==i,], points(x,y))
  abline(beta0, beta1, lwd = 2)
  abline(iIntercept, iSlope, lwd = 2, col="gold")

  plot.new()
  title(main = "Parameter Estimates")
  text(x=0.5, y=c(0.9, 0.5, 0.1), labels = c(
    paste("Mean Y =", round(iMeanY, digits = 2), "True =", expectedMeanY),
    paste("Slope =", round(iSlope, digits = 2), "True =", beta1),
    paste("Intercept =", round(iIntercept, digits = 2), "True =", beta0)))

  plot.new()
  title(main = "Percentile Ranks")
  with(estimates.df, text(x=0.5, y=c(0.9, 0.5, 0.1),
                          labels = c(percTextMeanY[i], percTextSlope[i],
                                     percTextIntercept[i])))


  #first draw empty plot to reasonable plot size
  with(extremes.df, plot(x,y, type="n", main = "Estimated Mean Y"))
  invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                   estimates.df$Intercept, beta1, 
                   interceptPalette[estimates.df$percIntercept]))
  abline(iIntercept, beta1, lwd = 2, col="gold")

  with(extremes.df, plot(x,y, type="n", main = "Estimated Slope"))
  invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                expectedMeanY - estimates.df$Slope * meanX, estimates.df$Slope, 
                interceptPalette[estimates.df$percIntercept]))
  abline(expectedMeanY - iSlope * meanX, iSlope,
         lwd = 2, col="gold")

  with(extremes.df, plot(x,y, type="n", main = "Estimated Intercept"))
  invisible(mapply(function(a,b,c) { abline(a, b, col=c) }, 
                   estimates.df$Intercept, estimates.df$Slope, 
                   interceptPalette[estimates.df$percIntercept]))
  abline(iIntercept, iSlope, lwd = 2, col="gold")

  with(estimates.df, hist(MeanY, freq=FALSE, main = "Histogram of Mean Y",
                          ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdMeanY))))
  curve(dnorm(x, mean=expectedMeanY, sd=sdMeanY), lwd=2, add=TRUE)
  lines(x=c(iMeanY, iMeanY),
        y=c(0, dnorm(iMeanY, mean=expectedMeanY, sd=sdMeanY)),
        lwd = 2, col = "gold")

  with(estimates.df, hist(Slope, freq=FALSE, 
                          ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdSlope))))
  curve(dnorm(x, mean=beta1, sd=sdSlope), lwd=2, add=TRUE)
  lines(x=c(iSlope, iSlope), y=c(0, dnorm(iSlope, mean=beta1, sd=sdSlope)),
        lwd = 2, col = "gold")

  with(estimates.df, hist(Intercept, freq=FALSE, 
                          ylim=c(0, 1.3*dnorm(0, mean=0, sd=sdIntercept))))
  curve(dnorm(x, mean=beta0, sd=sdIntercept), lwd=2, add=TRUE)
  lines(x=c(iIntercept, iIntercept),
        y=c(0, dnorm(iIntercept, mean=beta0, sd=sdIntercept)),
        lwd = 2, col = "gold")

  with(estimates.df, plot(MeanY, Slope, pch = 16,  col = rgb(0,0,0,plotAlpha), 
                          main = "Scatter of Slope vs Mean Y"))
  points(x = iMeanY, y = iSlope, pch = 16, col = "gold")

  with(estimates.df, plot(Slope, Intercept, pch = 16, col = rgb(0,0,0,plotAlpha),
                          main = "Scatter of Intercept vs Slope"))
  points(x = iSlope, y = iIntercept, pch = 16, col = "gold")

  with(estimates.df, plot(Intercept, MeanY, pch = 16, col = rgb(0,0,0,plotAlpha),
                          main = "Scatter of Mean Y vs Intercept"))
  points(x = iIntercept, y = iMeanY, pch = 16, col = "gold")

}}

saveGIF(makeplot(), interval = 4, ani.width = 500, ani.height = 600)

สำหรับพล็อตของความสัมพันธ์กับอัตราส่วนของถึง RMSD:x¯

require(ggplot2)

numberOfPoints <- 200
data.df  <- data.frame(
  ratio = rep(seq(from=-10, to=10, length=numberOfPoints), times=2),
  between = rep(c("Slope", "MeanY"), each=numberOfPoints))
data.df$correlation <- with(data.df, ifelse(between=="Slope",
  -ratio/sqrt(1+ratio^2),
  1/sqrt(1+ratio^2)))

ggplot(data.df, aes(x=ratio, y=correlation, group=factor(between),
                    colour=factor(between))) +
  theme_bw() + 
  geom_line(size=1.5) +
  scale_colour_brewer(name="Correlation between", palette="Set1",
                      labels=list(expression(hat(beta[0])*" and "*bar(y)),
                              expression(hat(beta[0])*" and "*hat(beta[1])))) +
  theme(legend.key = element_blank()) +
  ggtitle(expression("Correlation of intercept estimates with slope and "*bar(y))) +
  xlab(expression("Ratio of "*bar(X)/"RMSD(X)")) +
  ylab(expression(paste("Correlation")))

1
"twang" และ "slide" เป็นคำศัพท์ของฉัน นี่คือสัญชาตญาณการมองเห็นของฉันและไม่ใช่สิ่งที่ฉันเคยเห็นในตำราเรียนใด ๆ แม้ว่าความคิดพื้นฐานที่นี่จะเป็นเนื้อหามาตรฐานทั้งหมด คุณจะรู้ว่ามีชื่อทางเทคนิคมากกว่า "twang" และ "slide" หรือไม่! ฉันใช้คำตอบนี้จากหน่วยความจำในคำตอบของคำถามที่เกี่ยวข้องที่ฉันไม่เคยมีรอบที่จะเสร็จสิ้นและโพสต์ นั่นมีกราฟสอนเพิ่มเติมซึ่ง (ถ้าฉันสามารถติดตามรหัส R บนคอมพิวเตอร์เครื่องเก่าของฉันหรือหาเวลาที่จะทำซ้ำ) ฉันจะเพิ่ม
Silverfish

1
เป็นงานอะไร! ขอบคุณมาก! ตอนนี้ความเข้าใจของฉันต้องอยู่ในสภาพดีขึ้นมาก
Richard Hardy

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