ক্রমবর্ধমান স্বাভাবিক বিতরণ গণনা কিভাবে?


102

আমি নম্পি বা স্কিপি (বা কোনও কঠোর পাইথন লাইব্রেরি) এর কোনও ফাংশন সন্ধান করছি যা পাইথনের সংখ্যক সাধারণ বিতরণ ফাংশন দেবে।

উত্তর:


127

এখানে একটি উদাহরণ:

>>> from scipy.stats import norm
>>> norm.cdf(1.96)
0.9750021048517795
>>> norm.cdf(-1.96)
0.024997895148220435

অন্য কথায়, স্ট্যান্ডার্ড স্বাভাবিক ব্যবধানের প্রায় 95% দুটি শূন্যের স্ট্যান্ডার্ড গড়কে কেন্দ্র করে দুটি স্ট্যান্ডার্ড বিচ্যুতির মধ্যে থাকে।

যদি আপনার বিপরীত সিডিএফ প্রয়োজন:

>>> norm.ppf(norm.cdf(1.96))
array(1.9599999999999991)

10
এছাড়াও, আপনি প্যারামিটার হিসাবে গড় (লোক) এবং ভেরিয়েন্স (স্কেল) নির্দিষ্ট করতে পারেন। যেমন, d = আদর্শ (লোক = 10.0, স্কেল = 2.0); d.cdf (12.0); এখানে বিবরণ: docs.scipy.org/doc/scipy-0.14.0/reference/generated/...
Irvan

7
@ ইরান, স্কেল প্যারামিটারটি আসলে স্ট্যান্ডার্ড বিচ্যুতি, ভিন্নতা নয়।
কিখলি

4
কেন এই নাম scipy নেই locএবং scale? আমি ব্যবহৃত help(norm.ppf)কিন্তু তারপর কি নরক হয় locএবং scale- সাহায্যের জন্য সাহায্যের প্রয়োজন ..
StephenBoesch

4
@ জাভাদ্ববা - পরিসংখ্যানগুলিতে অবস্থান এবং স্কেল আরও সাধারণ পদ যা বিভিন্ন বিস্তারের পরিমিতিগুলি পরামিতি করতে ব্যবহৃত হয়। সাধারণ বিতরণের জন্য, তারা গড় এবং এসডির সাথে লাইন রাখে, তবে অন্যান্য বিতরণের ক্ষেত্রে তা নয়।
মাইকেল অহল্রোগ

4
পছন্দ করুন ধন্যবাদ! এখানে, NIST থেকে একটি পৃষ্ঠা আরও ব্যাখ্যা হয় itl.nist.gov/div898/handbook/eda/section3/eda364.htm
StephenBoesch

40

প্রশ্নের উত্তর দিতে দেরি হতে পারে তবে গুগল এখনও যেহেতু এখানে মানুষকে নেতৃত্ব দেয় তাই আমি এখানে আমার সমাধানটি লেখার সিদ্ধান্ত নিই।

অর্থাৎ পাইথন ২.7 থেকে mathগ্রন্থাগারটি ত্রুটি ফাংশনকে একীভূত করেছেmath.erf(x)

erf()ফাংশন যেমন ক্রমসঞ্চিত আদর্শ সাধারন বন্টনের যেমন ঐতিহ্যগত পরিসংখ্যানগত ফাংশন জন্য ব্যবহার করা যেতে পারে:

from math import *
def phi(x):
    #'Cumulative distribution function for the standard normal distribution'
    return (1.0 + erf(x / sqrt(2.0))) / 2.0

রেফ:

https://docs.python.org/2/library/math.html

https://docs.python.org/3/library/math.html

ত্রুটি ফাংশন এবং স্ট্যান্ডার্ড সাধারণ বিতরণ ফাংশন কীভাবে সম্পর্কিত?


