Hướng dẫn how do you calculate the probability of a random variable in a normal distribution in python? - làm thế nào để bạn tính toán xác suất của một biến ngẫu nhiên trong phân phối chuẩn trong python?

Có một trong scipy.stats:

>>> import scipy.stats
>>> scipy.stats.norm(0, 1)
<scipy.stats.distributions.rv_frozen object at 0x928352c>
>>> scipy.stats.norm(0, 1).pdf(0)
0.3989422804014327
>>> scipy.stats.norm(0, 1).cdf(0)
0.5
>>> scipy.stats.norm(100, 12)
<scipy.stats.distributions.rv_frozen object at 0x928352c>
>>> scipy.stats.norm(100, 12).pdf(98)
0.032786643008494994
>>> scipy.stats.norm(100, 12).cdf(98)
0.43381616738909634
>>> scipy.stats.norm(100, 12).cdf(100)
0.5

[Một điều cần cẩn thận - chỉ là một mẹo - là tham số đi qua hơi rộng. Do cách thiết lập mã, nếu bạn vô tình viết scipy.stats.norm(mean=100, std=12) thay vì

import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
0 hoặc
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
1, thì nó sẽ chấp nhận nó, nhưng âm thầm loại bỏ các đối số từ khóa bổ sung đó và cung cấp cho bạn mặc định (0,1).].

Đã trả lời ngày 13 tháng 9 năm 2012 lúc 19:03Sep 13, 2012 at 19:03

Hướng dẫn how do you calculate the probability of a random variable in a normal distribution in python? - làm thế nào để bạn tính toán xác suất của một biến ngẫu nhiên trong phân phối chuẩn trong python?

DSMDSMDSM

328K62 Huy hiệu vàng573 Huy hiệu bạc481 Huy hiệu Đồng62 gold badges573 silver badges481 bronze badges

6

Scipy.stats là một mô -đun tuyệt vời. Chỉ để cung cấp một cách tiếp cận khác, bạn có thể tính toán trực tiếp bằng cách sử dụng

import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom

Điều này sử dụng công thức được tìm thấy ở đây: http://en.wikipedia.org/wiki/normal_distribution#probability_didion_function

để kiểm tra:

>>> normpdf(7,5,5)  
0.07365402806066466
>>> norm(5,5).pdf(7)
0.073654028060664664

Đã trả lời ngày 13 tháng 9 năm 2012 lúc 19:32Sep 13, 2012 at 19:32

Hướng dẫn how do you calculate the probability of a random variable in a normal distribution in python? - làm thế nào để bạn tính toán xác suất của một biến ngẫu nhiên trong phân phối chuẩn trong python?

jiminy_cristjiminy_cristjiminy_crist

2.3552 Huy hiệu vàng17 Huy hiệu bạc23 Huy hiệu đồng2 gold badges17 silver badges23 bronze badges

3

Đây là thông tin thêm. Đầu tiên bạn đang xử lý phân phối đóng băng (đóng băng trong trường hợp này có nghĩa là các tham số của nó được đặt thành các giá trị cụ thể). Để tạo phân phối đóng băng:

import scipy.stats
scipy.stats.norm(loc=100, scale=12)
#where loc is the mean and scale is the std dev
#if you wish to pull out a random number from your distribution
scipy.stats.norm.rvs(loc=100, scale=12)

#To find the probability that the variable has a value LESS than or equal
#let's say 113, you'd use CDF cumulative Density Function
scipy.stats.norm.cdf(113,100,12)
Output: 0.86066975255037792
#or 86.07% probability

#To find the probability that the variable has a value GREATER than or
#equal to let's say 125, you'd use SF Survival Function 
scipy.stats.norm.sf(125,100,12)
Output: 0.018610425189886332
#or 1.86%

#To find the variate for which the probability is given, let's say the 
#value which needed to provide a 98% probability, you'd use the 
#PPF Percent Point Function
scipy.stats.norm.ppf(.98,100,12)
Output: 124.64498692758187

người sử dụng

5.1497 Huy hiệu vàng46 Huy hiệu bạc70 Huy hiệu đồng7 gold badges46 silver badges70 bronze badges

Đã trả lời ngày 5 tháng 12 năm 2017 lúc 5:18Dec 5, 2017 at 5:18

J. Khouryj. KhouryJ. Khoury

5895 Huy hiệu bạc5 Huy hiệu Đồng5 silver badges5 bronze badges

2

Bắt đầu

import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
2, thư viện tiêu chuẩn cung cấp đối tượng
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
3 như một phần của mô -đun
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
4.

Nó có thể được sử dụng để có được hàm mật độ xác suất (

import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
5 - khả năng một mẫu x ngẫu nhiên sẽ ở gần giá trị đã cho x) cho một giá trị trung bình nhất định (
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
6) và độ lệch chuẩn (
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
7):probability density function (
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
5 - likelihood that a random sample X will be near the given value x) for a given mean (
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
6) and standard deviation (
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
7):

from statistics import NormalDist

NormalDist(mu=100, sigma=12).pdf(98)
# 0.032786643008494994

Cũng lưu ý rằng đối tượng

