R ဖြင့် piecewise regression ကို မည်သို့လုပ်ဆောင်ရမည်နည်း (တစ်ဆင့်ပြီးတစ်ဆင့်)


Piecewise regression သည် data set တစ်ခုတွင် ရှင်းလင်းသော “ breakpoints” များရှိနေသောအခါတွင် ကျွန်ုပ်တို့အသုံးပြုလေ့ရှိသော ဆုတ်ယုတ်မှုနည်းလမ်းတစ်ခုဖြစ်သည်။

အောက်ဖော်ပြပါ အဆင့်ဆင့် ဥပမာသည် R တွင် တစ်စစီ ဆုတ်ယုတ်မှုကို မည်သို့လုပ်ဆောင်ရမည်ကို ပြသထားသည်။

အဆင့် 1: ဒေတာကိုဖန်တီးပါ။

ပထမဦးစွာ၊ အောက်ပါဒေတာဘောင်ကိုဖန်တီးကြပါစို့။

 #view DataFrame
df <- data. frame (x=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16),
                 y=c(2, 4, 5, 6, 8, 10, 12, 13, 15, 19, 24, 28, 31, 34, 39, 44))

#view first six rows of data frame
head(df)

  xy
1 1 2
2 2 4
3 3 5
4 4 6
5 5 8
6 6 10

အဆင့် 2- ဒေတာကို မြင်ယောင်ကြည့်ပါ။

ထို့နောက်၊ ဒေတာကိုမြင်ယောင်ရန် scatterplot တစ်ခုကိုဖန်တီးကြပါစို့။

 #create scatterplot of x vs. y
plot(df$x, df$y, pch= 16 , col=' steelblue ')

x နှင့် y အကြား ဆက်နွယ်မှုမှာ x = 9 အနီးတွင် ရုတ်တရက် ပြောင်းလဲသွားသည်ကို တွေ့နိုင်သည်။

အဆင့် 3- အပိုင်းလိုက် ဆုတ်ယုတ်မှုပုံစံကို အံကိုက်လုပ်ပါ။

ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ဒေတာအတွဲနှင့် တစ်စိတ်တစ်ပိုင်း ဆုတ်ယုတ်မှုပုံစံကို အံဝင်ခွင်ကျဖြစ်စေရန်အတွက် R တွင် အပိုင်းပိုင်းခွဲထားသော အထုပ်မှ segmented() လုပ်ဆောင်ချက်ကို အသုံးပြုနိုင်ပါသည်။

 library (segmented)

#fit simple linear regression model
fit <- lm(y ~ x, data=df)

#fit piecewise regression model to original model, estimating a breakpoint at x=9
segmented. fit <- segmented(fit, seg.Z = ~x, psi= 9 )

#view summary of segmented model
summary( segmented.fit )

Call: 
segmented.lm(obj = fit, seg.Z = ~x, psi = 9)

Estimated Break-Point(s):
         East. St.Err
psi1.x 8.762 0.26

Meaningful coefficients of the linear terms:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.32143 0.48343 0.665 0.519    
x 1.59524 0.09573 16.663 1.16e-09 ***
U1.x 2.40476 0.13539 17.762 NA    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.6204 on 12 degrees of freedom
Multiple R-Squared: 0.9983, Adjusted R-squared: 0.9978 

Convergence achieved in 2 iter. (rel. changes 0)

segmented() function သည် x = 8.762 တွင် breakpoint တစ်ခုကို ရှာဖွေတွေ့ရှိသည်။

တပ်ဆင်ထားသော အပိုင်းပိုင်းဆုတ်ယုတ်မှုပုံစံသည်-

အကယ်၍ x ≤ 8.762: y = 0.32143 + 1.59524*(x)

အကယ်၍ x > 8.762: y = 0.32143 + 1.59524*(8.762) + (1.59524+2.40476)*(x-8.762)

ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့တွင် x = 5 တန်ဖိုးရှိသည်ဆိုပါစို့။ ခန့်မှန်းတန်ဖိုးမှာ-

  • y = 0.32143 + 1.59524*(x)
  • y = 0.32143 + 1.59524*(5)
  • y = 8.297

ဒါမှမဟုတ် ငါတို့မှာ x = 12 တန်ဖိုးရှိတယ်ဆိုပါစို့။ ခန့်မှန်းတန်ဖိုးမှာ-

  • y = 0.32143 + 1.59524*(8.762) + (1.59524+2.40476)*(12-8.762)
  • y = 27.25

အဆင့် 4- နောက်ဆုံး တစ်စိတ်တစ်ပိုင်းဆုတ်ယုတ်မှုပုံစံကို မြင်ယောင်ကြည့်ပါ။

ကျွန်ုပ်တို့၏မူရင်းဒေတာ၏ထိပ်တွင် နောက်ဆုံး တစ်စိတ်တစ်ပိုင်းဆုတ်ယုတ်မှုပုံစံကို မြင်ယောင်နိုင်ရန် အောက်ပါကုဒ်ကို အသုံးပြုနိုင်ပါသည်။

 #plot original data
plot(df$x, df$y, pch= 16 , col=' steelblue ')

#add segmented regression model
plot(segmented. fit , add= T )

အစိတ်အပိုင်းအလိုက် ဆုတ်ယုတ်မှုပုံစံသည် ဒေတာနှင့် အလွန်ကိုက်ညီမှုရှိပုံပေါ်သည်။

ထပ်လောင်းအရင်းအမြစ်များ

အောက်ဖော်ပြပါ သင်ခန်းစာများသည် R တွင် ဆုတ်ယုတ်မှုပုံစံများအကြောင်း နောက်ထပ်အချက်အလက်များကို ပေးဆောင်သည်-

R တွင် ရိုးရှင်းသော linear regression လုပ်နည်း
R တွင် linear regression အများအပြားလုပ်ဆောင်နည်း
R တွင် logistic regression ကို မည်သို့လုပ်ဆောင်ရမည်နည်း
R တွင် Quantile Regression ကို မည်သို့လုပ်ဆောင်ရမည်နည်း
R တွင် အလေးချိန် ဆုတ်ယုတ်မှုကို မည်သို့လုပ်ဆောင်ရမည်နည်း

မှတ်ချက်တစ်ခုထည့်ပါ။

သင့် email လိပ်စာကို ဖော်ပြမည် မဟုတ်ပါ။ လိုအပ်သော ကွက်လပ်များကို * ဖြင့်မှတ်သားထားသည်