SciPy - Số liệu thống kê

Tất cả các chức năng thống kê nằm trong gói phụ scipy.stats và một danh sách khá đầy đủ về các chức năng này có thể được lấy bằng cách sử dụng info(stats)chức năng. Danh sách các biến ngẫu nhiên có sẵn cũng có thể được lấy từdocstringcho gói con số liệu thống kê. Mô-đun này chứa một số lượng lớn các phân phối xác suất cũng như một thư viện các hàm thống kê đang phát triển.

Mỗi phân phối đơn biến có lớp con riêng của nó như được mô tả trong bảng sau:

Sr không. Lớp & Mô tả
1

rv_continuous

Một lớp biến ngẫu nhiên liên tục chung chung dành cho phân lớp

2

rv_discrete

Một lớp biến ngẫu nhiên rời rạc chung chung dành cho phân lớp

3

rv_histogram

Tạo phân phối được cung cấp bởi biểu đồ

Biến ngẫu nhiên liên tục bình thường

Phân phối xác suất trong đó biến ngẫu nhiên X có thể nhận bất kỳ giá trị nào là biến ngẫu nhiên liên tục. Từ khóa location (loc) chỉ định giá trị trung bình. Từ khóa thang đo (scale) chỉ định độ lệch chuẩn.

Như một ví dụ của rv_continuous lớp học, norm đối tượng kế thừa từ nó một tập hợp các phương thức chung và hoàn thiện chúng với các chi tiết cụ thể cho bản phân phối cụ thể này.

Để tính CDF tại một số điểm, chúng ta có thể chuyển một danh sách hoặc một mảng NumPy. Chúng ta hãy xem xét ví dụ sau.

from scipy.stats import norm
import numpy as np
print norm.cdf(np.array([1,-1., 0, 1, 3, 4, -2, 6]))

Chương trình trên sẽ tạo ra kết quả sau.

array([ 0.84134475, 0.15865525, 0.5 , 0.84134475, 0.9986501 ,
0.99996833, 0.02275013, 1. ])

Để tìm trung vị của một phân phối, chúng ta có thể sử dụng Hàm phần trăm điểm (PPF), hàm này là nghịch đảo của CDF. Hãy để chúng tôi hiểu bằng cách sử dụng ví dụ sau.

from scipy.stats import norm
print norm.ppf(0.5)

Chương trình trên sẽ tạo ra kết quả sau.

0.0

Để tạo một chuỗi các biến thể ngẫu nhiên, chúng ta nên sử dụng đối số từ khóa kích thước, được hiển thị trong ví dụ sau.

from scipy.stats import norm
print norm.rvs(size = 5)

Chương trình trên sẽ tạo ra kết quả sau.

array([ 0.20929928, -1.91049255, 0.41264672, -0.7135557 , -0.03833048])

Đầu ra trên không thể tái tạo. Để tạo các số ngẫu nhiên giống nhau, hãy sử dụng hàm hạt giống.

Phân bố đồng đều

Một phân phối đồng đều có thể được tạo ra bằng cách sử dụng hàm đồng nhất. Chúng ta hãy xem xét ví dụ sau.

from scipy.stats import uniform
print uniform.cdf([0, 1, 2, 3, 4, 5], loc = 1, scale = 4)

Chương trình trên sẽ tạo ra kết quả sau.

array([ 0. , 0. , 0.25, 0.5 , 0.75, 1. ])

Xây dựng phân phối rời rạc

Hãy để chúng tôi tạo một mẫu ngẫu nhiên và so sánh các tần số quan sát được với các xác suất.

Phân phối nhị thức

Như một ví dụ của rv_discrete class, các binom objectkế thừa từ đó một tập hợp các phương pháp chung và hoàn thiện chúng với các chi tiết cụ thể cho bản phân phối cụ thể này. Chúng ta hãy xem xét ví dụ sau.

from scipy.stats import uniform
print uniform.cdf([0, 1, 2, 3, 4, 5], loc = 1, scale = 4)

Chương trình trên sẽ tạo ra kết quả sau.

