كيفية إجراء تحويل box-cox في بايثون


يعد تحويل box-cox طريقة شائعة الاستخدام لتحويل مجموعة بيانات غير موزعة بشكل طبيعي إلى مجموعة موزعة بشكل طبيعي .

الفكرة الأساسية وراء هذه الطريقة هي إيجاد قيمة لـ lect بحيث تكون البيانات المحولة قريبة قدر الإمكان من التوزيع الطبيعي، باستخدام الصيغة التالية:

  • y() = (y – 1) /  إذا y ≠ 0
  • y(lect) = log(y) إذا كانت y = 0

يمكننا إجراء تحويل box-cox في بايثون باستخدام الدالة scipy.stats.boxcox() .

يوضح المثال التالي كيفية استخدام هذه الوظيفة عمليًا.

مثال: تحويل 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 ) 

يمكننا أن نرى أن التوزيع لا يبدو طبيعيا.

يمكننا استخدام الدالة boxcox() ‎ للعثور على القيمة المثلى لـ lambda التي تنتج توزيعًا أكثر طبيعية:

 #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 في بايثون

يمكننا أن نرى أن البيانات المحولة تتبع توزيعًا طبيعيًا أكثر بكثير.

يمكننا أيضًا العثور على قيمة لامدا الدقيقة المستخدمة لإجراء تحويل Box-Cox:

 #display optimal lambda value
print (best_lambda)

0.2420131978174143

تم العثور على لامدا الأمثل ليكون حوالي 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 .

مصادر إضافية

كيفية إنشاء وتفسير مؤامرة QQ في بايثون
كيفية إجراء اختبار الحالة الطبيعية لشابيرو ويلك في بايثون

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *