स्किपी (पायथन) के साथ सैद्धांतिक लोगों के लिए अनुभवजन्य वितरण फिटिंग?


139

परिचय : मेरे पास 30,000 से अधिक पूर्णांक मानों की एक सूची है, जिसमें 0 से 47 तक समावेशी हैं, उदाहरण के लिए [0,0,0,0,..,1,1,1,1,...,2,2,2,2,...,47,47,47,...]कुछ निरंतर वितरण से नमूना। सूची में मूल्य आवश्यक रूप से क्रम में नहीं हैं, लेकिन इस समस्या के लिए आदेश कोई मायने नहीं रखता है।

समस्या : मेरे वितरण के आधार पर मैं किसी भी मूल्य के लिए पी-मूल्य (अधिक से अधिक मूल्यों को देखने की संभावना) की गणना करना चाहूंगा। उदाहरण के लिए, जैसा कि आप देख सकते हैं कि 0 के लिए पी-मान 1 के करीब होगा और उच्च संख्या के लिए पी-मूल्य 0 के लिए रुझान होगा।

मुझे नहीं पता कि मैं सही हूं, लेकिन संभावनाओं को निर्धारित करने के लिए मुझे लगता है कि मुझे अपने डेटा को सैद्धांतिक वितरण के लिए फिट करने की आवश्यकता है जो मेरे डेटा का वर्णन करने के लिए सबसे उपयुक्त है। मेरा मानना ​​है कि सबसे अच्छे मॉडल को निर्धारित करने के लिए किसी तरह की फिट परीक्षा की जरूरत है।

क्या पायथन ( Scipyया Numpy) में इस तरह के विश्लेषण को लागू करने का एक तरीका है ? क्या आप कोई उदाहरण प्रस्तुत कर सकते हैं?

धन्यवाद!


2
आपके पास केवल अनुभवजन्य मूल्य हैं लेकिन निरंतर वितरण चाहते हैं? क्या मैं इसे सही तरीके से समझता हूं?
माइकल जे। बार्बर

1
यह निरर्थक लगता है। संख्याएँ क्या दर्शाती हैं? सीमित परिशुद्धता के साथ माप?
माइकल जे। Barber

1
माइकल, मैंने समझाया कि संख्या मेरे पिछले प्रश्न में क्या दर्शाती है: stackoverflow.com/questions/6615489/…
s_sherly

6
वह गणना डेटा है। यह एक निरंतर वितरण नहीं है।
माइकल जे। बार्बर

1
इस प्रश्न के स्वीकृत उत्तर की जाँच करें stackoverflow.com/questions/48455018/…
अहमद सुलेमान

जवाबों:


209

वर्ग त्रुटि के योग के साथ वितरण (एसएसई)

यह Saullo के उत्तर के लिए एक अद्यतन और संशोधन है , जो वर्तमान scipy.statsवितरण की पूरी सूची का उपयोग करता है और वितरण के हिस्टोग्राम और डेटा के हिस्टोग्राम के बीच कम से कम SSE के साथ वितरण को लौटाता है ।

उदाहरण फिटिंग

से एल नीनो डेटासेटstatsmodels का उपयोग करते हुए , वितरण फिट होते हैं और त्रुटि निर्धारित की जाती है। कम से कम त्रुटि के साथ वितरण वापस आ गया है।

सभी वितरण

सभी फिटेड वितरण

सर्वश्रेष्ठ फिट वितरण

सर्वश्रेष्ठ फिट वितरण

उदाहरण कोड

%matplotlib inline

import warnings
import numpy as np
import pandas as pd
import scipy.stats as st
import statsmodels as sm
import matplotlib
import matplotlib.pyplot as plt

matplotlib.rcParams['figure.figsize'] = (16.0, 12.0)
matplotlib.style.use('ggplot')

