เส้นโค้งเป็นระยะเพื่อให้พอดีกับข้อมูลเป็นระยะ


10

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


2
ตรวจสอบคำตอบของคำถามอื่นของฉัน stats.stackexchange.com/questions/225729/…
Haitao Du

@ hxd1011 ขอบคุณฉันขอขอบคุณเคล็ดลับ ในตอนท้ายฉันตัดสินใจที่จะทำซ้ำข้อมูลสองครั้งดังนั้นจึงมีชุดข้อมูลที่เหมือนกันสามชุดติดต่อกัน คำตอบที่คุณอ้างถึงยังระบุว่านี่เป็นทางเลือกอื่น
DeltaIV

1
@DeltaIV หากคุณสามารถแปลงความคิดเห็นของคุณเป็นคำตอบและให้รายละเอียดเพิ่มเติมฉันคิดว่ามันเป็นคำตอบที่ดีและเป็นคำถามที่ดีที่จะมีการแก้ปัญหาบางอย่าง
AdamO

@AdamO ขอบคุณสำหรับคำแนะนำ แต่ในช่วงเวลานี้ของปีฉันค่อนข้างล้น :-) ฉันจะลองดู ครั้งแรกที่ผมของทุกคนควรดึงรหัสที่ ...
DeltaIV

คำตอบ:


5

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

ระยะรุ่นของเส้นโค้งเป็นเพียงรุ่นเป็นระยะของการถดถอยใด ๆ : ข้อมูลจะถูกตัดเป็นซ้ำของความยาวของระยะเวลา ตัวอย่างเช่นการสร้างแบบจำลองแนวโน้มรายวันในการทดลองหลายวันบนหนูจะต้องใช้เวลาในการบันทึกใหม่ของการทดลองเพิ่มขึ้น 24 ชั่วโมงดังนั้นชั่วโมงที่ 154 จะเป็นค่าโมดูโล 24 จาก 10 (154 = 6 * 24 + 10) หากคุณพอดีกับการถดถอยเชิงเส้นในข้อมูลการตัดมันจะประมาณรูปคลื่นของใบเลื่อยสำหรับแนวโน้ม ถ้าคุณใส่ฟังก์ชั่นสเต็ปในที่ใดช่วงหนึ่งมันจะเป็นรูปคลื่นที่เหมาะกับซีรีย์ เส้นโค้งมีความสามารถในการแสดงเวฟที่ซับซ้อนมากขึ้น สำหรับสิ่งที่คุ้มค่าในsplinesแพ็คเกจมีฟังก์ชั่นperiodicSplineที่ทำสิ่งนี้อย่างแน่นอน

พีnkพีพี+ผมผมnkSพี+ผม=(X-kผม)พีผม(X<kผม)k

myspline <- function(x, degree, knots) {
  knots <- sort(knots)
  val <- cbind(x, outer(x, knots, `-`))
  val[val < 0] <- 0
  val <- val^degree
  if(degree > 1)
    val <- cbind(outer(x, 1:{degree-1}, `^`), val)
  colnames(val) <- c(
    paste0('spline', 1:{degree-1}, '.1'),
    paste0('spline', degree, '.', seq(length(knots)+1))
  )
  val
}

2πτ

x <- seq(0, 2*pi, by=pi/2^8)
y <- sin(x)
plot(x,y, type='l')
s <- myspline(x, 2, pi)
fit <- lm(y ~ s)
yhat <- predict(fit)
lines(x,yhat)

คุณจะเห็นว่าพวกมันค่อนข้างสอดคล้องกัน นอกจากนี้อนุสัญญาการตั้งชื่อช่วยให้การตีความ ในผลลัพธ์การถดถอยที่คุณเห็น:

> summary(fit)

Call:
lm(formula = y ~ s)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.04564 -0.02050  0.00000  0.02050  0.04564 

Coefficients:
             Estimate Std. Error  t value Pr(>|t|)    
(Intercept) -0.033116   0.003978   -8.326 7.78e-16 ***
sspline1.1   1.268812   0.004456  284.721  < 2e-16 ***
sspline2.1  -0.400520   0.001031 -388.463  < 2e-16 ***
sspline2.2   0.801040   0.001931  414.878  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.02422 on 509 degrees of freedom
Multiple R-squared:  0.9988,    Adjusted R-squared:  0.9988 
F-statistic: 1.453e+05 on 3 and 509 DF,  p-value: < 2.2e-16

π/2

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

สมมติว่าฉันสร้างเสียงดังต่อไปนี้ค่อนข้างอนุกรมเวลานาน

x <- seq(1, 100, by=0.01)
y <- sin(x) + rnorm(length(x), 0, 10)
xp <- x %% (2*pi)
s <- myspline(xp, degree=2, knots=pi)
lm(y ~ s)

ผลลัพธ์ที่ได้แสดงให้เห็นถึงประสิทธิภาพที่เหมาะสม

> summary(fit)

Call:
lm(formula = y ~ s)

Residuals:
    Min      1Q  Median      3Q     Max 
-39.585  -6.736   0.013   6.750  37.389 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.48266    0.38155  -1.265 0.205894    
sspline1.1   1.52798    0.42237   3.618 0.000299 ***
sspline2.1  -0.44380    0.09725  -4.564 5.09e-06 ***
sspline2.2   0.76553    0.18198   4.207 2.61e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 9.949 on 9897 degrees of freedom
Multiple R-squared:  0.006406,  Adjusted R-squared:  0.006105 
F-statistic: 21.27 on 3 and 9897 DF,  p-value: 9.959e-14
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.