import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
3 cũng cung cấp chức năng phân phối tích lũy (
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
9 - Xác suất rằng mẫu x ngẫu nhiên sẽ nhỏ hơn hoặc bằng x):cumulative distribution function (
import math
def normpdf(x, mean, sd):
    var = float(sd)**2
    denom = (2*math.pi*var)**.5
    num = math.exp(-(float(x)-float(mean))**2/(2*var))
    return num/denom
9 - probability that a random sample X will be less than or equal to x):

NormalDist(mu=100, sigma=12).cdf(98)
# 0.43381616738909634

Đã trả lời ngày 28 tháng 2 năm 2019 lúc 19:47Feb 28, 2019 at 19:47

Hướng dẫn how do you calculate the probability of a random variable in a normal distribution in python? - làm thế nào để bạn tính toán xác suất của một biến ngẫu nhiên trong phân phối chuẩn trong python?

Xavier Guihotxavier GuihotXavier Guihot

47.9K21 Huy hiệu vàng266 Huy hiệu bạc171 Huy hiệu đồng21 gold badges266 silver badges171 bronze badges

0

Trong trường hợp bạn muốn tìm diện tích giữa 2 giá trị của x trung bình = 1; độ lệch chuẩn = 2; Xác suất x giữa [0,5,2]

import scipy.stats
scipy.stats.norm(1, 2).cdf(2) - scipy.stats.norm(1,2).cdf(0.5)

Đã trả lời ngày 19 tháng 6 năm 2019 lúc 4:36Jun 19, 2019 at 4:36

PrashanthprashanthPrashanth

Huy hiệu Bạc 1111 Huy hiệu đồng1 silver badge2 bronze badges

Công thức được trích dẫn từ Wikipedia được đề cập trong các câu trả lời không thể được sử dụng để tính toán các xác suất bình thường. Bạn sẽ phải viết một hàm xấp xỉ tích hợp số bằng cách sử dụng công thức đó để tính xác suất.

Công thức đó tính toán giá trị cho hàm mật độ xác suất. Vì phân phối bình thường là liên tục, bạn phải tính toán một tích phân để có xác suất. Trang web Wikipedia đề cập đến CDF, không có dạng đóng cho phân phối bình thường.

Đã trả lời ngày 25 tháng 5 năm 2015 lúc 15:44May 25, 2015 at 15:44

1

Lưu ý rằng xác suất khác với mật độ xác suất

>>> normpdf(7,5,5)  
0.07365402806066466
>>> norm(5,5).pdf(7)
0.073654028060664664
0, mà một số câu trả lời trước đây đề cập đến. Xác suất là cơ hội mà biến có một giá trị cụ thể, trong khi mật độ xác suất là khả năng biến sẽ gần một giá trị cụ thể, có nghĩa là xác suất trong một phạm vi. Vì vậy, để có được xác suất bạn cần tính toán tích phân của hàm mật độ xác suất trong một khoảng thời gian nhất định. Là một xấp xỉ, bạn chỉ có thể nhân mật độ xác suất với khoảng thời gian mà bạn quan tâm và điều đó sẽ cung cấp cho bạn xác suất thực tế.probability is different than probability density
>>> normpdf(7,5,5)  
0.07365402806066466
>>> norm(5,5).pdf(7)
0.073654028060664664
0, which some of the previous answers refer to. Probability is the chance that the variable has a specific value, whereas the probability density is the chance that the variable will be near a specific value, meaning probability over a range. So to obtain the probability you need to compute the integral of the probability density function over a given interval. As an approximation, you can simply multiply the probability density by the interval you're interested in and that will give you the actual probability.

import numpy as np
from scipy.stats import norm

data_start = -10
data_end = 10
data_points = 21
data = np.linspace(data_start, data_end, data_points)

point_of_interest = 5
mu = np.mean(data)
sigma = np.std(data)                                   
interval = (data_end - data_start) / (data_points - 1)
probability = norm.pdf(point_of_interest, loc=mu, scale=sigma) * interval

Mã trên sẽ cung cấp cho bạn xác suất biến sẽ có giá trị chính xác là 5 trong phân phối bình thường giữa -10 đến 10 với 21 điểm dữ liệu (khoảng thời gian có nghĩa là 1). Bạn có thể chơi xung quanh với giá trị khoảng thời gian cố định, tùy thuộc vào kết quả bạn muốn đạt được.

Đã trả lời ngày 8 tháng 1 năm 2021 lúc 13:58Jan 8, 2021 at 13:58

Hướng dẫn how do you calculate the probability of a random variable in a normal distribution in python? - làm thế nào để bạn tính toán xác suất của một biến ngẫu nhiên trong phân phối chuẩn trong python?

tsveti_ikotsveti_ikotsveti_iko

5.7583 huy hiệu vàng39 Huy hiệu bạc37 Huy hiệu đồng3 gold badges39 silver badges37 bronze badges

1

Tôi đã viết chương trình này để làm toán cho bạn. Chỉ cần nhập vào số liệu thống kê tóm tắt. Không cần cung cấp một mảng:

