Tìm khoảng tin cậy bằng Python

Khoảng tin cậy (CI) rất cần thiết trong thống kê và rất quan trọng đối với các nhà khoa học dữ liệu. Trong bài viết này, tôi sẽ giải thích kỹ lưỡng với các công thức cần thiết và cũng trình bày cách tính toán bằng python

Mức độ tin cậy

Nghe có vẻ như vậy, khoảng tin cậy là một dãy các giá trị. Trong điều kiện lý tưởng, nó phải chứa ước tính tốt nhất của tham số thống kê. Nó được thể hiện dưới dạng phần trăm. Khoảng tin cậy 95% là phổ biến nhất. Bạn có thể sử dụng các giá trị khác như khoảng tin cậy 97%, 90%, 75% hoặc thậm chí 99% nếu nghiên cứu của bạn yêu cầu. Hãy hiểu nó bằng một ví dụ

Đây là một tuyên bố

“Trong một mẫu gồm 659 bậc cha mẹ có con mới biết đi, khoảng 85% cho biết họ sử dụng ghế ngồi ô tô cho tất cả các chuyến đi cùng con mình. Từ những kết quả này, một khoảng tin cậy 95% đã được cung cấp, đi từ khoảng 82. 3% lên đến 87. 7%. ”

Tuyên bố này có nghĩa là, chúng tôi chắc chắn 95% rằng tỷ lệ dân số sử dụng ghế ngồi ô tô cho tất cả các chuyến du lịch với trẻ mới biết đi của họ sẽ rơi vào khoảng 82. 3% và 87. 7%. Nếu chúng ta lấy một mẫu khác hoặc một mẫu phụ của 659 người này, thì 95% thời gian, tỷ lệ dân số sử dụng ghế ngồi ô tô trong tất cả các chuyến du lịch cùng con nhỏ của họ sẽ nằm trong khoảng từ 82. 3% và 87. 7%

Hãy nhớ rằng, khoảng tin cậy 95% không có nghĩa là xác suất 95%

Lý do khiến khoảng tin cậy trở nên phổ biến và hữu ích là vì chúng ta không thể lấy dữ liệu từ tất cả các quần thể. Giống như ví dụ trên, chúng tôi không thể lấy thông tin từ tất cả các bậc cha mẹ có con nhỏ. Chúng tôi phải tính toán kết quả từ 659 phụ huynh. Từ kết quả đó, chúng tôi đã cố gắng ước tính tổng dân số. Vì vậy, thật hợp lý khi xem xét một biên độ lỗi và lấy một phạm vi. Đó là lý do tại sao chúng tôi lấy một khoảng tin cậy là một phạm vi

Chúng tôi muốn một mẫu ngẫu nhiên đơn giản và phân phối chuẩn để xây dựng khoảng tin cậy. Nhưng nếu cỡ mẫu đủ lớn (30 hoặc nhiều hơn) thì không cần phân phối chuẩn

 

Cách tính khoảng tin cậy

Việc tính toán khoảng tin cậy liên quan đến ước tính tốt nhất mà mẫu thu được và biên độ sai số. Vì vậy, chúng tôi lấy ước tính tốt nhất và thêm một sai số vào đó. Đây là công thức cho khoảng tin cậy và biên độ sai số

Tìm khoảng tin cậy bằng Python

Ở đây, SE là lỗi tiêu chuẩn

Thông thường, CI được tính cho hai tham số thống kê. tỷ lệ và giá trị trung bình

Kết hợp hai công thức trên, chúng ta có thể xây dựng công thức cho CI như sau

Tìm khoảng tin cậy bằng Python

Tỷ lệ dân số hoặc giá trị trung bình được tính từ mẫu. Trong ví dụ về “cha mẹ có con mới biết đi”, ước tính tốt nhất hoặc tỷ lệ dân số cha mẹ sử dụng ghế ngồi ô tô trong tất cả các chuyến du lịch cùng con là 85%. Vì vậy, ước tính tốt nhất (tỷ lệ dân số) là 85. z-score được cố định cho mức độ tin cậy (CL)