4
এটি ঠিক আমি যা খুঁজছিলাম ছিল। যদি আমার চেয়ে অন্য কেউ যদি অবাক হয়ে যায় যে কীভাবে এটি "স্ট্যান্ডার্ড বিতরণের মধ্যে থাকা ডেটার শতাংশ" গণনা করতে ব্যবহার করা যায় তবে ভাল: 1 - (1 - ফাই (1)) * 2 = 0.6827 ("1% এর মধ্যে ডেটার 68%)" বিচ্যুতি ")
হ্যানস ল্যান্ডহোম

4
একটি সাধারণ সাধারণ বিতরণের জন্য, এটি হবে def phi(x, mu, sigma): return (1 + erf((x - mu) / sigma / sqrt(2))) / 2
বার্নহার্ড বার্কার 19

20

শুরু হচ্ছে Python 3.8, মানক গ্রন্থাগারটি মডিউলের NormalDistঅংশ হিসাবে অবজেক্টটি সরবরাহ করে statistics

এটি একটি নির্দিষ্ট গড় ( ) এবং স্ট্যান্ডার্ড বিচ্যুতি ( ) এর জন্য ক্রমবর্ধমান ডিস্ট্রিবিউশন ফাংশন ( cdf- সম্ভাব্যতা যে এলোমেলোভাবে নমুনা এক্স এর চেয়ে কম বা x এর সমান হবে ):musigma

from statistics import NormalDist

NormalDist(mu=0, sigma=1).cdf(1.96)
# 0.9750021048517796

মানক সাধারণ বিতরণ ( mu = 0এবং sigma = 1) এর জন্য যা সরল করা যেতে পারে :

NormalDist().cdf(1.96)
# 0.9750021048517796

NormalDist().cdf(-1.96)
# 0.024997895148220428

18

এখান থেকে গৃহীত http://mail.python.org/pipermail/python-list/2000- জুন/098873. html

from math import *
def erfcc(x):
    """Complementary error function."""
    z = abs(x)
    t = 1. / (1. + 0.5*z)
    r = t * exp(-z*z-1.26551223+t*(1.00002368+t*(.37409196+
        t*(.09678418+t*(-.18628806+t*(.27886807+
        t*(-1.13520398+t*(1.48851587+t*(-.82215223+
        t*.17087277)))))))))
    if (x >= 0.):
        return r
    else:
        return 2. - r

def ncdf(x):
    return 1. - 0.5*erfcc(x/(2**0.5))

4
যেহেতু std lib math.erf () প্রয়োগ করে, সেপ বাস্তবায়ন করার দরকার নেই।
মার্ক

আমি কোনও উত্তর খুঁজে পাইনি, এই সংখ্যাগুলি কোথা থেকে এসেছে?
TmSmth

15

অজানা উদাহরণটির ভিত্তিতে, প্রচুর লাইব্রেরিতে প্রয়োগ করা ফাংশন নরমডিজ্টের পাইথনের সমতুল্য হবে:

def normcdf(x, mu, sigma):
    t = x-mu;
    y = 0.5*erfcc(-t/(sigma*sqrt(2.0)));
    if y>1.0:
        y = 1.0;
    return y

def normpdf(x, mu, sigma):
    u = (x-mu)/abs(sigma)
    y = (1/(sqrt(2*pi)*abs(sigma)))*exp(-u*u/2)
    return y

def normdist(x, mu, sigma, f):
    if f:
        y = normcdf(x,mu,sigma)
    else:
        y = normpdf(x,mu,sigma)
    return y

10

অ্যালেক্সের উত্তর আপনাকে স্ট্যান্ডার্ড সাধারণ বিতরণের জন্য সমাধান দেখায় (মানে = 0, স্ট্যান্ডার্ড বিচ্যুতি = 1)। আপনার সাথে যদি সাধারণ বিতরণ থাকে meanএবং std(যা হয় sqr(var)) এবং আপনি গণনা করতে চান:

from scipy.stats import norm

# cdf(x < val)
print norm.cdf(val, m, s)

# cdf(x > val)
print 1 - norm.cdf(val, m, s)

# cdf(v1 < x < v2)
print norm.cdf(v2, m, s) - norm.cdf(v1, m, s)

সম্পর্কে আরও পড়ুন সিডিএফ এখানে অনেক সূত্র ও স্বাভাবিক বিতরণের scipy বাস্তবায়ন এখানে


2

উপরে থেকে নেওয়া:

from scipy.stats import norm
>>> norm.cdf(1.96)
0.9750021048517795
>>> norm.cdf(-1.96)
0.024997895148220435

দ্বি-পুচ্ছ পরীক্ষার জন্য:

Import numpy as np
z = 1.96
p_value = 2 * norm.cdf(-np.abs(z))
0.04999579029644087


-8

গুগল যেমন নেটলোগো পিডিএফ অনুসন্ধানের জন্য এই উত্তর দেয় , উপরোক্ত পাইথন কোডটির নেটলোগো সংস্করণটি এখানে

    ;; সাধারণ বিতরণ संचयी ঘনত্ব ফাংশন
    প্রতিবেদন করার জন্য নরমীসিডিএফ [এক্স মি সিগমা]
        tx - মিউ
        যাক 0.5% এরফিসি [- টি / (সিগমা * স্কয়ার্ট 2.0)]
        যদি (y> ​​1.0) [y 1.0 সেট করুন]
        রিপোর্ট y
    শেষ

    ;; সাধারণ বিতরণ সম্ভাবনা ঘনত্ব ফাংশন
    টু রিপোর্ট করার জন্য
        যাক u = (এক্স - মিউ) / অ্যাবস সিগমা
        যাক y = 1 / (স্কয়ার্ট [2 * পিআই] * অ্যাবস সিগমা) * এক্সপ্রেস (- ইউ * ইউ / ২.০)
        রিপোর্ট y
    শেষ

    ;; পরিপূরক ত্রুটি ফাংশন
    প্রতিবেদন করতে erfcc [এক্স]
        যাক z অ্যাবস এক্স
        1.0 / (1.0 + 0.5 * z) দিন
        আরটি * এক্সপ্রেস (- z * z -1.26551223 + t * (1.00002368 + টি * (0.37409196 +
            টি * (0.09678418 + টি * (-0.18628806 + টি * (.27886807 +
            টি * (-1.13520398 + টি * (1.48851587 + টি * (-0.82215223 +
            টি * .17087277)))))))))
        ifelse (x> = 0) [রিপোর্ট r] [প্রতিবেদন 2.0 - r]
    শেষ


6
প্রশ্নটি পাইথন নিয়ে, নেটলোগোর নয়। এই উত্তরটি এখানে থাকা উচিত নয়। এবং দয়া করে প্রশ্নের অর্থ পরিবর্তন করতে প্রশ্নটি সম্পাদনা করবেন না।
ইন্টারজয়

আমি সচেতন যে এটি পছন্দসই উপায় নয়, তবে আমি অনুমান করি যে এইভাবে লোকেরা এই পৃষ্ঠায় গুগল দ্বারা পরিচালিত হয়েছে (বর্তমানে ...)
প্লাটিপডিয়াম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.