Test Z Mẫu cho tỷ lệ dân số:

Để làm điều này cho nghĩa là thay vì tỷ lệ, hãy thay đổi công thức cho z phù hợp

Chỉnh sửa: Đây là nội dung từ liên kết:
Here is the content from the link:

import scipy.stats as stats
import math

def one_sample_ztest_pop_proportion(tail, p, pbar, n, alpha):
    #Calculate test stat

    sigma = math.sqrt((p*(1-p))/(n))
    z = round((pbar - p) / sigma, 2)

    if tail == 'lower':
        pval = round(stats.norm(p, sigma).cdf(pbar),4)
        print("Results for a lower tailed z-test: ")


    elif tail == 'upper':
        pval = round(1 - stats.norm(p, sigma).cdf(pbar),4)
        print("Results for an upper tailed z-test: ")


    elif tail == 'two':
        pval = round(stats.norm(p, sigma).cdf(pbar)*2,4)
        print("Results for a two tailed z-test: ")


    #Print test results
    print("Test statistic = {}".format(z))   
    print("P-value = {}".format(pval))
    print("Confidence = {}".format(alpha))

    #Compare p-value to confidence level
    if pval <= alpha:
        print("{} <=  {}. Reject the null hypothesis.".format(pval, alpha))
    else:
        print("{} > {}. Do not reject the null hypothesis.".format(pval, alpha))


#one_sample_ztest_pop_proportion('upper', .20, .25, 400, .05)

#one_sample_ztest_pop_proportion('two', .64, .52, 100, .05)

Hướng dẫn how do you calculate the probability of a random variable in a normal distribution in python? - làm thế nào để bạn tính toán xác suất của một biến ngẫu nhiên trong phân phối chuẩn trong python?

K.Mulier

7.91413 Huy hiệu vàng73 Huy hiệu bạc130 Huy hiệu đồng13 gold badges73 silver badges130 bronze badges

Đã trả lời ngày 24 tháng 1 năm 2018 lúc 23:12Jan 24, 2018 at 23:12

Hướng dẫn how do you calculate the probability of a random variable in a normal distribution in python? - làm thế nào để bạn tính toán xác suất của một biến ngẫu nhiên trong phân phối chuẩn trong python?

1

Tôi muốn nói: Người hỏi đang hỏi "Làm thế nào để tính toán khả năng của một điểm dữ liệu nhất định trong một phân phối bình thường được đưa ra trung bình & độ lệch chuẩn?" thay vì "làm thế nào để tính xác suất trong phân phối bình thường được đưa ra cho độ lệch trung bình & độ lệch chuẩn?".

Đối với "xác suất", nó phải nằm trong khoảng từ 0 đến 1, nhưng đối với "khả năng", nó phải không âm (không nhất thiết là từ 0 đến 1).

Bạn có thể sử dụng

>>> normpdf(7,5,5)  
0.07365402806066466
>>> norm(5,5).pdf(7)
0.073654028060664664
1 trong scipy.stats.multivariate_normal để tính toán nó.

Đã trả lời ngày 24 tháng 10 năm 2021 lúc 11:25Oct 24, 2021 at 11:25

Hướng dẫn how do you calculate the probability of a random variable in a normal distribution in python? - làm thế nào để bạn tính toán xác suất của một biến ngẫu nhiên trong phân phối chuẩn trong python?

Z.LIZ.LIZ.LI

3392 Huy hiệu bạc10 Huy hiệu Đồng2 silver badges10 bronze badges

Bạn chỉ có thể sử dụng chức năng lỗi được tích hợp trong thư viện toán học, như đã nêu trên trang web của họ.

Hoàn tác ♦

25.3K37 Huy hiệu vàng107 Huy hiệu bạc126 Huy hiệu đồng37 gold badges107 silver badges126 bronze badges

Đã trả lời ngày 1 tháng 5 năm 2013 lúc 16:33May 1, 2013 at 16:33

1

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

Để 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.find the area under the curve in that range. i.e. we need to integrate the density function. Since the normal distribution is a continuous distribution, the area under the curve represents the probabilities.

Làm thế nào để bạn tìm thấy xác suất của một phân phối bình thường?

Xác suất giữa các giá trị z sau đó thể hiện chúng là xác suất tương ứng của chúng theo đường cong phân phối bình thường tiêu chuẩn: p (z P(Z < b) – P(Z < a) = Φ(b) – Φ(a). Therefore, P(a < Z < b) = Φ(b) – Φ(a), where a and b are positive.

Làm thế nào chúng ta có thể tính toán xác suất trong Python?

Để tính toán xác suất này, bạn chia số lượng kết quả sự kiện có thể cho không gian mẫu.Điều này có nghĩa là bạn phải xem xét trước tiên có bao nhiêu cách có thể để đồng xu hạ cánh trên đuôi và số lượng kết quả có thể xảy ra.Cái trước là 1, vì bạn chỉ có một cách có thể để có được đuôi.divide the number of possible event outcomes by the sample space. This means that you have to consider first how many possible ways there are for the coin to land on tails, and the number of possible outcomes. The former is 1, as you have only one possible way to get tails.