Python chi-vuông phù hợp

Thử nghiệm Goodness-of-Fit, một phương pháp thống kê truyền thống, đưa ra giải pháp để xác thực các giả định lý thuyết của chúng tôi về phân phối dữ liệu

Show

  • Bởi Rajkumar Lakshmanamoorthy

Python chi-vuông phù hợp
Python chi-vuông phù hợp

Python chi-vuông phù hợp
Python chi-vuông phù hợp

Một nhà khoa học dữ liệu giỏi biết cách xử lý dữ liệu thô một cách chính xác. Cô ấy/anh ấy không bao giờ đưa ra những giả định không phù hợp trong khi thực hiện phân tích dữ liệu hoặc lập mô hình máy học. Đây là một trong những bí mật giúp Nhà khoa học dữ liệu thành công trong cuộc đua. Chẳng hạn, phép thử ANOVA bắt đầu với giả định rằng dữ liệu được phân phối bình thường. Ước tính khả năng tối đa đưa ra giả định tiên nghiệm về phân phối dữ liệu và cố gắng tìm ra các tham số có khả năng xảy ra nhất. Điều gì sẽ xảy ra nếu các giả định về phân phối dữ liệu trong các trường hợp trên là không chính xác? . Với kết quả không mong muốn, chúng tôi có thể cố gắng tinh chỉnh các siêu tham số của mô hình để cải thiện hiệu suất, trong khi sai lầm là do giả định phân phối dữ liệu

Một trong những phương pháp thống kê truyền thống, bài kiểm tra Mức độ phù hợp, đưa ra giải pháp để xác thực các giả định lý thuyết của chúng tôi về phân phối dữ liệu. Bài viết này thảo luận về thử nghiệm Goodness-of-Fit với một số phân phối dữ liệu phổ biến bằng mã Python. Hãy đi sâu vào các ví dụ

Nhập các thư viện và mô-đun cần thiết để tạo môi trường Python

TUYỆT VỜI

Đăng ký hàng tuần của bạn về những gì đang xảy ra trong công nghệ mới nổi

E-mail

Đăng ký

 # create the environment
 import numpy as np
 import pandas as pd
 import matplotlib.pyplot as plt
 import seaborn as sns
 from scipy import stats  

Phân bố đồng đều

Giả sử chúng ta có xúc xắc trong tay. Một con xúc xắc có sáu mặt và sáu kết quả khác nhau có thể xảy ra từ 1 đến 6 nếu chúng ta tung nó một lần. Một con xúc xắc không thiên vị có xác suất bằng nhau cho tất cả các kết quả có thể xảy ra. Để kiểm tra xem viên xúc xắc trong tay của chúng ta có thiên vị hay không, chúng ta tung chúng 90 lần (nhiều thử nghiệm hơn đảm bảo rằng kết quả có ý nghĩa thống kê) và ghi lại số lượng kết quả

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 

đầu ra


Tải xuống ứng dụng di động của chúng tôi


Python chi-vuông phù hợp
Python chi-vuông phù hợp
Python chi-vuông phù hợp
Python chi-vuông phù hợp


Python chi-vuông phù hợp

Vì mỗi mặt của xúc xắc được giả định là có xác suất bằng nhau, nên các kết quả phải được phân phối đồng đều. Do đó, chúng ta có thể diễn đạt giả thuyết khống ở mức ý nghĩa 5% như sau

Xúc xắc không thiên vị và kết quả của nó tuân theo phân phối đồng đều

Theo phân phối đồng đều lý tưởng, tần số dự kiến ​​có thể được suy ra bằng cách đặt trọng số bằng nhau cho từng kết quả

 # Total frequency
 total_freq = dice['observed'].sum()
 print('Total Frequency : ', total_freq)
 # Expected frequency
 expected_freq = total_freq / 6
 print('Expected Frequency : ', expected_freq) 

đầu ra

