Python တွင် box-cox အသွင်ပြောင်းနည်း
box-cox အသွင်ပြောင်းခြင်းသည် ပုံမှန်မဟုတ်သော ဖြန့်ဝေထားသောဒေတာအစုံကို ပိုမို သာမာန်ဖြန့်ဝေမှု အစုအဖြစ်သို့ ပြောင်းလဲရန်အတွက် အသုံးများသောနည်းလမ်းဖြစ်သည်။
ဤနည်းလမ်း၏နောက်ကွယ်တွင် အခြေခံအယူအဆမှာ အောက်ပါဖော်မြူလာကို အသုံးပြု၍ ပြောင်းလဲထားသောဒေတာသည် ပုံမှန်ဖြန့်ဝေမှုအတိုင်း ဖြစ်နိုင်ချေနီးစပ်သည့် λ တန်ဖိုးတစ်ခုကို ရှာဖွေရန်ဖြစ်သည်-
- y(λ) = (y λ – 1) / λ ဆိုလျှင် y ≠ 0
- y(λ) = log(y) ဆိုရင် y = 0
scipy.stats.boxcox() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ Python တွင် box-cox အသွင်ပြောင်းခြင်းကို လုပ်ဆောင်နိုင်သည်။
အောက်ဖော်ပြပါ ဥပမာသည် ဤလုပ်ဆောင်ချက်ကို လက်တွေ့အသုံးချနည်းကို ပြသထားသည်။
ဥပမာ- Python တွင် Box-Cox အသွင်ပြောင်းခြင်း။
ထပ်ကိန်းခွဲဝေမှု တစ်ခုမှ ကျွန်ုပ်တို့သည် ကျပန်းတန်ဖိုး 1000 ကို ထုတ်ပေးသည်ဆိုပါစို့။
#load necessary packages import numpy as np from scipy. stats import boxcox import seaborn as sns #make this example reproducible n.p. random . seeds (0) #generate dataset data = np. random . exponential (size= 1000 ) #plot the distribution of data values sns. distplot (data, hist= False , kde= True )
ဖြန့်ဖြူးမှုသည် ပုံမှန်မဟုတ်ကြောင်း ကျွန်ုပ်တို့ မြင်နိုင်သည်။
ပိုမိုသာမာန်ဖြန့်ဖြူးမှုကိုထုတ်ပေးသည့် lambda ၏အကောင်းဆုံးတန်ဖိုးကိုရှာဖွေရန် boxcox() လုပ်ဆောင်ချက်ကို ကျွန်ုပ်တို့အသုံးပြုနိုင်သည်-
#perform Box-Cox transformation on original data transformed_data, best_lambda = boxcox(data) #plot the distribution of the transformed data values sns. distplot (transformed_data, hist= False , kde= True )
အသွင်ပြောင်းဒေတာသည် သာမန်ထက်ပို၍ ဖြန့်ဝေမှုနောက်ဆက်တွဲဖြစ်ကြောင်း ကျွန်ုပ်တို့တွေ့မြင်နိုင်ပါသည်။
Box-Cox အသွင်ပြောင်းရာတွင် အသုံးပြုသည့် lambda တန်ဖိုး အတိအကျကိုလည်း ကျွန်ုပ်တို့ ရှာဖွေနိုင်သည်-
#display optimal lambda value print (best_lambda) 0.2420131978174143
အကောင်းဆုံး lambda ကို 0.242 ဝန်းကျင်တွင် တွေ့ရှိခဲ့သည်။
ထို့ကြောင့်၊ ဒေတာတန်ဖိုးတစ်ခုစီသည် အောက်ပါညီမျှခြင်းကို အသုံးပြု၍ ပြောင်းလဲခဲ့သည်-
အသစ် = (အဟောင်း 0.242 – 1) / 0.242
မူရင်းဒေတာ၏တန်ဖိုးများကို ကြည့်ခြင်းဖြင့် အသွင်ပြောင်းဒေတာကို ကျွန်ုပ်တို့အတည်ပြုနိုင်သည်-
#view first five values of original dataset data[0:5] array([0.79587451, 1.25593076, 0.92322315, 0.78720115, 0.55104849]) #view first five values of transformed dataset transformed_data[0:5] array([-0.22212062, 0.23427768, -0.07911706, -0.23247555, -0.55495228])
မူရင်းဒေတာအတွဲတွင် ပထမဆုံးတန်ဖိုးမှာ 0.79587 ဖြစ်သည်။ ထို့ကြောင့်၊ ဤတန်ဖိုးကို ပြောင်းလဲရန် အောက်ပါဖော်မြူလာကို ကျွန်ုပ်တို့ အသုံးပြုခဲ့သည်-
အသစ် = (.79587 0.242 – 1) / 0.242 = -0.222
ပြောင်းလဲထားသောဒေတာအတွဲရှိ ပထမတန်ဖိုးသည် အမှန်ပင် -0.222 ဖြစ်ကြောင်း ကျွန်ုပ်တို့ အတည်ပြုနိုင်ပါသည်။
ထပ်လောင်းအရင်းအမြစ်များ
Python တွင် QQ Plot တစ်ခုကို ဖန်တီးပြီး အဓိပါယ်ဖွင့်နည်း
Python တွင် Shapiro-Wilk Normality Test ကို မည်သို့လုပ်ဆောင်ရမည်နည်း။