# Create models from data
def best_fit_distribution(data, bins=200, ax=None):
    """Model data by finding best fit distribution to data"""
    # Get histogram of original data
    y, x = np.histogram(data, bins=bins, density=True)
    x = (x + np.roll(x, -1))[:-1] / 2.0

    # Distributions to check
    DISTRIBUTIONS = [        
        st.alpha,st.anglit,st.arcsine,st.beta,st.betaprime,st.bradford,st.burr,st.cauchy,st.chi,st.chi2,st.cosine,
        st.dgamma,st.dweibull,st.erlang,st.expon,st.exponnorm,st.exponweib,st.exponpow,st.f,st.fatiguelife,st.fisk,
        st.foldcauchy,st.foldnorm,st.frechet_r,st.frechet_l,st.genlogistic,st.genpareto,st.gennorm,st.genexpon,
        st.genextreme,st.gausshyper,st.gamma,st.gengamma,st.genhalflogistic,st.gilbrat,st.gompertz,st.gumbel_r,
        st.gumbel_l,st.halfcauchy,st.halflogistic,st.halfnorm,st.halfgennorm,st.hypsecant,st.invgamma,st.invgauss,
        st.invweibull,st.johnsonsb,st.johnsonsu,st.ksone,st.kstwobign,st.laplace,st.levy,st.levy_l,st.levy_stable,
        st.logistic,st.loggamma,st.loglaplace,st.lognorm,st.lomax,st.maxwell,st.mielke,st.nakagami,st.ncx2,st.ncf,
        st.nct,st.norm,st.pareto,st.pearson3,st.powerlaw,st.powerlognorm,st.powernorm,st.rdist,st.reciprocal,
        st.rayleigh,st.rice,st.recipinvgauss,st.semicircular,st.t,st.triang,st.truncexpon,st.truncnorm,st.tukeylambda,
        st.uniform,st.vonmises,st.vonmises_line,st.wald,st.weibull_min,st.weibull_max,st.wrapcauchy
    ]

    # Best holders
    best_distribution = st.norm
    best_params = (0.0, 1.0)
    best_sse = np.inf

    # Estimate distribution parameters from data
    for distribution in DISTRIBUTIONS:

        # Try to fit the distribution
        try:
            # Ignore warnings from data that can't be fit
            with warnings.catch_warnings():
                warnings.filterwarnings('ignore')

                # fit dist to data
                params = distribution.fit(data)

                # Separate parts of parameters
                arg = params[:-2]
                loc = params[-2]
                scale = params[-1]

                # Calculate fitted PDF and error with fit in distribution
                pdf = distribution.pdf(x, loc=loc, scale=scale, *arg)
                sse = np.sum(np.power(y - pdf, 2.0))

                # if axis pass in add to plot
                try:
                    if ax:
                        pd.Series(pdf, x).plot(ax=ax)
                    end
                except Exception:
                    pass

                # identify if this distribution is better
                if best_sse > sse > 0:
                    best_distribution = distribution
                    best_params = params
                    best_sse = sse

        except Exception:
            pass

    return (best_distribution.name, best_params)

def make_pdf(dist, params, size=10000):
    """Generate distributions's Probability Distribution Function """

    # Separate parts of parameters
    arg = params[:-2]
    loc = params[-2]
    scale = params[-1]

    # Get sane start and end points of distribution
    start = dist.ppf(0.01, *arg, loc=loc, scale=scale) if arg else dist.ppf(0.01, loc=loc, scale=scale)
    end = dist.ppf(0.99, *arg, loc=loc, scale=scale) if arg else dist.ppf(0.99, loc=loc, scale=scale)

    # Build PDF and turn into pandas Series
    x = np.linspace(start, end, size)
    y = dist.pdf(x, loc=loc, scale=scale, *arg)
    pdf = pd.Series(y, x)

    return pdf

# Load data from statsmodels datasets
data = pd.Series(sm.datasets.elnino.load_pandas().data.set_index('YEAR').values.ravel())

# Plot for comparison
plt.figure(figsize=(12,8))
ax = data.plot(kind='hist', bins=50, normed=True, alpha=0.5, color=plt.rcParams['axes.color_cycle'][1])
# Save plot limits
dataYLim = ax.get_ylim()

# Find best fit distribution
best_fit_name, best_fit_params = best_fit_distribution(data, 200, ax)
best_dist = getattr(st, best_fit_name)

# Update plots
ax.set_ylim(dataYLim)
ax.set_title(u'El Niño sea temp.\n All Fitted Distributions')
ax.set_xlabel(u'Temp (°C)')
ax.set_ylabel('Frequency')

# Make PDF with best params 
pdf = make_pdf(best_dist, best_fit_params)

# Display
plt.figure(figsize=(12,8))
ax = pdf.plot(lw=2, label='PDF', legend=True)
data.plot(kind='hist', bins=50, normed=True, alpha=0.5, label='Data', legend=True, ax=ax)

param_names = (best_dist.shapes + ', loc, scale').split(', ') if best_dist.shapes else ['loc', 'scale']
param_str = ', '.join(['{}={:0.2f}'.format(k,v) for k,v in zip(param_names, best_fit_params)])
dist_str = '{}({})'.format(best_fit_name, param_str)

ax.set_title(u'El Niño sea temp. with best fit distribution \n' + dist_str)
ax.set_xlabel(u'Temp. (°C)')
ax.set_ylabel('Frequency')

2
बहुत बढ़िया। उपयोग करने पर विचार density=Trueकरने के बजाय normed=Trueमें np.histogram()। ^^
पीक

1
@tmthydvnprt शायद आप .plot()भविष्य के भ्रम से बचने के तरीकों में बदलाव को पूर्ववत कर सकते हैं । ^ ^
पेक

10
वितरण नाम पाने के लिए from scipy.stats._continuous_distns import _distn_names:। फिर आप _distn_names` में getattr(scipy.stats, distname)प्रत्येक के लिए कुछ का उपयोग कर सकते हैं distname। उपयोगी क्योंकि वितरण अलग SciPy संस्करणों के साथ अद्यतन किए जाते हैं।
ब्रैड सोलोमन

1
क्या आप बता सकते हैं कि यह कोड केवल निरंतर वितरण के लिए सबसे उपयुक्त क्यों है, और असतत या बहुभिन्नरूपी वितरण की जांच नहीं कर सकता है। धन्यवाद।
एडम श्रोएडर

6
बहुत ही शांत। मुझे रंग पैरामीटर को अपडेट करना था -ax = data.plot(kind='hist', bins=50, normed=True, alpha=0.5, color=list(matplotlib.rcParams['axes.prop_cycle'])[1]['color'])
बेसवेव्स

147

हैं SciPy 0.12.0 में 82 कार्यान्वित वितरण कार्यों । आप परीक्षण कर सकते हैं कि उनमें से कुछ अपने fit()तरीके का उपयोग करके आपके डेटा पर कैसे फिट होते हैं । अधिक जानकारी के लिए नीचे दिए गए कोड की जाँच करें:

यहां छवि विवरण दर्ज करें

import matplotlib.pyplot as plt
import scipy
import scipy.stats
size = 30000
x = scipy.arange(size)
y = scipy.int_(scipy.round_(scipy.stats.vonmises.rvs(5,size=size)*47))
h = plt.hist(y, bins=range(48))

dist_names = ['gamma', 'beta', 'rayleigh', 'norm', 'pareto']

for dist_name in dist_names:
    dist = getattr(scipy.stats, dist_name)
    param = dist.fit(y)
    pdf_fitted = dist.pdf(x, *param[:-2], loc=param[-2], scale=param[-1]) * size
    plt.plot(pdf_fitted, label=dist_name)
    plt.xlim(0,47)
plt.legend(loc='upper right')
plt.show()

संदर्भ:

- फिटिंग वितरण, फिट की अच्छाई, पी-मूल्य। क्या स्किप (पायथन) के साथ ऐसा करना संभव है?

- सिप्पी के साथ वितरण फिटिंग

और यहां एक सूची दी गई है जो सभी वितरण कार्यों के नाम स्कैपी 0.12.0 (VI) में उपलब्ध है:

dist_names = [ 'alpha', 'anglit', 'arcsine', 'beta', 'betaprime', 'bradford', 'burr', 'cauchy', 'chi', 'chi2', 'cosine', 'dgamma', 'dweibull', 'erlang', 'expon', 'exponweib', 'exponpow', 'f', 'fatiguelife', 'fisk', 'foldcauchy', 'foldnorm', 'frechet_r', 'frechet_l', 'genlogistic', 'genpareto', 'genexpon', 'genextreme', 'gausshyper', 'gamma', 'gengamma', 'genhalflogistic', 'gilbrat', 'gompertz', 'gumbel_r', 'gumbel_l', 'halfcauchy', 'halflogistic', 'halfnorm', 'hypsecant', 'invgamma', 'invgauss', 'invweibull', 'johnsonsb', 'johnsonsu', 'ksone', 'kstwobign', 'laplace', 'logistic', 'loggamma', 'loglaplace', 'lognorm', 'lomax', 'maxwell', 'mielke', 'nakagami', 'ncx2', 'ncf', 'nct', 'norm', 'pareto', 'pearson3', 'powerlaw', 'powerlognorm', 'powernorm', 'rdist', 'reciprocal', 'rayleigh', 'rice', 'recipinvgauss', 'semicircular', 't', 'triang', 'truncexpon', 'truncnorm', 'tukeylambda', 'uniform', 'vonmises', 'wald', 'weibull_min', 'weibull_max', 'wrapcauchy'] 

7
क्या होगा अगर normed = Trueहिस्टोग्राम की साजिश रचने में? आप गुणा नहीं होगा pdf_fittedद्वारा size, है ना?
अलोहा

3
इस उत्तर को देखें कि क्या आप यह देखना चाहते हैं कि सभी वितरण क्या दिखते हैं या इस विचार के लिए कि उन सभी को कैसे एक्सेस करना है।
tmthydvnprt

@SaloloCastro डिस्टर्म के आउटपुट में पैराम में 3 मानों का क्या प्रतिनिधित्व करता है ।fit
shaifali Gupta

2
वितरण नाम पाने के लिए from scipy.stats._continuous_distns import _distn_names:। फिर आप _distn_names` में getattr(scipy.stats, distname)प्रत्येक के लिए कुछ का उपयोग कर सकते हैं distname। उपयोगी क्योंकि वितरण अलग SciPy संस्करणों के साथ अद्यतन किए जाते हैं।
ब्रैड सोलोमन

1
मैंने कोड से रंग = 'w' हटा दिया अन्यथा हिस्टोग्राम प्रदर्शित नहीं होता है।
एरन

12

fit()@Saullo कास्त्रो द्वारा उल्लिखित विधि अधिकतम संभावना अनुमान (MLE) प्रदान करता है। आपके डेटा के लिए सबसे अच्छा वितरण वह है जो आपको उच्चतम देता है जिसे कई अलग-अलग तरीकों से निर्धारित किया जा सकता है: जैसे

1, वह है जो आपको उच्चतम संभावना देता है।

2, वह जो आपको सबसे छोटा एआईसी, बीआईसी या बीआईसीसी मान देता है (देखें विकी: http://en.wikipedia.org/wiki/Akaike_information_criterion , मूल रूप से मापदंडों की संख्या के लिए समायोजित लॉग लॉग के रूप में देखा जा सकता है, अधिक वितरण के साथ वितरण के रूप में) मापदंडों के बेहतर फिट होने की उम्मीद है)

3, एक जो बेयसियन के बाद की संभावना को अधिकतम करता है। (देखें विकी: http://en.wikipedia.org/wiki/Posterior_probability )

बेशक, यदि आपके पास पहले से ही एक वितरण है जो आपको डेटा का वर्णन करना चाहिए (आपके विशेष क्षेत्र में सिद्धांतों के आधार पर) और उस पर छड़ी करना चाहते हैं, तो आप सबसे अच्छा फिट वितरण की पहचान करने के चरण को छोड़ देंगे।

scipyलॉग लाइबिलिटी (यद्यपि MLE पद्धति प्रदान की गई है) की गणना करने के लिए एक फ़ंक्शन के साथ नहीं आता है, लेकिन हार्ड कोड एक आसान है: देखें कि क्या एक उपयोगकर्ता की तुलना में `scipy.stat.distributions` धीमे की बिल्ड-इन प्रायिकता घनत्व फ़ंक्शन है?


1
मैं इस पद्धति को ऐसी स्थिति में कैसे लागू करूंगा, जहां डेटा पहले से ही बंद कर दिया गया है - जो डेटा से हिस्टोग्राम उत्पन्न करने के बजाय पहले से ही हिस्टोग्राम है।
पीट

@ गेटे, जो इंटरवल-सेंसर किए गए डेटा की स्थिति होगी, इसके लिए अधिकतम संभावना विधि है, लेकिन वर्तमान में इसे लागू नहीं किया गया हैscipy
सीटी झू

साक्ष्य मत भूलना
jtlz2

5

AFAICU, आपका वितरण असतत है (और कुछ नहीं बल्कि असतत)। इसलिए बस विभिन्न मूल्यों की आवृत्तियों को गिनना और उन्हें सामान्य करना आपके उद्देश्यों के लिए पर्याप्त होना चाहिए। इसलिए, इसे प्रदर्शित करने के लिए एक उदाहरण:

In []: values= [0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4]
In []: counts= asarray(bincount(values), dtype= float)
In []: cdf= counts.cumsum()/ counts.sum()

इस प्रकार, की तुलना में अधिक मूल्यों को देखने की संभावना 1बस (के अनुसार है पूरक संचयी बंटन फ़ंक्शन (ccdf) :

In []: 1- cdf[1]
Out[]: 0.40000000000000002

कृपया ध्यान दें कि ccdf उत्तरजीविता फ़ंक्शन (sf) से निकटता से संबंधित है , लेकिन यह असतत वितरण के साथ भी परिभाषित है, जबकि sf को केवल सन्निहित वितरण के लिए परिभाषित किया गया है।


2

यह मेरे लिए संभावना घनत्व अनुमान समस्या की तरह लगता है।

from scipy.stats import gaussian_kde
occurences = [0,0,0,0,..,1,1,1,1,...,2,2,2,2,...,47]
values = range(0,48)
kde = gaussian_kde(map(float, occurences))
p = kde(values)
p = p/sum(p)
print "P(x>=1) = %f" % sum(p[1:])

इसके अलावा http://jpktd.blogspot.com/2009/03/using-gaussian-kernel-density.html देखें ।


1
भविष्य के पाठकों के लिए: यह समाधान (या कम से कम विचार) ओपी प्रश्नों ('पी-मूल्य क्या है') का सबसे सरल उत्तर प्रदान करता है - यह जानना दिलचस्प होगा कि इसमें शामिल कुछ और तरीकों की तुलना कैसे की जाती है एक ज्ञात वितरण।
ग्रेग

क्या गॉसियन कर्नेल प्रतिगमन सभी वितरणों के लिए काम करते हैं?

@ मिकी एक सामान्य नियम के रूप में, सभी वितरण के लिए कोई प्रतिगमन काम नहीं करता है। हालांकि वे बुरे नहीं हैं
TheEnvironmentalist

2

distfitपुस्तकालय का प्रयास करें ।

पाइप स्थापित डिस्टफिट

# Create 1000 random integers, value between [0-50]
X = np.random.randint(0, 50,1000)

# Retrieve P-value for y
y = [0,10,45,55,100]

# From the distfit library import the class distfit
from distfit import distfit

# Initialize.
# Set any properties here, such as alpha.
# The smoothing can be of use when working with integers. Otherwise your histogram
# may be jumping up-and-down, and getting the correct fit may be harder.
dist = distfit(alpha=0.05, smooth=10)

# Search for best theoretical fit on your empirical data
dist.fit_transform(X)

> [distfit] >fit..
> [distfit] >transform..
> [distfit] >[norm      ] [RSS: 0.0037894] [loc=23.535 scale=14.450] 
> [distfit] >[expon     ] [RSS: 0.0055534] [loc=0.000 scale=23.535] 
> [distfit] >[pareto    ] [RSS: 0.0056828] [loc=-384473077.778 scale=384473077.778] 
> [distfit] >[dweibull  ] [RSS: 0.0038202] [loc=24.535 scale=13.936] 
> [distfit] >[t         ] [RSS: 0.0037896] [loc=23.535 scale=14.450] 
> [distfit] >[genextreme] [RSS: 0.0036185] [loc=18.890 scale=14.506] 
> [distfit] >[gamma     ] [RSS: 0.0037600] [loc=-175.505 scale=1.044] 
> [distfit] >[lognorm   ] [RSS: 0.0642364] [loc=-0.000 scale=1.802] 
> [distfit] >[beta      ] [RSS: 0.0021885] [loc=-3.981 scale=52.981] 
> [distfit] >[uniform   ] [RSS: 0.0012349] [loc=0.000 scale=49.000] 

# Best fitted model
best_distr = dist.model
print(best_distr)

# Uniform shows best fit, with 95% CII (confidence intervals), and all other parameters
> {'distr': <scipy.stats._continuous_distns.uniform_gen at 0x16de3a53160>,
>  'params': (0.0, 49.0),
>  'name': 'uniform',
>  'RSS': 0.0012349021241149533,
>  'loc': 0.0,
>  'scale': 49.0,
>  'arg': (),
>  'CII_min_alpha': 2.45,
>  'CII_max_alpha': 46.55}

# Ranking distributions
dist.summary

# Plot the summary of fitted distributions
dist.plot_summary()

यहां छवि विवरण दर्ज करें

# Make prediction on new datapoints based on the fit
dist.predict(y)

# Retrieve your pvalues with 
dist.y_pred
# array(['down', 'none', 'none', 'up', 'up'], dtype='<U4')
dist.y_proba
array([0.02040816, 0.02040816, 0.02040816, 0.        , 0.        ])

# Or in one dataframe
dist.df

# The plot function will now also include the predictions of y
dist.plot()

सर्वोत्तम योग्य

ध्यान दें कि इस मामले में, समान वितरण के कारण सभी बिंदु महत्वपूर्ण होंगे। यदि आवश्यक हो तो आप dist.y_pred के साथ फ़िल्टर कर सकते हैं।


1

OpenTURNS के साथ , मैं BIC मानदंड का उपयोग करके सर्वश्रेष्ठ वितरण का चयन करूंगा जो इस तरह के डेटा को फिट करता है। ऐसा इसलिए है क्योंकि यह मानदंड उन वितरणों को बहुत अधिक लाभ नहीं देता है जिनमें अधिक पैरामीटर हैं। दरअसल, यदि किसी वितरण में अधिक पैरामीटर हैं, तो फिट किए गए वितरण को डेटा के करीब होना आसान है। इसके अलावा, कोलमोगोरोव-स्मिरनोव इस मामले में समझ में नहीं आ सकता है, क्योंकि मापा मूल्यों में एक छोटी सी त्रुटि का पी-मूल्य पर भारी प्रभाव पड़ेगा।

इस प्रक्रिया को समझने के लिए, मैं एल-नीनो डेटा लोड करता हूं, जिसमें 1950 से 2010 तक 732 मासिक तापमान माप शामिल हैं:

import statsmodels.api as sm
dta = sm.datasets.elnino.load_pandas().data
dta['YEAR'] = dta.YEAR.astype(int).astype(str)
dta = dta.set_index('YEAR').T.unstack()
data = dta.values

GetContinuousUniVariateFactoriesस्थैतिक विधि के साथ वितरण के 30 निर्मित अंतर्निहित कारखानों को प्राप्त करना आसान है । एक बार करने के बाद, BestModelBICस्थैतिक विधि सबसे अच्छा मॉडल और संबंधित बीआईसी स्कोर लौटाती है।

sample = ot.Sample(data, 1)
tested_factories = ot.DistributionFactory.GetContinuousUniVariateFactories()
best_model, best_bic = ot.FittingTest.BestModelBIC(sample,
                                                   tested_factories)
print("Best=",best_model)

जो प्रिंट करता है:

Best= Beta(alpha = 1.64258, beta = 2.4348, a = 18.936, b = 29.254)

हिस्टोग्राम से फिट की तुलना करने के लिए, मैं drawPDFसबसे अच्छे वितरण के तरीकों का उपयोग करता हूं ।

import openturns.viewer as otv
graph = ot.HistogramFactory().build(sample).drawPDF()
bestPDF = best_model.drawPDF()
bestPDF.setColors(["blue"])
graph.add(bestPDF)
graph.setTitle("Best BIC fit")
name = best_model.getImplementation().getClassName()
graph.setLegends(["Histogram",name])
graph.setXTitle("Temperature (°C)")
otv.View(graph)

यह उत्पादन करता है:

बीटा अल-नीनो तापमान के अनुकूल है

इस विषय पर अधिक विवरण BestModelBIC doc में प्रस्तुत किए गए हैं । यह संभव है कि साइपीडिस्टिवेशन में चीप डिस्ट्रीब्यूशन को शामिल किया जाए या यहां तक ​​कि कैओसपी डिस्ट्रिब्यूशन के साथ कैओसपी डिस्ट्रीब्यूशन के साथ । लेकिन मुझे लगता है कि वर्तमान स्क्रिप्ट सबसे व्यावहारिक उद्देश्यों को पूरा करती है।


2
आपको शायद ब्याज घोषित करना चाहिए?
jtlz2

0

मुझे माफ़ कर दें अगर मुझे आपकी ज़रूरत समझ में नहीं आती है, लेकिन एक शब्दकोश में आपके डेटा को संग्रहीत करने के बारे में क्या है जहाँ चाबियाँ 0 और 47 के बीच की संख्या होंगी और आपकी मूल सूची में उनकी संबंधित कुंजियों के होने की संख्या को मान देती हैं?
इस प्रकार आपकी संभावना p (x) 30000 से विभाजित x से अधिक की के लिए सभी मानों का योग होगा।


इस स्थिति में p (x) 47 से अधिक के किसी भी मूल्य के लिए समान (बराबर 0) होगा। मुझे निरंतर संभाव्यता वितरण की आवश्यकता है।
s_sherly

2
@ s_sherly - यह शायद एक अच्छी बात होगी यदि आप अपने प्रश्न को बेहतर ढंग से संपादित और स्पष्ट कर सकते हैं, जैसा कि वास्तव में "अधिक मूल्यों को देखने की संभावना" - जैसा कि आप इसे डालते हैं - उन मूल्यों के लिए आईएस शून्य है जो पूल में उच्चतम मूल्य से ऊपर हैं। ।
मैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.