Python chi-vuông phù hợp
 # build up dataframe with expected frequency
 dice['expected'] = expected_freq
 dice 

đầu ra

Python chi-vuông phù hợp

Hãy để chúng tôi trực quan hóa việc phân phối dữ liệu

 sns.set_style('darkgrid')
 plt.figure(figsize = (6,6))

 # plot observed frequency
 plt.subplot(211)
 plt.bar(dice['face'], dice['observed'])
 plt.ylabel('Observed Frequency')
 plt.ylim([0,20])
 # plot expected frequency

 plt.subplot(212)
 plt.bar(dice['face'], dice['expected'])
 plt.ylabel('Expected Frequency')
 plt.xlabel('Face of dice')
 plt.ylim([0,20])
 plt.show() 

đầu ra

Python chi-vuông phù hợp

Đây là thời điểm thích hợp để chúng ta thảo luận về cách thức hoạt động của bài kiểm tra Mức độ phù hợp. Trong điều kiện lý tưởng, tần suất của kết quả phải giống với tần suất dự kiến. Tuy nhiên, tần suất quan sát được khác một chút so với tần suất dự kiến. Thử nghiệm Goodness-of-Fit đánh giá liệu biến thể này có đáng kể được chấp nhận hay không. Nói cách khác, nó kiểm tra mức độ phù hợp của dữ liệu được quan sát với phân phối dự kiến

Mức độ vừa khít (goodness-of-fit) này được tính bằng một tham số gọi là Chi-Square. Về mặt toán học, nó được thể hiện như

Python chi-vuông phù hợp

Nếu có nhiều độ lệch giữa tần số quan sát được và tần số mong đợi, thì giá trị của Chi-Square sẽ lớn hơn. Nếu tần số được quan sát khớp chính xác với tần số dự kiến, giá trị của nó sẽ bằng không. do đó, một giá trị gần bằng 0 biểu thị sự gần gũi hơn trong sự phù hợp

Chúng ta có thể định nghĩa hàm trợ giúp để tính giá trị Chi-Square

 # a helper function to calculate the Chi-Square value
 def Chi_Square(obs_freq, exp_freq):
   count = len(obs_freq)
   chi_sq = 0
   for i in count:
     x = (obs_freq[i] - exp_freq[i]) ** 2
     x = x / exp_freq[i]
     chi_sq += x
   return chi_sq 

Giá trị Chi-Square cho ví dụ của chúng tôi được tính như sau

 # calculate using the helper function
 Chi_Square(dice['observed'], dice['expected']) 

đầu ra

Python chi-vuông phù hợp

Cần lưu ý rằng mô-đun

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
8 của SciPy có thể tính toán giống như bên dưới

________số 8_______

đầu ra

Python chi-vuông phù hợp

Để kết luận giả thuyết không, chúng ta phải so sánh giá trị Chi-Square được tính toán với giá trị Chi-Square tới hạn. Giá trị Chi-Square quan trọng có thể được tính bằng mô-đun thống kê của SciPy. Nó nhận làm đối số (1 – mức ý nghĩa, bậc tự do). Bậc tự do cho Chi-Square được tính như sau

DOF = Number of outcomes - p - 1

Ở đây, p đề cập đến số lượng tham số mà phân phối có. Để phân phối đồng đều, p=0;

Giá trị Chi-Square tới hạn được xác định bằng cách sử dụng mã,

 # critical Chi-Square - percent point function
 p = 0
 DOF = len(dice['observed']) - p - 1
 stats.chi2.ppf(0.95, DOF) 

đầu ra

Python chi-vuông phù hợp

Nếu giá trị Chi-Square được tính toán lớn hơn hoặc bằng giá trị tới hạn, giả thuyết khống sẽ bị bác bỏ. Mặt khác, nếu giá trị Chi-Square được tính toán nhỏ hơn giá trị tới hạn, thì không nên bác bỏ giả thuyết không

