ข้อผิดพลาดมาตรฐานของความลาดชันในการถดถอยเชิงเส้นแบบชิ้นเดียวพร้อมกับเบรกพอยต์ที่รู้จัก


9

สถานการณ์

ฉันมีชุดข้อมูลที่มีขึ้นหนึ่งและเป็นหนึ่งในตัวแปรอิสระxฉันต้องการที่จะพอดีกับค่อย่างต่อเนื่องถดถอยเชิงเส้นกับที่รู้จักกัน / จุดพักคงเกิดขึ้นใน{k}) เบรกพอยต์เป็นที่รู้จักโดยไม่มีความแน่นอนดังนั้นฉันไม่ต้องการที่จะประเมินพวกมัน จากนั้นฉันก็พอดีกับการถดถอย (OLS) ของรูปแบบ y_ {i} = \ beta_ {0} + \ beta_ {1} x_ {i} + \ beta_ {2} \ operatorname {max} (x_ {i} -a_ { 1}, 0) + \ beta_ {3} \ operatorname {max} (x_ {i} -a_ {2}, 0) + \ ldots + \ beta_ {k + 1} \ operatorname {max} (x_ {i} - a_ {k}, 0) + \ epsilon_ {i} นี่คือตัวอย่างyxk(a1,a2,...,ak)

Yผม=β0+β1xผม+β2สูงสุด(xผม-a1,0)+β3สูงสุด(xผม-a2,0)+...+βk+1สูงสุด(xผม-ak,0)+εผม
R
set.seed(123)
x <- c(1:10, 13:22)
y <- numeric(20)
y[1:10] <- 20:11 + rnorm(10, 0, 1.5)
y[11:20] <- seq(11, 15, len=10) + rnorm(10, 0, 2)

สมมติว่าเบรกพอยต์k1เกิดขึ้นที่9.6 :

mod <- lm(y~x+I(pmax(x-9.6, 0)))
summary(mod)

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)          21.7057     1.1726  18.511 1.06e-12 ***
x                    -1.1003     0.1788  -6.155 1.06e-05 ***
I(pmax(x - 9.6, 0))   1.3760     0.2688   5.120 8.54e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

การสกัดกั้นและความชันของทั้งสองเซ็กเมนต์คือ:และสำหรับอันแรกและและสำหรับวินาทีตามลำดับ21.7-1.18.50.27

เบรกพอยต์


คำถาม

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

คำตอบ:


7
  1. จะคำนวณการสกัดกั้นและความชันของแต่ละส่วนได้อย่างไร

ความชันของแต่ละเซ็กเมนต์นั้นคำนวณได้โดยเพียงแค่เพิ่มค่าสัมประสิทธิ์ทั้งหมดไปยังตำแหน่งปัจจุบัน ดังนั้นการประมาณการความลาดชันที่เป็น \,x=15-1.1003+1.3760=0.2757

การสกัดกั้นนั้นยากขึ้นเล็กน้อย แต่เป็นการรวมกันของสัมประสิทธิ์เชิงเส้น (เกี่ยวข้องกับนอต)

ในตัวอย่างของบรรทัดที่สองได้พบกับครั้งแรกที่ดังนั้นจุดสีแดงที่อยู่บนบรรทัดแรกที่11.1428 ตั้งแต่บรรทัดที่สองผ่านจุดมีความลาดชันตัดของมันคือ8.496 แน่นอนคุณสามารถวางขั้นตอนเหล่านั้นเข้าด้วยกันและมันช่วยลดความยุ่งยากลงไปทางขวาเพื่อตัดสำหรับส่วนที่สอง =9.6x=9.621.7057-1.1003×9.6=11.1428(9.6,11.428)0.275711.14280.2757×9.6=8.496β0β2k1=21.70571.3760×9.6

สามารถจำลองแบบจำลองพารามิเตอร์ใหม่เพื่อทำสิ่งนี้ในการคำนวณเดียวได้หรือไม่

ใช่ แต่มันอาจจะง่ายกว่าที่จะคำนวณจากตัวแบบ

2. วิธีการคำนวณข้อผิดพลาดมาตรฐานของแต่ละความชันของแต่ละส่วน?

ตั้งแต่การประเมินคือการรวมกันเชิงเส้นของค่าสัมประสิทธิ์การถดถอยที่ประกอบด้วย 1 และ 0s แปรปรวนคือ เบต้าบริการ) ข้อผิดพลาดมาตรฐานคือรากที่สองของผลรวมของความแปรปรวนและเงื่อนไขความแปรปรวนร่วมนั้นaβ^aaVar(β^)a

เช่นในตัวอย่างของคุณข้อผิดพลาดมาตรฐานของความชันของส่วนที่สองคือ:

Sb <- vcov(mod)[2:3,2:3]
sqrt(sum(Sb))

อีกรูปแบบหนึ่งในเมทริกซ์:

Sb <- vcov(mod)
a <- matrix(c(0,1,1),nr=3)
sqrt(t(a) %*% Sb %*% a)

3. วิธีการทดสอบว่าสองเนินที่อยู่ติดกันมีความลาดชันเท่ากันหรือไม่

นี่คือการทดสอบโดยดูที่ค่าสัมประสิทธิ์ในตารางของส่วนนั้น ดูบรรทัดนี้:

I(pmax(x - 9.6, 0))   1.3760     0.2688   5.120 8.54e-05 ***

นั่นคือการเปลี่ยนแปลงของความชันที่ 9.6 หากการเปลี่ยนแปลงนั้นแตกต่างจาก 0 ทั้งสองเนินจะไม่เหมือนกัน ดังนั้นค่า p สำหรับการทดสอบว่าส่วนที่สองมีความชันเท่ากับส่วนแรกอยู่ตรงจุดสิ้นสุดของบรรทัดนั้น


(+1) ขอบคุณ Glen สำหรับคำตอบของคุณ เพียงคำถามเล็ก ๆ น้อย ๆ เกี่ยวกับ # 2: ในตัวอย่างของฉันฉันต้องการเมทริกซ์ความแปรปรวนร่วมและความแปรปรวนร่วมของxและI(pmax(x-9.6,0))นั่นถูกต้องหรือไม่
COOLSerdash

ไม่ฉันได้แก้ไขตัวอย่างที่ชัดเจนตามตัวอย่างของคุณแล้ว หากคุณต้องการรายละเอียดเพิ่มเติมกรุณาถาม
Glen_b -Reinstate Monica

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

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

6

วิธีการไร้เดียงสาของฉันซึ่งตอบคำถาม 1:

mod2 <- lm(y~I((x<9.6)*x)+as.numeric((x<9.6))+
             I((x>=9.6)*x)+as.numeric((x>=9.6))-1)
summary(mod2)

#                        Estimate Std. Error t value Pr(>|t|)    
# I((x < 9.6) * x)        -1.1040     0.2328  -4.743 0.000221 ***
# as.numeric((x < 9.6))   21.7188     1.3099  16.580 1.69e-11 ***
# I((x >= 9.6) * x)        0.2731     0.1560   1.751 0.099144 .  
# as.numeric((x >= 9.6))   8.5442     2.6790   3.189 0.005704 ** 

แต่ฉันไม่แน่ใจว่าสถิติ (โดยเฉพาะอย่างยิ่งองศาอิสระ) นั้นถูกต้องหรือไม่ถ้าคุณทำแบบนี้


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