Biến đổi điểm bình thường Python

Trong thống kê, điểm z cho chúng tôi biết một giá trị cách giá trị trung bình bao nhiêu độ lệch chuẩn. Chúng tôi sử dụng công thức sau để tính điểm z

z = [X – μ] / σ

ở đâu

  • X là một giá trị dữ liệu thô duy nhất
  • μ là trung bình dân số
  • σ là độ lệch chuẩn dân số

Hướng dẫn này giải thích cách tính điểm z cho các giá trị dữ liệu thô trong Python

Cách tính Điểm Z trong Python

Chúng tôi có thể tính điểm z trong Python bằng cách sử dụng scipy. số liệu thống kê. zscore, sử dụng cú pháp sau

scipy. số liệu thống kê. zscore[a, axis=0, ddof=0, nan_policy=’propagate’]

ở đâu

  • a. một mảng giống như đối tượng chứa dữ liệu
  • trục. trục dọc theo đó để tính điểm z. Mặc định là 0
  • ddof. bậc tự do hiệu chỉnh trong tính toán độ lệch chuẩn. Mặc định là 0
  • nan_policy. cách xử lý khi đầu vào chứa nan. Mặc định là lan truyền, trả về nan. 'nâng cao' đưa ra lỗi và 'bỏ qua' thực hiện các phép tính bỏ qua các giá trị nan

Các ví dụ sau đây minh họa cách sử dụng hàm này để tính toán điểm z cho các mảng có nhiều nốt sần một chiều, các mảng có nhiều nốt sần nhiều chiều và Khung dữ liệu Pandas

Mảng một chiều Numpy

Bước 1. Nhập mô-đun

import pandas as pd
import numpy as np
import scipy.stats as stats

Bước 2. Tạo một mảng các giá trị

data = np.array[[6, 7, 7, 12, 13, 13, 15, 16, 19, 22]]

Bước 3. Tính điểm số z cho từng giá trị trong mảng

stats.zscore[data]

[-1.394, -1.195, -1.195, -0.199, 0, 0, 0.398, 0.598, 1.195, 1.793]

Mỗi điểm số z cho chúng ta biết có bao nhiêu độ lệch chuẩn của một giá trị riêng lẻ so với giá trị trung bình. Ví dụ

  • Giá trị đầu tiên của "6" trong mảng là 1. 394 độ lệch chuẩn dưới giá trị trung bình
  • Giá trị thứ năm của "13" trong mảng là 0 độ lệch chuẩn so với giá trị trung bình, i. e. nó bằng với giá trị trung bình
  • Giá trị cuối cùng của "22" trong mảng là 1. 793 độ lệch chuẩn trên giá trị trung bình

Mảng đa chiều Numpy

Nếu chúng ta có một mảng nhiều chiều, thì chúng ta có thể sử dụng tham số trục để chỉ định rằng chúng ta muốn tính toán từng điểm số z so với mảng riêng của nó. Ví dụ: giả sử chúng ta có mảng nhiều chiều sau

data = np.array[[[5, 6, 7, 7, 8],
                 [8, 8, 8, 9, 9],
                 [2, 2, 4, 4, 5]]]

Chúng ta có thể sử dụng cú pháp sau để tính điểm z cho mỗi mảng

stats.zscore[data, axis=1]

[[-1.569 -0.588 0.392 0.392 1.373]
[-0.816 -0.816 -0.816 1.225 1.225]
[-1.167 -1.167 0.5 0.5 1.333]]

Điểm số z cho từng giá trị riêng lẻ được hiển thị tương ứng với mảng mà chúng nằm trong. Ví dụ

  • Giá trị đầu tiên của "5" trong mảng đầu tiên là 1. 159 độ lệch chuẩn dưới giá trị trung bình của mảng
  • Giá trị đầu tiên của “8” trong mảng thứ hai là. 816 độ lệch chuẩn dưới giá trị trung bình của mảng
  • Giá trị đầu tiên của "2" trong mảng thứ ba là 1. 167 độ lệch chuẩn dưới giá trị trung bình của mảng

Khung dữ liệu gấu trúc

Giả sử thay vào đó chúng ta có Pandas DataFrame

data = pd.DataFrame[np.random.randint[0, 10, size=[5, 3]], columns=['A', 'B', 'C']]
data

  A B C
0 8 0 9
1 4 0 7
2 9 6 8
3 1 8 1
4 8 0 8

Chúng ta có thể sử dụng hàm apply để tính điểm z của các giá trị riêng lẻ theo cột

data.apply[stats.zscore]

          A         B         C
0  0.659380 -0.802955  0.836080
1 -0.659380 -0.802955  0.139347
2  0.989071  0.917663  0.487713
3 -1.648451  1.491202 -1.950852
4  0.659380 -0.802955  0.487713

Điểm số z cho từng giá trị riêng lẻ được hiển thị tương ứng với cột mà chúng nằm trong. Ví dụ

  • Giá trị đầu tiên của "8" trong cột đầu tiên là 0. 659 độ lệch chuẩn trên giá trị trung bình của cột
  • Giá trị đầu tiên của "0" trong cột thứ hai là. 803 độ lệch chuẩn bên dưới giá trị trung bình của cột
  • Giá trị đầu tiên của "9" trong cột thứ ba là. 836 độ lệch chuẩn trên giá trị trung bình của cột
    Nhiều bài kiểm tra thống kê đưa ra giả định rằng các bộ dữ liệu được phân phối bình thường. Tuy nhiên, điều này thường không xảy ra trong thực tế

    Một cách để giải quyết vấn đề này là chuyển đổi phân phối giá trị trong tập dữ liệu bằng một trong ba chuyển đổi

    1. Chuyển đổi nhật ký. Chuyển đổi biến phản hồi từ y thành log[y]

    2. Phép biến đổi căn bậc hai. Biến đổi biến phản hồi từ y thành √ y .

    3. Chuyển đổi gốc khối. Biến đổi biến phản ứng từ y thành y1/3

    Bằng cách thực hiện các phép biến đổi này, tập dữ liệu thường được phân phối bình thường hơn

    Các ví dụ sau đây cho thấy cách thực hiện các phép biến đổi này trong Python

    Chuyển đổi nhật ký trong Python

    Đoạn mã sau cho biết cách thực hiện chuyển đổi căn bậc ba trên một biến và tạo các ô cạnh nhau để xem phân phối ban đầu và phân phối gốc khối đã chuyển đổi của dữ liệu

Chủ Đề