Ở đây, đối với vấn đề của chúng tôi, giá trị tính toán của 2. 8 nhỏ hơn nhiều so với giá trị tới hạn của 11. 07. Do đó, chúng ta không thể bác bỏ giả thuyết không, tôi. e. , phân phối được quan sát đáng kể tuân theo phân phối đồng đều

Một điều kiện quan trọng được áp đặt bởi bài kiểm tra Mức độ phù hợp là tần suất dự kiến ​​của bất kỳ kết quả nào phải lớn hơn hoặc bằng 5. Nếu bất kỳ kết quả nào có tần suất kỳ vọng nhỏ hơn 5, kết quả đó phải được kết hợp (thêm) với kết quả liền kề để có ý nghĩa về tần suất

Phân phối bình thường

Một nhà sản xuất bóng đèn muốn biết liệu tuổi thọ của bóng đèn có tuân theo phân phối chuẩn hay không. Bốn mươi bóng đèn được lấy mẫu ngẫu nhiên và tuổi thọ của chúng tính bằng tháng được quan sát

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
0

đầu ra

Python chi-vuông phù hợp

Chúng ta có thể trực quan hóa dữ liệu bằng phương pháp

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
9 của Seaborn

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
1

đầu ra

Python chi-vuông phù hợp

Dữ liệu không thể được đảm bảo, bằng mắt thường, được phân phối bình thường. Ta biết rằng biến ngẫu nhiên tuân theo phân phối chuẩn thì liên tục. Do đó, chúng ta có thể dễ dàng xác định các khoảng thời gian ngăn sao cho mỗi ngăn phải có ít nhất năm tần suất mong đợi của nó. Ở đây, trong bài toán của chúng ta có 40 bóng đèn mẫu. Để có năm mẫu dự kiến ​​trong mỗi thùng, chúng ta phải có chính xác 40/5 = 8 thùng trong tổng số

Tìm khoảng thời gian bin để có năm tần suất dự kiến ​​trên mỗi bin

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
2

đầu ra

Python chi-vuông phù hợp

Phạm vi phân phối từ vô cực âm đến vô cực dương. Bao gồm vô cực âm trong danh sách trên

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
3

đầu ra

Python chi-vuông phù hợp

Để tính tần suất quan sát, chúng ta chỉ cần đếm số kết quả trong các khoảng thời gian này. Đầu tiên, tạo một khung dữ liệu với 8 khoảng thời gian như bên dưới

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
4

đầu ra

Python chi-vuông phù hợp

Tạo hai cột cho tần suất quan sát và dự kiến. Sử dụng phương pháp

 # Total frequency
 total_freq = dice['observed'].sum()
 print('Total Frequency : ', total_freq)
 # Expected frequency
 expected_freq = total_freq / 6
 print('Expected Frequency : ', expected_freq) 
0 của Pandas để tính tần suất quan sát được giữa các khoảng thời gian

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
5

đầu ra

Python chi-vuông phù hợp

Bây giờ chúng tôi đã sẵn sàng để thực hiện bài kiểm tra Goodness-of-Fit. Chúng ta có thể nêu giả thuyết khống của mình với mức ý nghĩa 5% là

Tuổi thọ của bóng đèn tuân theo phân phối chuẩn

Tính giá trị Chi-Square thực tế bằng cách sử dụng phương pháp

 # Total frequency
 total_freq = dice['observed'].sum()
 print('Total Frequency : ', total_freq)
 # Expected frequency
 expected_freq = total_freq / 6
 print('Expected Frequency : ', expected_freq) 
1 có sẵn trong mô-đun
 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
8 của SciPy

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
6

đầu ra

Python chi-vuông phù hợp

Tính giá trị Chi-Square tới hạn bằng cách sử dụng phương pháp

 # Total frequency
 total_freq = dice['observed'].sum()
 print('Total Frequency : ', total_freq)
 # Expected frequency
 expected_freq = total_freq / 6
 print('Expected Frequency : ', expected_freq) 
3 có sẵn trong mô-đun
 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
8 của SciPy

 path = 'https://raw.githubusercontent.com/RajkumarGalaxy/dataset/master/Tabular/uniform_dice.csv'
 dice = pd.read_csv(path)
 dice 
7

đầu ra

Python chi-vuông phù hợp

Người ta quan sát thấy rằng giá trị Chi-Square được tính 6. 4 nhỏ hơn giá trị tới hạn 11. 07. Do đó, giả thuyết không thể bị bác bỏ. Nói cách khác, tuổi thọ của bóng đèn có phân phối chuẩn

Tìm Colab Notebook có triển khai mã ở trên tại đây

Tìm bộ dữ liệu CSV được sử dụng ở trên tại đây.  

kết thúc

Kiểm tra mức độ phù hợp là một cách tiếp cận hữu ích để đưa ra quyết định thống kê về phân phối dữ liệu. Nó có thể được áp dụng cho bất kỳ loại phân phối và biến ngẫu nhiên nào (dù là liên tục hay rời rạc). Bài viết này đã thảo luận về hai ví dụ thực tế từ hai bản phân phối khác nhau. Trong những trường hợp đó, phân phối giả định trở thành đúng theo bài kiểm tra Mức độ phù hợp. Trong trường hợp giả định không thành công, giả định về phân phối cần được thay đổi cho phù hợp và thực hiện lại bằng kiểm định Mức độ phù hợp.  

Đến lượt bạn tìm phân phối thực sự của dữ liệu của bạn

Người giới thiệu

  1. Xác suất và Thống kê cho Kỹ sư và Nhà khoa học
  2. Mô-đun thống kê của SciPy – Tài liệu chính thức
  3. Đọc trên Wikipedia
  4. Xem trên YouTube

Nhiều câu chuyện AIM tuyệt vời hơn

Web3, Metaverse Not Dead, Chủ đề trung tâm được chụp tại CES23

Điểm nổi bật của Ngân sách Liên minh năm 2023. Từ 'Sản xuất ở Ấn Độ' đến 'Sản xuất AI ở Ấn Độ'

'Chú ý là tất cả những gì bạn cần' Không được chú ý

Đằng sau hậu trường. Swiggy đói để làm gì?

TypeScript so với JavaScript. Ai là người chiến thắng trong trận chiến kéo dài 10 năm?

Một người đam mê Học máy với bằng Thạc sĩ Kỹ thuật và đam mê viết và khám phá những điều mới. Thích đọc tiểu thuyết, nấu ăn, tập võ và thỉnh thoảng viết tiểu thuyết và thơ

Python chi-vuông phù hợp
Python chi-vuông phù hợp

Sự kiện sắp tới của AIM

Early Bird Pass hết hạn vào ngày 3 tháng 2

Hội nghị, trực tiếp (Bangalore)
Tăng 2023. Phụ nữ trong hội nghị công nghệ
16-17 tháng 3 năm 2023

Đăng ký

Hội nghị, trực tiếp (Bangalore)
Hội nghị thượng đỉnh về kỹ thuật dữ liệu (DES) 2023
27-28 tháng 4 năm 2023

Đăng ký

3 cách để tham gia cộng đồng của chúng tôi

nhóm điện tín

Khám phá các ưu đãi đặc biệt, tin bài hàng đầu, sự kiện sắp tới, v.v.

Tham gia Telegram

Máy chủ bất hòa

Luôn kết nối với hệ sinh thái lớn hơn về khoa học dữ liệu và ML Professionals

Tham gia cộng đồng Discord

Theo dõi bản tin hàng ngày của chúng tôi

Nhận những câu chuyện và video tuyệt vời hàng ngày của chúng tôi trong hộp thư đến của bạn

Đặt mua

NHỮNG CÂU CHUYỆN HÀNG ĐẦU

Python chi-vuông phù hợp
Python chi-vuông phù hợp

Bắt đầu sự nghiệp của bạn trong Khoa học dữ liệu và Phân tích kinh doanh với chương trình này từ Great Learning

Chương trình giảng dạy của PGP về Khoa học dữ liệu và Phân tích kinh doanh. V. 22 đã được cập nhật với sự tư vấn của các chuyên gia trong ngành, các học giả và cựu sinh viên của chương trình

Python chi-vuông phù hợp
Python chi-vuông phù hợp

Làm cách nào để xây dựng các mô hình dự đoán chăm sóc sức khỏe bằng PyHealth?

PyHealth là hộp công cụ dựa trên Python. Đúng như tên gọi, hộp công cụ này chứa nhiều mô hình ML và thuật toán kiến ​​trúc để làm việc với dữ liệu y tế và lập mô hình

Python chi-vuông phù hợp
Python chi-vuông phù hợp

Giải thích. Triển vọng học tập trong AI

Một bài báo xuất bản đầu năm nay lập luận rằng học hồi tưởng không phải là một đại diện tốt cho trí thông minh thực sự

Python chi-vuông phù hợp
Python chi-vuông phù hợp

AI trong SEO hiện đã phát triển đến mức nó đang tự chống lại chính mình

Với việc tích hợp AI vào SEO, liệu các thương hiệu có thể vượt qua các nguyên tắc nghiêm ngặt và luôn thận trọng của SERPs không?

Python chi-vuông phù hợp
Python chi-vuông phù hợp

bài hội đồng. Những điều quan trọng cần nhớ khi xây dựng nhóm dữ liệu

Nhóm AI bao gồm  'một nhóm bên ngoài' (một nhóm bên ngoài nhóm dữ liệu nhưng là một phần của nhóm AI cốt lõi) làm việc chặt chẽ với nhóm dữ liệu và sau đó là chính nhóm dữ liệu cốt lõi

Python chi-vuông phù hợp
Python chi-vuông phù hợp

IBM ra mắt mẫu Mainframe mới, nhằm lấy lại vị thế đã mất

Mặc dù có các lợi ích về tiết kiệm chi phí và dễ dàng chia sẻ tài nguyên, nhưng chỉ có 25% khối lượng công việc của doanh nghiệp được chuyển lên đám mây

Python chi-vuông phù hợp
Python chi-vuông phù hợp

AI được sử dụng như thế nào để phát hiện sớm ung thư vú

CNN hiệu quả trong việc phát hiện các khối u ác tính từ các bản quét

Python chi-vuông phù hợp
Python chi-vuông phù hợp

Google nói không với FLoC, thay bằng Topic

Chủ đề là một đề xuất Hộp cát bảo mật dành cho quảng cáo dựa trên internet, thay thế cho FLoC (Học tập theo nhóm có liên kết)

Python chi-vuông phù hợp
Python chi-vuông phù hợp

Học Scala 101. Những cuốn sách, video và khóa học hay nhất

Được gắn thẻ là “cuốn sách dứt khoát về Scala”, cuốn sách này được đồng tác giả bởi Martin Odersky, nhà thiết kế ngôn ngữ Scala

chi là gì

Kiểm tra mức độ phù hợp Chi bình phương là gì? . Nó thường được sử dụng để đánh giá liệu dữ liệu mẫu có đại diện cho toàn bộ dân số hay không. a statistical hypothesis test used to determine whether a variable is likely to come from a specified distribution or not. It is often used to evaluate whether sample data is representative of the full population.

Đâu là sự khác biệt giữa chi

Hai cái này đôi khi bị nhầm lẫn nhưng chúng khá khác nhau. Kiểm tra chi bình phương về tính độc lập so sánh hai bộ dữ liệu để xem liệu có mối quan hệ nào không. Chi-square Mức độ phù hợp là làm khớp một biến phân loại với một phân phối .