Hướng dẫn define a python function to simulate values in a normal distribution format - xác định một hàm python để mô phỏng các giá trị ở định dạng phân phối chuẩn

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

Một phân phối bình thường có lẽ là chức năng mô hình hóa được sử dụng nhiều nhất trong thống kê. Nó hoạt động như thế này: chúng tôi nhóm các yếu tố tương tự trong dữ liệu và chúng tôi đếm số lần chúng xuất hiện.

Chúng ta có thể nghĩ về ví dụ này là tuổi của một nhóm người: Tần số cao nhất là 150 người 65 tuổi

Một phân phối bình thường có thể cho chúng ta thấy ngay lập tức dữ liệu được phân phối trong bộ dữ liệu. Điều này trở nên rất hữu ích khi chúng ta muốn biết ngay lập tức dữ liệu quá gần và dữ liệu nào quá xa [vì chúng ta có thể muốn xóa nó] và nếu dữ liệu có thể dự đoán được [có phương sai thấp] hoặc không chắc chắn về mặt xác suất [phương sai cao] .

Nó được sử dụng ở đâu?

Phần lớn dữ liệu thực có thể được mô hình hóa bằng cách sử dụng phân phối bình thường: chúng ta có thể nghĩ về dữ liệu chứng khoán, điểm số thể thao, giá trị tâm lý. Điều này làm cho nó thực sự phổ biến và vì hầu hết mọi dữ liệu có thể tương ứng với chức năng toán học này, chúng ta có thể sử dụng nó để chạy Tính toán được xác định trước.

Ví dụ, trong đào tạo chứng khoán hoặc rủi ro đa dạng hóa danh mục đầu tư được đánh giá bằng cách sử dụng độ lệch chuẩn: điều này có nghĩa là một cổ phiếu có lợi nhuận tạo thành một phân phối bình thường lây lan được coi là rất rủi ro [vì nó có thể có biến động cao], trong khi một cổ phiếu có phân phối bình thường hẹp được coi là an toàn hơn.

Chúng ta cần sao chép nó?

Để điều chỉnh phân phối bình thường với dữ liệu thực là rất đơn giản, chúng ta chỉ có thể chơi với 3 số: trung bình, độ lệch chuẩn và alfa.

  • Giá trị trung bình cho phép phân phối di chuyển sang trái [thấp hơn] hoặc bên phải [cao hơn]
  • Độ lệch chuẩn làm cho phân phối lan rộng [càng cao, càng lớn]
  • ALFA cong phân phối từ trái [âm] sang phải [tích cực]

Mã hóa phân phối

Để mã hóa phân phối, nó có nghĩa là tạo ra một bộ dữ liệu cuối cùng gồm hàng ngàn/triệu mẫu mà khi biểu đồ trông giống như một phân phối bình thường. Nói một cách xác suất, đây là cách nó được thực hiện theo một hàm với các tham số của riêng chúng tôi [để làm cho mã đơn giản hơn cho người mới bắt đầu, tôi đã đặt nó vào một chức năng, nhưng bạn có thể dễ dàng quản lý nó]:

import pandas as pd
from scipy.stats import skewnorm

def create_pdf[sd, mean, alfa]:
    #invertire il segno di alfa
    x = skewnorm.rvs[alfa, size=1000000] 
    def calc[k, sd, mean]:
      return [k*sd]+mean
    x = calc[x, sd, mean] #standard distribution
    return x

x = create_pdf[sd=0.1, mean=1, alfa=5]

Vẽ đồ thị phân phối bình thường

Khi chúng tôi đã tạo một bộ dữ liệu với một số điểm [1.000.000] được chọn ngẫu nhiên từ phân phối bình thường, chúng tôi có thể dễ dàng khai thác API trực quan hóa gấu trúc để hiển thị biểu đồ phân phối của chúng tôi:

pd.DataFrame[x].hist[bins=200]

Phân phối bình thường với độ lệch tối thiểu

Nếu chúng ta muốn thực hiện phân phối bị lệch sang trái, chúng ta có thể thay đổi tham số ALFA thành 5:

Phân phối bình thường với độ lệch cao

Tham gia cộng đồng lập trình miễn phí của chúng tôi trên Discord, tìm hiểu cách viết mã và gặp gỡ các chuyên gia khác

Ngay cả khi bạn không ở trong lĩnh vực thống kê, bạn cũng phải bắt gặp thuật ngữ phân phối bình thường.Normal Distribution”.

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

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

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

Nếu chúng tôi được yêu cầu nhận 1 người lớn ngẫu nhiên và hỏi những gì anh ấy/cô ấy [giả sử giới tính không ảnh hưởng đến chiều cao] sẽ là gì? Không có cách nào để biết chiều cao sẽ là gì. Nhưng nếu chúng ta có sự phân phối chiều cao của người lớn 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ì?

Một phân phối bình thường còn được gọi là phân phối Gaussian hoặc đường cong chuông nổi tiếng. Mọi người sử dụng cả hai từ có thể thay thế cho nhau, nhưng nó có nghĩa là điều tương tự. Đó là một phân phối xác suất liên tục.Normal Distribution is also known as a Gaussian distribution or famously Bell Curve. People use both words interchangeably, but it means the same thing. It is a continuous probability distribution.

Hàm mật độ xác suất [PDF] cho phân phối bình thường:

Chức năng mật độ xác suất của phân phối bình thường

Trong đó, = trung bình, = độ lệch chuẩn, x = giá trị đầu vào.

Terminology:

  • Trung bình - giá trị trung bình là trung bình thông thường. Tổng của tổng số điểm chia cho tổng số điểm. – The mean is the usual average. The sum of total points divided by the total number of points.
  • Độ lệch chuẩn - Độ lệch chuẩn cho chúng ta biết cách truyền bá dữ liệu của Google như thế nào. Đó là thước đo giá trị quan sát được bao xa từ giá trị trung bình. – Standard deviation tells us how “spread out” the data is. It is a measure of how far each observed value is from the mean.

Có vẻ khó khăn, phải không? Nhưng nó rất đơn giản.

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

Hãy để một cái nhìn vào mã bên dưới. Chúng tôi sẽ sử dụng Numpy và Matplotlib cho cuộc biểu tình 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 phân phối bình thường

Hàm mật độ phân phối bình thường chỉ đơn giản là 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à ném một giá trị mà chúng ta gọi là mật độ xác suất.probability density.

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

Thay đổi giá trị trung bình sẽ chuyển đường cong theo 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 cò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. Một độ lệch chuẩn nhỏ hơn sẽ dẫn đến một đường cong giới hạn chặt chẽ trong khi giá trị cao sẽ dẫn đến một đường cong trải rộng hơn.

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

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

Phần trăm phân phối dữ liệu xung quanh 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.

Đó là một trong những phân phối quan trọng nhất trong tất cả các số liệu thống kê. Sự phân phối bình thường là kỳ diệu vì hầu hết các hiện tượng xảy ra tự nhiên tuân theo phân phối bình thường. Ví dụ, huyết áp, điểm IQ, chiều cao theo phân phối bình thường.

Tính toán xác suất với phân phối bình thường

Để tìm xác suất của một giá trị xảy ra trong một phạm vi trong phân phối bình thường, chúng ta chỉ cần tìm khu vực dưới đường cong trong phạm vi đó. tức là chúng ta cần tích hợp hàm mật độ.

Vì phân phối bình thường là một phân phối liên tục, khu vực dưới đường cong thể hiện xác suất.

Trước khi nhận được chi tiết trước tiên, hãy để Lừa chỉ biết phân phối bình thường tiêu chuẩn là gì.

Một phân phối bình thường tiêu chuẩn tương tự như phân phối bình thường với trung bình = 0 và độ lệch chuẩn = 1. is just similar to a normal distribution with mean = 0 and standard deviation = 1.

pd.DataFrame[x].hist[bins=200]
1

Giá trị Z ở trên còn được gọi là điểm Z. Một điểm Z cho bạn một ý tưởng về mức độ trung bình của một điểm dữ liệu. z-score. A z-score gives you an idea of how far from the mean a data point is.

Nếu chúng ta dự định tính toán xác suất theo cách thủ công, chúng ta sẽ cần tra cứu giá trị Z của chúng ta trong bảng Z để xem giá trị tỷ lệ 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 để vào đó.

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

Chúng tôi sẽ sử dụng chức năng lớp

pd.DataFrame[x].hist[bins=200]
2 để tính toán xác suất từ ​​phân phối bình thường.

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

Thông tin này là đủ để 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']

Phân phối chiều cao

Phương pháp lớp

pd.DataFrame[x].hist[bins=200]
3 yêu cầu
pd.DataFrame[x].hist[bins=200]
4 và
pd.DataFrame[x].hist[bins=200]
5 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.
pd.DataFrame[x].hist[bins=200]
4 không là gì ngoài giá trị trung bình và
pd.DataFrame[x].hist[bins=200]
5 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 xác suất của dữ liệu cụ thể xảy ra

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

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

Khu vực dưới đường cong như trong hình trên sẽ là xác suất chiều cao của người sẽ 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.

Vùng dưới đường cong không là gì ngoài việc tích hợp hàm mật độ với giới hạn bằng -∞ đến 4,5.

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

0.211855 or 21.185 %

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

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

pd.DataFrame[x].hist[bins=200]
8 với độ lệch trung bình và độ lệch chuẩn, sau đó sử dụng phương pháp
pd.DataFrame[x].hist[bins=200]
9 truyền một giá trị lên 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 giá trị X nhất định.

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 một người ngẫu nhiên từ phân phối này, thì xác suất chiều cao của người sẽ ở trong khoảng từ 6,5 đến 4,5 ft là bao nhiêu?

Diện tích dưới đường cong giữa 4,5 đến 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 %

Mã trên đầu tiên tính toán 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 là 4,5 từ CDF là 6.5, kết quả chúng ta nhận được là diện tích dưới đường cong giữa 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 rằng chiều cao của một người được chọn ngẫu nhiên sẽ trên 6,5ft?

Diện tích dưới đường cong giữa 6,5ft và vô cực

Thật đơn giản, như 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 toán giá trị xác suất tích lũy từ -∞ đến 6,5 và trừ nó từ 1, kết quả sẽ là xác suất mà chiều cao của một người được chọn ngẫu nhiên sẽ là Trê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 %.

Đó là rất nhiều thứ để chìm vào, nhưng tôi khuyến khích tất cả tiếp tục thực hành khái niệm thiết yếu này cùng với việc thực hiện bằng cách sử dụng Python.

Mã hoàn chỉnh từ việc triển khai trên:

pd.DataFrame[x].hist[bins=200]
0

Sự 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 bình thường, một đường cong bình thường trông như thế nào và quan trọng nhất là việc thực hiện nó trong Python.

Học hỏi!

Làm thế nào để bạn xác định một phân phối bình thường trong Python?

Phân phối bình thường là một biểu mẫu trình bày dữ liệu bằng cách sắp xếp phân phối xác suất của từng giá trị trong dữ liệu. Hầu hết các giá trị vẫn còn xung quanh giá trị trung bình làm cho sự sắp xếp đối xứng. Chúng tôi sử dụng các chức năng khác nhau trong thư viện Numpy để tính toán toán học các giá trị cho phân phối bình thường.a form presenting data by arranging the probability distribution of each value in the data. Most values remain around the mean value making the arrangement symmetric. We use various functions in numpy library to mathematically calculate the values for a normal distribution.

Làm thế nào để bạn mô phỏng dữ liệu trong Python?

Tạo một thuật toán từng bước để xấp xỉ một hệ thống phức tạp.Thiết kế và chạy mô phỏng trong thế giới thực bằng Python với Simpy ...
Thiết lập môi trường ..
Vượt qua các tham số ..
Chạy mô phỏng ..

Làm thế nào để bạn phù hợp với phân phối bình thường với dữ liệu trong Python?

Sử dụng Scipy ...
Dữ liệu = NP.ngẫu nhiên.Bình thường [0, 0,5, 1000].
trung bình, var = scipy.số liệu thống kê.Phân phối.....
x = np.không gian linsp [-5,5,100].
FITTED_DATA = SCIPY.số liệu thống kê.Phân phối.....
plt.Lịch sử [dữ liệu, mật độ = true].
plt.Lô đất [x, fited_data, 'r-'] âm mưu dữ liệu và fited_data ..

Làm cách nào để tạo một phân phối bình thường trong Numpy?

Random.Nqual [loc = 0,0, tỷ lệ = 1.0, size = none]: Tạo một mảng hình dạng được chỉ định và lấp đầy nó bằng các giá trị ngẫu nhiên thực sự là một phần của phân phối bình thường [Gaussian].Đây là phân phối còn được gọi là đường cong chuông vì hình dạng đặc điểm của nó. normal[loc = 0.0, scale = 1.0, size = None] : creates an array of specified shape and fills it with random values which is actually a part of Normal[Gaussian]Distribution. This is Distribution is also known as Bell Curve because of its characteristics shape.

Bài Viết Liên Quan

Chủ Đề