Làm thế nào để bạn vẽ dữ liệu trong một phân phối bình thường trong python?

Ngay cả khi bạn không làm trong lĩnh vực thống kê, bạn chắc hẳn đã bắt gặp thuật ngữ “Phân phối chuẩn”

Phân phối xác suất là một hàm thống kê mô tả khả năng nhận được các giá trị có thể có mà một biến ngẫu nhiên có thể nhận. Bằng cách này, chúng tôi muốn nói đến phạm vi giá trị mà một tham số có thể nhận khi chúng tôi chọn ngẫu nhiên các giá trị từ tham số đó

Phân phối xác suất có thể rời rạc hoặc liên tục

Giả sử trong một thành phố, chúng ta có chiều cao của những người trưởng thành trong độ tuổi từ 20-30 tuổi, dao động từ 4. 5 ft. đến 7 ft

Nếu chúng ta được yêu cầu chọn ngẫu nhiên 1 người trưởng thành và hỏi chiều cao của anh ấy/cô ấy [giả sử giới tính không ảnh hưởng đến chiều cao] là bao nhiêu? . Nhưng nếu chúng ta có sự phân bổ chiều cao của người trưởng thành trong thành phố, chúng ta có thể đặt cược vào kết quả có thể xảy ra nhất

Phân phối bình thường là gì?

Phân phối chuẩn còn được gọi là phân phối Gaussian hoặc Đường cong hình chuông nổi tiếng. Mọi người sử dụng cả hai từ thay thế cho nhau, nhưng nó có nghĩa giống nhau. Đó là một phân phối xác suất liên tục

Hàm mật độ xác suất [pdf] cho Phân phối chuẩn

Hàm mật độ xác suất của phân phối chuẩn

trong đó, μ = Giá trị trung bình , σ = Độ lệch chuẩn , x = giá trị đầu vào

Thuật ngữ

  • Mean – Giá trị trung bình là giá trị trung bình thông thường. Tổng của tổng số điểm chia cho tổng số điểm
  • Độ lệch chuẩn – Độ lệch chuẩn cho chúng ta biết mức độ “phân tán” của dữ liệu. Nó là thước đo xem mỗi giá trị được quan sát cách giá trị trung bình bao xa.

Có vẻ khó khăn, phải không?

1. Ví dụ thực hiện phân phối bình thường

Hãy cùng xem đoạn mã dưới đây. Chúng tôi sẽ sử dụng numpy và matplotlib cho phần trình diễn này

# Importing required libraries

import numpy as np
import matplotlib.pyplot as plt

# Creating a series of data of in range of 1-50.
x = np.linspace[1,50,200]

#Creating a Function.
def normal_dist[x , mean , sd]:
    prob_density = [np.pi*sd] * np.exp[-0.5*[[x-mean]/sd]**2]
    return prob_density

#Calculate mean and Standard deviation.
mean = np.mean[x]
sd = np.std[x]

#Apply function to the data.
pdf = normal_dist[x,mean,sd]

#Plotting the Results
plt.plot[x,pdf , color = 'red']
plt.xlabel['Data points']
plt.ylabel['Probability Density']

đường cong bình thường

2. Thuộc tính của phân phối bình thường

Hàm mật độ phân phối chuẩn chỉ đơn giản chấp nhận một điểm dữ liệu cùng với giá trị trung bình và độ lệch chuẩn và đưa ra một giá trị mà chúng ta gọi là mật độ xác suất

Chúng ta có thể thay đổi hình dạng của đường cong hình chuông bằng cách thay đổi giá trị trung bình và độ lệch chuẩn

Thay đổi giá trị trung bình sẽ dịch chuyển đường cong về phía giá trị trung bình đó, điều này có nghĩa là chúng ta có thể thay đổi vị trí của đường cong bằng cách thay đổi giá trị trung bình trong khi hình dạng của đường cong vẫn nguyên vẹn

Hình dạng của đường cong có thể được kiểm soát bởi giá trị của Độ lệch chuẩn. Độ lệch chuẩn nhỏ hơn sẽ dẫn đến đường cong có giới hạn chặt chẽ trong khi giá trị cao sẽ dẫn đến đường cong trải rộng hơn

Một số tính chất tuyệt vời của phân phối bình thường

  • Giá trị trung bình, chế độ và trung vị đều bằng nhau
  • Tổng diện tích dưới đường cong bằng 1
  • Đường cong đối xứng quanh giá trị trung bình

Phần trăm phân phối dữ liệu xung quanh giá trị trung bình

Quy tắc thực nghiệm cho chúng ta biết rằng

  • 68% dữ liệu nằm trong một độ lệch chuẩn của giá trị trung bình
  • 95% dữ liệu nằm trong hai độ lệch chuẩn của giá trị trung bình
  • 99. 7% dữ liệu nằm trong ba độ lệch chuẩn của giá trị trung bình

Cho đến nay, đây là một trong những phân phối quan trọng nhất trong tất cả các Thống kê. Phân phối chuẩn là kỳ diệu vì hầu hết các hiện tượng xảy ra tự nhiên đều tuân theo phân phối chuẩn. Ví dụ huyết áp, chỉ số IQ, chiều cao tuân theo phân phối chuẩn

Tính xác suất với phân phối chuẩn

Để tìm xác suất của một giá trị xảy ra trong một khoảng trong phân phối chuẩn, chúng ta chỉ cần tìm diện tích dưới đường cong trong khoảng đó. tôi. e. chúng ta cần tích hợp hàm mật độ

Vì phân phối chuẩn là phân phối liên tục nên diện tích dưới đường cong biểu thị xác suất

Trước khi đi vào chi tiết, trước tiên chúng ta hãy biết Phân phối Chuẩn Chuẩn là gì

Phân phối chuẩn chuẩn tương tự như phân phối chuẩn với giá trị trung bình = 0 và độ lệch chuẩn = 1

Z = [x-μ]/ σ

Giá trị z ở trên còn được gọi là điểm z. Điểm z cung cấp cho bạn ý tưởng về khoảng cách từ điểm dữ liệu trung bình

Nếu chúng tôi dự định tính toán xác suất theo cách thủ công, chúng tôi sẽ cần tra cứu giá trị z của mình trong bảng z để xem giá trị phần trăm tích lũy. Python cung cấp cho chúng tôi các mô-đun để thực hiện công việc này cho chúng tôi. Hãy đi sâu vào nó

1. Tạo đường cong bình thường

Chúng ta sẽ sử dụng hàm lớp

# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Visualizing the distribution

sb.set_style['whitegrid']
sb.lineplot[data, pdf , color = 'black']
plt.xlabel['Heights']
plt.ylabel['Probability Density']
0 để tính xác suất từ ​​phân phối chuẩn

Giả sử chúng ta có dữ liệu về chiều cao của người trưởng thành trong một thị trấn và dữ liệu tuân theo phân phối chuẩn, chúng ta có cỡ mẫu đủ với giá trị trung bình bằng 5. 3 và độ lệch chuẩn là 1

Thông tin này đủ để tạo một đường cong bình thường

# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Visualizing the distribution

sb.set_style['whitegrid']
sb.lineplot[data, pdf , color = 'black']
plt.xlabel['Heights']
plt.ylabel['Probability Density']

Độ cao phân bố

Phương thức lớp

# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Visualizing the distribution

sb.set_style['whitegrid']
sb.lineplot[data, pdf , color = 'black']
plt.xlabel['Heights']
plt.ylabel['Probability Density']
1 yêu cầu
# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Visualizing the distribution

sb.set_style['whitegrid']
sb.lineplot[data, pdf , color = 'black']
plt.xlabel['Heights']
plt.ylabel['Probability Density']
2 và
# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Visualizing the distribution

sb.set_style['whitegrid']
sb.lineplot[data, pdf , color = 'black']
plt.xlabel['Heights']
plt.ylabel['Probability Density']
3 cùng với dữ liệu làm đối số đầu vào và đưa ra giá trị mật độ xác suất.
# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Visualizing the distribution

sb.set_style['whitegrid']
sb.lineplot[data, pdf , color = 'black']
plt.xlabel['Heights']
plt.ylabel['Probability Density']
2 không là gì ngoài giá trị trung bình và
# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Visualizing the distribution

sb.set_style['whitegrid']
sb.lineplot[data, pdf , color = 'black']
plt.xlabel['Heights']
plt.ylabel['Probability Density']
3 là độ lệch chuẩn của dữ liệu. mã tương tự như những gì chúng tôi đã tạo trong phần trước nhưng ngắn hơn nhiều

2. Tính toán xác suất xuất hiện dữ liệu cụ thể

Bây giờ, nếu chúng ta được yêu cầu chọn ngẫu nhiên một người từ phân bố này, thì xác suất để chiều cao của người đó nhỏ hơn 4 là bao nhiêu?. 5 ft. ?

Diện tích dưới đường cong là xác suất

Diện tích dưới đường cong như trong hình trên sẽ là xác suất để chiều cao của người đó nhỏ hơn 4. 5 ft nếu được chọn ngẫu nhiên từ phân phối. Hãy xem cách chúng ta có thể tính toán điều này trong python

Diện tích dưới đường cong không là gì ngoài Tích phân của hàm mật độ với các giới hạn bằng -∞ đến 4. 5

________số 8_______

0.211855 or 21.185 %

Dòng mã duy nhất ở trên tìm xác suất có 21. 18% cơ hội nếu một người được chọn ngẫu nhiên từ phân phối chuẩn với trung bình là 5. 3 và độ lệch chuẩn là 1 thì chiều cao của người đó sẽ nhỏ hơn 4. 5 ft

Chúng tôi khởi tạo đối tượng của lớp

# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Visualizing the distribution

