วิธีแปลงข้อมูลใน python (log, square root, cube root)


การทดสอบทางสถิติจำนวนมากถือว่าชุดข้อมูลมีการกระจายตามปกติ อย่างไรก็ตาม ในทางปฏิบัติมักไม่เป็นเช่นนั้น

วิธีหนึ่งในการแก้ปัญหานี้คือการแปลงการกระจายค่าในชุดข้อมูลโดยใช้การแปลงแบบใดแบบหนึ่งจากสามแบบ:

1. การแปลงบันทึก: แปลงตัวแปรการตอบสนองจาก y เป็น log(y)

2. การแปลงรากที่สอง: แปลงตัวแปรตอบสนองจาก y เป็น √y

3. การแปลงรากที่สาม: แปลงตัวแปรการตอบสนองจาก y เป็น y 1/3

เมื่อทำการแปลงเหล่านี้ ชุดข้อมูลจะมีการกระจายตามปกติมากขึ้น

ตัวอย่างต่อไปนี้แสดงวิธีการแปลงข้อมูลเหล่านี้ใน Python

บันทึกการแปลงใน Python

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

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seeds (0)

#create beta distributed random variable with 200 values
data = np. random . beta (a= 4 , b= 15 , size= 300 )

#create log-transformed data
data_log = np. log (data)

#define grid of plots
fig, axs = plt. subplots (nrows= 1 , ncols= 2 )

#create histograms
axs[0]. hist (data, edgecolor=' black ')
axs[1]. hist (data_log, edgecolor=' black ')

#add title to each histogram
axs[0]. set_title (' Original Data ')
axs[1].set_title(' Log-Transformed Data ')

สังเกตว่าการแจกแจงที่แปลงบันทึกนั้นมีการกระจายแบบปกติมากกว่าการแจกแจงดั้งเดิมอย่างไร

มันยังไม่ใช่ “รูปทรงระฆัง” ที่สมบูรณ์แบบแต่มีความใกล้เคียงกับการกระจายตัวแบบปกติมากกว่าการกระจายตัวแบบเดิม

การแปลงรากที่สองใน Python

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

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seeds (0)

#create beta distributed random variable with 200 values
data = np. random . beta (a= 1 , b= 5 , size= 300 )

#create log-transformed data
data_log = np. sqrt (data)

#define grid of plots
fig, axs = plt. subplots (nrows= 1 , ncols= 2 )

#create histograms
axs[0]. hist (data, edgecolor=' black ')
axs[1]. hist (data_log, edgecolor=' black ')

#add title to each histogram
axs[0]. set_title (' Original Data ')
axs[1].set_title(' Square Root Transformed Data ') 

สังเกตว่าข้อมูลที่แปลงรากที่สองนั้นมีการกระจายแบบปกติมากกว่าข้อมูลดั้งเดิมอย่างไร

การแปลงรูทคิวบ์ใน Python

รหัสต่อไปนี้แสดงวิธีการดำเนิน การแปลงรากของคิวบ์ บนตัวแปรและสร้างการลงจุดแบบเคียงข้างกันเพื่อแสดงการแจกแจงแบบเดิมและการกระจายแบบแปลงรากของคิวบ์ของข้อมูล:

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seeds (0)

#create beta distributed random variable with 200 values
data = np. random . beta (a= 1 , b= 5 , size= 300 )

#create log-transformed data
data_log = np. cbrt (data)

#define grid of plots
fig, axs = plt. subplots (nrows= 1 , ncols= 2 )

#create histograms
axs[0]. hist (data, edgecolor=' black ')
axs[1]. hist (data_log, edgecolor=' black ')

#add title to each histogram
axs[0]. set_title (' Original Data ')
axs[1].set_title(' Cube Root Transformed Data ') 

สังเกตว่าข้อมูลที่แปลงรูทของคิวบ์นั้นมีการกระจายตามปกติมากกว่าข้อมูลดั้งเดิมอย่างไร

แหล่งข้อมูลเพิ่มเติม

วิธีคำนวณคะแนน Z ใน Python
วิธีทำให้ข้อมูลเป็นมาตรฐานใน Python
ข้อสันนิษฐานปกติในสถิติคืออะไร?

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *