Các nhà khoa học dữ liệu thường cần kiểm tra số liệu thống kê của bộ dữ liệu của họ, đặc biệt là đối với các bản phân phối đã biết hoặc so sánh chúng với các bộ dữ liệu khác. Có một số thử nghiệm giả thuyết mà chúng ta có thể thực hiện cho mục tiêu này, nhưng tôi thường thích sử dụng cách biểu diễn đồ họa đơn giản hơn. Tôi đang nói về cốt truyện QQ
Cốt truyện QQ là gì?
Biểu đồ Q-Q thường được gọi là biểu đồ lượng tử. Đó là một biểu đồ 2D trong đó chúng tôi so sánh các lượng tử lý thuyết của một phân phối với các lượng tử mẫu của một tập dữ liệu. Nếu tập dữ liệu đã được tạo từ phân phối đó, chúng tôi hy vọng biểu đồ này sẽ gần với đường 45 độ, vì các lượng phân vị mẫu sẽ tương tự như các lượng phân vị lý thuyết. Nếu mẫu đã được tạo từ một bản phân phối khác, chúng tôi sẽ không nhận được dòng 45
Bằng cách này, chúng ta có thể dễ dàng hình dung liệu tập dữ liệu có giống với phân phối lý thuyết hay không. Chúng ta có thể sử dụng các biểu đồ Q-Q ngay cả khi so sánh hai bộ dữ liệu, miễn là chúng có cùng số điểm
Một ví dụ trong Python
Bây giờ chúng ta hãy xem cách biểu đồ Q-Q hoạt động trong Python. Bạn có thể tìm thấy toàn bộ mã trên repo GitHub của tôi
Trước tiên, hãy nhập một số thư viện và hãy đặt hạt giống số ngẫu nhiên để làm cho các mô phỏng của chúng ta có thể tái tạo được
from statsmodels.graphics.gofplots import qqplot
from matplotlib import pyplot as plt
plt.rcParams['figure.figsize'] = [10, 7]
plt.rc['font', size=14]
from scipy.stats import norm, uniform
import numpy as np
np.random.seed[0]
Bây giờ, hãy mô phỏng 1000 điểm được phân phối đồng đều trong khoảng từ 0 đến 1 và hãy so sánh tập dữ liệu này với phân phối chuẩn có cùng giá trị trung bình và phương sai. Chúng tôi hy vọng sẽ có được biểu đồ QQ rất khác với đường 45 độ, bởi vì hai bản phân phối khá khác nhau
x = np.random.uniform[1,2,1000]
Để vẽ biểu đồ QQ với tập dữ liệu này theo phân phối chuẩn phù hợp nhất, chúng ta có thể viết mã này
qqplot[x,norm,fit=True,line="45"]
plt.show[]
Đối số fit=True cố gắng điều chỉnh phân phối chuẩn cho tập dữ liệu của chúng tôi theo khả năng tối đa. Như chúng ta có thể thấy, các lượng tử mẫu khá khác so với các lượng tử lý thuyết, bởi vì các điểm màu xanh nằm rất xa so với đường màu đỏ, là đường 45 độ
Bây giờ hãy thử với tập dữ liệu được phân phối bình thường
x = np.random.normal[1,2,1000]
qqplot[x,norm,fit=True,line="45"]
plt.show[]
Kết quả là khá khác nhau, bây giờ. Các lượng tử mẫu rất giống với các lượng tử lý thuyết [i. e. các điểm màu xanh gần với đường màu đỏ]. Có một số ngoại lệ gây ra một số nhiễu ở giới hạn dưới và trên của biểu đồ này, nhưng đó không phải là vấn đề lớn, bởi vì phần lớn nhất của phân phối mẫu phù hợp khá tốt với lý thuyết
Tất nhiên, thay đổi đối số thứ hai của hàm qqplot, chúng ta có thể so sánh tập dữ liệu mẫu của mình với một phân phối khác. Ví dụ: chúng ta có thể so sánh tập dữ liệu được phân phối thông thường của mình với tập dữ liệu phân phối đồng đều
qqplot[x,uniform,fit=True,line="45"]
plt.show[]
Đúng như dự đoán, kết quả không tốt lắm, vì phân phối tập dữ liệu của chúng tôi đã được tạo từ đó rất khác với phân phối đồng nhất phù hợp nhất
Đăng ký hội thảo trên web sắp tới
Tên của bạn [bắt buộc]
Email của bạn [bắt buộc]
Đặt hàng sách của tôi trên tiền xử lý
Trong cuốn sách này, tôi trình bày cách sử dụng thực tế ngôn ngữ lập trình Python để thực hiện các tác vụ tiền xử lý trong các dự án máy học
- Làm sạch dữ liệu
- Mã hóa các biến phân loại
- Phân tích thành phần chính
- mở rộng quy mô
- đóng thùng
- chuyển đổi quyền lực
- lựa chọn tính năng
- SMOTE
Có sẵn ở định dạng sách bìa mềm và sách điện tử
Đặt mua sách của tôi ngay bây giờ trên Amazon
Tôi đồng ý nhận thông tin cập nhật qua email và thông tin tiếp thị
Nhấp vào "Đăng ký", bạn đồng ý với Chính sách bảo mật của chúng tôi
Trong hội thảo trực tuyến này, khóa học Tầm quan trọng của tính năng và diễn giải mô hình trong Python được giới thiệu. Nội dung của khóa học và lợi ích của nó sẽ được trình bày
Tham gia khóa học miễn phí của tôi
Tham gia khóa học miễn phí của tôi về Exploratory Data Analysis và bạn sẽ học
- trực quan hóa dữ liệu
- phân tích đa biến
- phân tích tương quan
- các thư viện Python hữu ích nhất
tham gia khóa học
Biểu đồ Q-Q với 2 bộ dữ liệu
Biểu đồ Q-Q có thể được sử dụng ngay cả với 2 bộ dữ liệu, miễn là chúng có cùng số điểm. Để có được các lượng tử mẫu của cả hai bộ dữ liệu, chúng ta chỉ cần sắp xếp chúng tăng dần và vẽ chúng
Hãy tạo hai bộ dữ liệu phân phối chuẩn từ 2 phân phối chuẩn có cùng giá trị trung bình và cùng phương sai
x1 = np.random.normal[1,2,1000]
x2 = np.random.normal[1,2,1000]
Bây giờ chúng ta có thể sắp xếp dữ liệu của mình
x1.sort[]
x2.sort[]
Và sau đó chúng ta có thể vẽ nó
plt.scatter[x1,x2]
plt.plot[[min[x1],max[x1]],[min[x1],max[x1]],color="red"]
plt.xlabel["1st dataset's quantiles"]
plt.ylabel["2nd dataset's quantiles"]
plt.show[]
Như chúng ta có thể thấy, vẫn còn một chút nhiễu ở phần đuôi, nhưng phần trung tâm của các bản phối khớp khá tốt
kết luận
Trong bài viết này, tôi trình bày cách sử dụng biểu đồ Q-Q để kiểm tra sự giống nhau giữa phân phối mẫu và phân phối lý thuyết hoặc giữa hai mẫu. Mặc dù có một số thử nghiệm giả thuyết có thể được thực hiện để đạt được mục tiêu này [e. g. Kolmogorov-Smirnov], tôi thích sử dụng trực quan hóa dữ liệu để có biểu diễn trực quan về các hiện tượng trong tập dữ liệu của chúng tôi. Bằng cách này, cách giải thích của chúng tôi không bị sai lệch bởi bất kỳ thử nghiệm giả thuyết nào và rõ ràng hơn để trình bày ngay cả với những người không có kỹ thuật