আমি নম্পি বা স্কিপি (বা কোনও কঠোর পাইথন লাইব্রেরি) এর কোনও ফাংশন সন্ধান করছি যা পাইথনের সংখ্যক সাধারণ বিতরণ ফাংশন দেবে।
উত্তর:
এখানে একটি উদাহরণ:
>>> 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)
loc
এবং scale
? আমি ব্যবহৃত help(norm.ppf)
কিন্তু তারপর কি নরক হয় loc
এবং scale
- সাহায্যের জন্য সাহায্যের প্রয়োজন ..
প্রশ্নের উত্তর দিতে দেরি হতে পারে তবে গুগল এখনও যেহেতু এখানে মানুষকে নেতৃত্ব দেয় তাই আমি এখানে আমার সমাধানটি লেখার সিদ্ধান্ত নিই।
অর্থাৎ পাইথন ২.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
ত্রুটি ফাংশন এবং স্ট্যান্ডার্ড সাধারণ বিতরণ ফাংশন কীভাবে সম্পর্কিত?
def phi(x, mu, sigma): return (1 + erf((x - mu) / sigma / sqrt(2))) / 2
।
শুরু হচ্ছে Python 3.8
, মানক গ্রন্থাগারটি মডিউলের NormalDist
অংশ হিসাবে অবজেক্টটি সরবরাহ করে statistics
।
এটি একটি নির্দিষ্ট গড় ( ) এবং স্ট্যান্ডার্ড বিচ্যুতি ( ) এর জন্য ক্রমবর্ধমান ডিস্ট্রিবিউশন ফাংশন ( cdf
- সম্ভাব্যতা যে এলোমেলোভাবে নমুনা এক্স এর চেয়ে কম বা x এর সমান হবে ):mu
sigma
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
এখান থেকে গৃহীত 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))
অজানা উদাহরণটির ভিত্তিতে, প্রচুর লাইব্রেরিতে প্রয়োগ করা ফাংশন নরমডিজ্টের পাইথনের সমতুল্য হবে:
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
অ্যালেক্সের উত্তর আপনাকে স্ট্যান্ডার্ড সাধারণ বিতরণের জন্য সমাধান দেখায় (মানে = 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 বাস্তবায়ন এখানে ।
উপরে থেকে নেওয়া:
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
এর মতো সহজ:
import math
def my_cdf(x):
return 0.5*(1+math.erf(x/math.sqrt(2)))
আমি এই পৃষ্ঠায় সূত্রটি পেয়েছি https://www.danielsoper.com/statcalc/formulas.aspx?id=55
গুগল যেমন নেটলোগো পিডিএফ অনুসন্ধানের জন্য এই উত্তর দেয় , উপরোক্ত পাইথন কোডটির নেটলোগো সংস্করণটি এখানে
;; সাধারণ বিতরণ संचयी ঘনত্ব ফাংশন প্রতিবেদন করার জন্য নরমীসিডিএফ [এক্স মি সিগমা] 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] শেষ