array([ 0. , 0. , 0.25, 0.5 , 0.75, 1. ])

Thống kê mô tả

Các thống kê cơ bản như Min, Max, Mean và Variance lấy mảng NumPy làm đầu vào và trả về các kết quả tương ứng. Một số hàm thống kê cơ bản có sẵn trongscipy.stats package được mô tả trong bảng sau.

Sr không. Mô tả chức năng
1

describe()

Tính toán một số thống kê mô tả của mảng đã truyền

2

gmean()

Tính toán trung bình hình học dọc theo trục được chỉ định

3

hmean()

Tính toán trung bình hài dọc theo trục được chỉ định

4

kurtosis()

Tính kurtosis

5

mode()

Trả về giá trị phương thức

6

skew()

Kiểm tra độ lệch của dữ liệu

7

f_oneway()

Thực hiện ANOVA 1 chiều

số 8

iqr()

Tính toán phạm vi liên phần của dữ liệu dọc theo trục được chỉ định

9

zscore()

Tính điểm z của mỗi giá trị trong mẫu, so với giá trị trung bình của mẫu và độ lệch chuẩn

10

sem()

Tính toán sai số chuẩn của giá trị trung bình (hoặc sai số chuẩn của phép đo) của các giá trị trong mảng đầu vào

Một số chức năng này có phiên bản tương tự trong scipy.stats.mstats, hoạt động cho các mảng bị che. Hãy để chúng tôi hiểu điều này với ví dụ được đưa ra dưới đây.

from scipy import stats
import numpy as np
x = np.array([1,2,3,4,5,6,7,8,9])
print x.max(),x.min(),x.mean(),x.var()

Chương trình trên sẽ tạo ra kết quả sau.

(9, 1, 5.0, 6.666666666666667)

T-test

Hãy để chúng tôi hiểu T-test hữu ích như thế nào trong SciPy.

ttest_1samp

Tính toán T-test cho giá trị trung bình của MỘT nhóm điểm. Đây là phép thử hai mặt đối với giả thuyết rỗng rằng giá trị kỳ vọng (trung bình) của một mẫu quan sát độc lập 'a' bằng giá trị trung bình tổng thể đã cho,popmean. Chúng ta hãy xem xét ví dụ sau.

from scipy import stats
rvs = stats.norm.rvs(loc = 5, scale = 10, size = (50,2))
print stats.ttest_1samp(rvs,5.0)

Chương trình trên sẽ tạo ra kết quả sau.

Ttest_1sampResult(statistic = array([-1.40184894, 2.70158009]),
pvalue = array([ 0.16726344, 0.00945234]))

So sánh hai mẫu

Trong các ví dụ sau, có hai mẫu, có thể đến từ cùng một hoặc từ phân bố khác nhau và chúng tôi muốn kiểm tra xem các mẫu này có cùng thuộc tính thống kê hay không.

ttest_ind- Tính T-test cho phương tiện của hai mẫu điểm độc lập. Đây là một phép thử hai phía đối với giả thuyết rỗng rằng hai mẫu độc lập có giá trị trung bình (kỳ vọng) giống hệt nhau. Thử nghiệm này giả định rằng các quần thể có các phương sai giống hệt nhau theo mặc định.

Chúng ta có thể sử dụng phép thử này, nếu chúng ta quan sát hai mẫu độc lập từ cùng một quần thể giống nhau hoặc khác nhau. Chúng ta hãy xem xét ví dụ sau.

from scipy import stats
rvs1 = stats.norm.rvs(loc = 5,scale = 10,size = 500)
rvs2 = stats.norm.rvs(loc = 5,scale = 10,size = 500)
print stats.ttest_ind(rvs1,rvs2)

Chương trình trên sẽ tạo ra kết quả sau.

Ttest_indResult(statistic = -0.67406312233650278, pvalue = 0.50042727502272966)

Bạn có thể kiểm tra tương tự với một mảng mới có cùng độ dài, nhưng với giá trị trung bình khác nhau. Sử dụng một giá trị khác trongloc và kiểm tra tương tự.