sb.set_style['whitegrid']
sb.lineplot[data, pdf , color = 'black']
plt.xlabel['Heights']
plt.ylabel['Probability Density']
6 với giá trị trung bình và độ lệch chuẩn, sau đó sử dụng phương thức
# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Visualizing the distribution

sb.set_style['whitegrid']
sb.lineplot[data, pdf , color = 'black']
plt.xlabel['Heights']
plt.ylabel['Probability Density']
7 truyền một giá trị mà chúng tôi cần tìm giá trị xác suất tích lũy. Hàm phân phối tích lũy [CDF] tính toán xác suất tích lũy cho một giá trị x đã cho

Giá trị xác suất tích lũy từ -∞ đến ∞ sẽ bằng 1

Bây giờ, một lần nữa, chúng tôi được yêu cầu chọn ngẫu nhiên một người từ phân phối này, sau đó xác suất chiều cao của người đó sẽ nằm trong khoảng từ 6. 5 và 4. 5 ft. ?

Khu Vực Dưới Đường Cong Giữa 4. 5 và 6. 5 ft

cdf_upper_limit = norm[loc = 5.3 , scale = 1].cdf[6.5]
cdf_lower_limit = norm[loc = 5.3 , scale = 1].cdf[4.5]

prob = cdf_upper_limit - cdf_lower_limit
print[prob]

0.673074 or 67.30 %

Đoạn mã trên trước tiên tính giá trị xác suất tích lũy từ -∞ đến 6. 5 và sau đó là giá trị xác suất tích lũy từ -∞ đến 4. 5. nếu chúng ta trừ cdf của 4. 5 từ cdf của 6. 5 kết quả chúng ta nhận được là diện tích dưới đường cong giữa các giới hạn 6. 5 và 4. 5

Bây giờ, điều gì sẽ xảy ra nếu chúng ta được hỏi về xác suất chiều cao của một người được chọn ngẫu nhiên sẽ cao hơn 6. 5 ft?

Khu Vực Dưới Đường Cong Giữa 6. 5ft và Vô cực

Thật đơn giản, vì chúng ta biết tổng diện tích dưới đường cong bằng 1 và nếu chúng ta tính giá trị xác suất tích lũy từ -∞ đến 6. 5 và lấy 1 trừ đi, kết quả sẽ là xác suất chiều cao của một người được chọn ngẫu nhiên sẽ cao hơn 6. 5ft

cdf_value = norm[loc = 5.3 , scale = 1].cdf[6.5]
prob = 1- cdf_value
print[prob]

0.115069 or 11.50 %.

Có rất nhiều điều để hiểu, nhưng tôi khuyến khích tất cả hãy tiếp tục thực hành khái niệm cơ bản này cùng với việc triển khai bằng python

Mã hoàn chỉnh từ việc thực hiện ở trên

# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

# Creating the distribution
data = np.arange[1,10,0.01]
pdf = norm.pdf[data , loc = 5.3 , scale = 1 ]

#Probability of height to be under 4.5 ft.
prob_1 = norm[loc = 5.3 , scale = 1].cdf[4.5]
print[prob_1]

#probability that the height of the person will be between 6.5 and 4.5 ft.

cdf_upper_limit = norm[loc = 5.3 , scale = 1].cdf[6.5]
cdf_lower_limit = norm[loc = 5.3 , scale = 1].cdf[4.5]

prob_2 = cdf_upper_limit - cdf_lower_limit
print[prob_2]

#probability that the height of a person chosen randomly will be above 6.5ft

cdf_value = norm[loc = 5.3 , scale = 1].cdf[6.5]
prob_3 = 1- cdf_value
print[prob_3]

Phần kết luận

Trong bài viết này, chúng tôi đã có một số ý tưởng về Phân phối chuẩn, Đường cong bình thường trông như thế nào và quan trọng nhất là triển khai nó trong Python

Làm cách nào để vẽ sơ đồ Gaussian trong Python?

GIẢI PHÁP. .
# đường cong bình thường. py nhập numpy dưới dạng np nhập matplotlib. pyplot dưới dạng plt từ scipy. định mức nhập số liệu thống kê # sử dụng sổ ghi chép Jupyter, bao gồm. %matplotlib nội tuyến
# xác định hằng số mu = 998. 8 sigma = 73. 10 x1 = 900 x2 = 1100
# tính biến đổi z z1 = [ x1 - mu ] / sigma z2 = [ x2 - mu ] / sigma
x = np

Biểu đồ nào được sử dụng cho phân phối bình thường?

Đường cong hình chuông là một biểu đồ mô tả phân phối chuẩn, có hình dạng gợi nhớ đến một cái chuông. Đỉnh của đường cong hiển thị giá trị trung bình, chế độ và giá trị trung bình của dữ liệu được thu thập. Độ lệch chuẩn của nó mô tả chiều rộng tương đối của đường cong hình chuông xung quanh giá trị trung bình.

Chủ Đề