Điểm z cho khoảng tin cậy 95% đối với cỡ mẫu đủ lớn (30 trở lên) là 1. 96

Dưới đây là điểm số z cho một số mức độ tin cậy thường được sử dụng

Tìm khoảng tin cậy bằng Python

Phương pháp tính sai số chuẩn là khác nhau đối với tỷ lệ dân số và giá trị trung bình. Công thức tính sai số chuẩn của tỷ lệ dân số là

Tìm khoảng tin cậy bằng Python

Công thức tính sai số chuẩn của giá trị trung bình mẫu là

Tìm khoảng tin cậy bằng Python

Theo tuyên bố, tỷ lệ dân số sử dụng ghế ngồi ô tô cho tất cả các chuyến du lịch với trẻ mới biết đi của họ là 85%. Vì vậy, đây là ước tính tốt nhất của chúng tôi. Chúng ta cần thêm lề lỗi vào nó. Để tính biên sai số, chúng ta cần chỉ số z và sai số chuẩn. Tôi sẽ tính 95% CI. Điểm số z phải là 1. 96 và tôi đã đề cập đến công thức sai số chuẩn cho tỷ lệ dân số. Cắm vào tất cả các giá trị

Tìm khoảng tin cậy bằng Python

Khoảng tin cậy là 82. 3% và 87. 7% như chúng ta đã thấy trong tuyên bố trước đây

 

Khoảng tin cậy trong Python

Tôi giả định rằng bạn đã là người dùng python. Nhưng ngay cả khi bạn không phải là người dùng python, bạn vẫn có thể có được khái niệm về phép tính và sử dụng các công cụ của riêng bạn để tính toán tương tự. Các công cụ tôi sử dụng cho bài tập này là

  1. Thư viện Numpy
  2. thư viện gấu trúc
  3. Thư viện mô hình thống kê
  4. Môi trường Máy tính xách tay Jupyter

Nếu bạn cài đặt gói anaconda, bạn sẽ nhận được Sổ ghi chép Jupyter và các công cụ khác. Có một số video youtube hay để trình bày cách cài đặt gói anaconda nếu bạn chưa có gói đó

CI cho tỷ lệ dân số trong Python

Tôi sẽ sử dụng bộ dữ liệu Heart từ Kaggle. Vui lòng nhấp vào liên kết để tải xuống bộ dữ liệu. Đầu tiên, tôi đã nhập các gói và tập dữ liệu

import pandas as pd
import numpy as np
df = pd.read_csv('Heart.csv')
df
Tìm khoảng tin cậy bằng Python

Cột cuối cùng của dữ liệu là 'AHD'. Nó nói nếu một người có bệnh tim hay không. Ban đầu, chúng tôi cũng có cột 'Giới tính'.

Chúng tôi sẽ xây dựng CI cho tỷ lệ dân số nữ mắc bệnh tim

Đầu tiên, thay thế 1 và 0 bằng 'Nam' và 'Nữ' trong cột mới 'Sex1'

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})

Chúng tôi không cần tất cả các cột trong tập dữ liệu. Chúng tôi sẽ chỉ sử dụng cột 'AHD' vì cột đó chứa thông tin liệu một người có bị bệnh tim hay không và cột Giới tính 1 mà chúng tôi vừa tạo. Tạo một DataFrame chỉ với hai cột này và bỏ tất cả các giá trị null

dx = df[["AHD", "Sex1"]].dropna()

Chúng ta cần số phụ nữ mắc bệnh tim. Dòng mã bên dưới sẽ cho biết số lượng nam và nữ mắc bệnh tim và không mắc bệnh tim

pd.crosstab(dx.AHD, dx.Sex1)

Đây là bảng đầu ra

Tìm khoảng tin cậy bằng Python

Số nữ mắc bệnh tim là 25. Tính tỉ lệ dân số nữ mắc bệnh tim

p_fm = 25/(72+25)

'p_fm' là 0. 26. Quy mô dân số nữ

n = 72+25

Quy mô dân số nữ là 97. Tính sai số chuẩn

se_female = np.sqrt(p_fm * (1 - p_fm) / n)

Sai số chuẩn là 0. 044

Bây giờ xây dựng CI bằng cách sử dụng các công thức trên. Điểm z là 1. 96 cho khoảng tin cậy 95%

z_score = 1.96
lcb = p_fm - z_score* se_female #lower limit of the CI
ucb = p_fm + z_score* se_female #upper limit of the CI

Khoảng tin cậy là 0. 17 và 0. 344

Bạn có thể tính toán nó bằng thư viện ‘statsmodels’

________số 8

Khoảng tin cậy xuất hiện giống như trên

CI cho sự khác biệt về tỷ lệ dân số

Tỷ lệ dân số nữ mắc bệnh tim có bằng tỷ lệ dân số nam mắc bệnh tim không?

Ta sẽ tính khoảng tin cậy của sự khác biệt về tỷ lệ dân số nam và nữ mắc bệnh tim

Đây là quá trình từng bước

Tính tỷ lệ dân số nam mắc bệnh tim và sai số chuẩn bằng quy trình tương tự

p_male = 114/(114+92)  #male population proportion
n = 114+92 #total male population

Tỷ lệ nam giới mắc bệnh tim là 0. 55 và quy mô dân số nam là 206. Tính sai số chuẩn cho tỷ lệ dân số nam

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
0

Lỗi tiêu chuẩn cho dân số nam là 0. 034. Tính toán sự khác biệt trong lỗi tiêu chuẩn

Sự khác biệt trong lỗi tiêu chuẩn không chỉ là phép trừ. Sử dụng công thức thích hợp

Đây là công thức để tính toán sự khác biệt trong hai lỗi tiêu chuẩn

Tìm khoảng tin cậy bằng Python

Hãy sử dụng công thức này để tính toán sự khác biệt trong sai số chuẩn của dân số nam và nữ mắc bệnh tim

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
1

Sử dụng sai số chuẩn này để tính toán sự khác biệt về tỷ lệ dân số nam và nữ mắc bệnh tim và xây dựng CI của sự khác biệt

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
2

CI là 0. 18 và 0. 4. Phạm vi này không có 0 trong đó. Cả hai số đều trên 0. Vì vậy, chúng ta không thể đưa ra kết luận rằng tỷ lệ dân số nữ mắc bệnh tim bằng tỷ lệ dân số nam mắc bệnh tim. Nếu CI sẽ là -0. 12 và 0. 1, có thể nói tỷ lệ dân số nam và nữ mắc bệnh tim là như nhau

 

Tính CI của giá trị trung bình

Chúng tôi sẽ sử dụng cùng một bộ dữ liệu về bệnh tim. Tập dữ liệu có cột 'chol' chứa mức cholesterol. Đối với cuộc biểu tình này,

chúng tôi sẽ tính khoảng tin cậy của mức cholesterol trung bình của dân số nữ

Hãy tìm giá trị trung bình, độ lệch chuẩn và quy mô dân số cho dân số nữ. Tôi cũng muốn có được các thông số tương tự cho dân số nam. Bởi vì nó sẽ hữu ích cho bài tập tiếp theo của chúng ta. Sử dụng pandas groupby và phương pháp tổng hợp cho mục đích này. Nếu bạn cần xem lại phương pháp tổng hợp và nhóm gấu trúc, vui lòng xem bài viết này

Chi tiết về hàm nhóm của Pandas để tổng hợp và phân tích dữ liệu hiệu quả
Tìm hiểu cách nhóm dữ liệu và tóm tắt để sử dụng các hàm tổng hợp, chuyển đổi dữ liệu, lọc, ánh xạ, áp dụng một hàm trong… . com

Đây là mã để lấy giá trị trung bình, độ lệch chuẩn và quy mô dân số của dân số nam và nữ

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
3
Tìm khoảng tin cậy bằng Python

Nếu chúng ta chỉ trích xuất các tham số cần thiết cho dân số nữ.

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
4

đây 1. 96 là điểm z cho mức độ tin cậy 95%

Tính sai số chuẩn bằng cách sử dụng công thức cho sai số chuẩn của giá trị trung bình

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
5

Bây giờ chúng tôi có mọi thứ để xây dựng CI cho cholesterol trung bình trong dân số nữ

xây dựng CI

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
6

Chỉ số CI là 248. 83 và 274. 67

Điều đó có nghĩa là giá trị trung bình thực sự của cholesterol của dân số nữ sẽ rơi vào khoảng 248. 83 và 274. 67

 

 

Tính toán CI của sự khác biệt về giá trị trung bình

Có hai cách tiếp cận để tính CI cho chênh lệch giá trị trung bình của hai tổng thể

Phương pháp tiếp cận gộp và cách tiếp cận không gộp

Như đã đề cập trước đó, chúng ta cần một mẫu ngẫu nhiên đơn giản và phân phối chuẩn. Nếu mẫu lớn thì không cần phân phối chuẩn

Có thêm một giả định cho cách tiếp cận gộp. Nghĩa là, phương sai của hai tổng thể bằng nhau hoặc gần giống nhau

Nếu phương sai không giống nhau, cách tiếp cận không gộp sẽ phù hợp hơn

Công thức của lỗi tiêu chuẩn cho phương pháp gộp là

Tìm khoảng tin cậy bằng Python

Ở đây, s1 và s2 là sai số chuẩn cho quần thể 1 và quần thể 2. Theo cách tương tự, n1 và n2 là quy mô dân số của quần thể 1 và quần thể 2

Công thức của lỗi tiêu chuẩn cho phương pháp không gộp chung là

Tìm khoảng tin cậy bằng Python

Ở đây, chúng tôi sẽ xây dựng CI cho sự khác biệt về mức cholesterol trung bình của dân số nam và nữ

Chúng tôi đã lấy tất cả các tham số cần thiết từ tập dữ liệu trong ví dụ trước. Họ đây rồi

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
7

Như chúng ta có thể thấy, độ lệch chuẩn của hai quần thể mục tiêu là khác nhau. Vì thế. phương sai cũng phải khác

Vì vậy, đối với ví dụ này, cách tiếp cận không gộp sẽ phù hợp hơn

Tính sai số chuẩn cho dân số nam và nữ bằng công thức chúng tôi đã sử dụng trong ví dụ trước

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
8

Sự khác biệt về giá trị trung bình của hai mẫu

df['Sex1'] = df.Sex.replace({1: "Male", 0: "Female"})
9

Sự khác biệt về giá trị trung bình 'mean_d' là 22. 15

Sử dụng công thức cho cách tiếp cận không gộp, tính chênh lệch trong sai số chuẩn

dx = df[["AHD", "Sex1"]].dropna()
0

Cuối cùng, xây dựng CI cho sự khác biệt về giá trị trung bình

dx = df[["AHD", "Sex1"]].dropna()
1

Giới hạn trên và dưới của khoảng tin cậy là 22. 1494 và 22. 15. Chúng gần như giống nhau. Điều đó có nghĩa là cholesterol trung bình của dân số nữ không khác với cholesterol trung bình của dân số nam

Phần kết luận

Trong bài viết này, tôi đã cố gắng giải thích chi tiết về khoảng tin cậy với quy trình tính toán trong python. Mã Python tôi sử dụng ở đây đủ đơn giản để mọi người hiểu. Ngay cả khi bạn không phải là người dùng python, bạn vẫn có thể hiểu quy trình và áp dụng nó theo cách của bạn

Hàm Python nào sẽ cho khoảng tin cậy 95%?

hàm ppf . Các lập luận cho t. ppf() là q = phần trăm, df = bậc tự do, scale = std dev, loc = mean. Vì phân phối t đối xứng với khoảng tin cậy 95% nên q sẽ bằng 0. 975.

Mô-đun Python nào được sử dụng để tạo khoảng tin cậy chọn một?

hàm interval() từ scipy. Thư viện stats để lấy khoảng tin cậy cho trung bình dân số của tập dữ liệu đã cho trong python.

Giá trị tới hạn z cho khoảng tin cậy 95 Python là gì?

Điểm z là 1. 96 với khoảng tin cậy 95%.