[Numpy] 분포함수(distribution)

반응형
    반응형

    Numpy로 랜덤한 값을 기반으로 분포함수를 구현하는 방법입니다. 

    파이썬으로 하기 정말 간단한데 분포가 워낙 많이 있다보니깐 쓰는 함수만 쓰게 되긴 합니다만

    복잡한 모델을 하다보면 평가방식을 달리 하거나 새로운 접근을 위해서 포스팅에 정리합니다.

     

    구현

    맛보기로 정규분포와 푸아송 분포를 구현해보겠습니다. 

    나머지 분포는 밑에 표로 남겨 놓겠습니다. 

    poisson 분포의 람다값은 1로 하겠습니다.

     

    import numpy.random as npr
    
    #샘플 사이즈
    sample_size = 500
    
    #분포
    rd1 = npr.standard_normal(sample_size)
    rd2 = npr.poisson(lam=1.0, size = sample_size)
    
    # 그리기
    from pylab import plt, mpl
    
    plt.style.use('seaborn')
    mpl.rcParams['font.family'] = 'serif'
    %matplotlib inline
    
    fig, (ax1,ax2) = plt.subplots(nrows=2, ncols=1, figsize=(10,8))
    ax1.hist(rd1, bins=25)
    ax1.set_title('standard normal')
    ax2.hist(rd2,bins=25)
    ax2.set_title('Poisson')

     

     

    분포함수 정리

    너무 많아 표로 정리합니다. 

    분포함수에 알맞는 파라미터에 적당한 값을 넣어서 구현하면 됩니다. 

    각 분포함수에 대한 정의나 성질은 추후에 포스팅을 하겠습니다.

    함수 파라미터 출력
    beta a,b[,size] beta distribution over [0,1]
    binomial n,p[,size binomial distribution
    chisquare df[,size] chi-square distribution
    dirichlet alpha[,size] Dirichlet distribution
    exponential [scale,size] Exponential distribution
    f dfnum,dfden[,size] F distribution
    gamma shape[,scale,size] gamma distribution
    gemetric p[,size] geometric distribution
    gumbel [loc, scale, size] Gumbel distribution
    hypergeometric ngood,nbad,nsample[,size] hypergeometric distribution
    laplace [loc,scale,size] Laplace or double exponential distribution
    logistic [loc,scale,size] logisitic distribution
    lognormal [mean,sigma,size] log-normal distribution
    logseries p[,size] logarithmic series distribution
    multinomial n,pvals[,size] multinomial distribution
    multivariate_normal mean, cov[,size] multivariate normal distribution
    negative_binomial n,p[,size] negative binomial distribution
    noncentral_chisquare df,nonc[,size] noncentral chi-square distribution
    noncentral_f dfnum,dfden,nonc[,size] noncentral F distribution
    normal [loc,scale,size] normal(Gaussian) distribution
    pareto a[,size] Pareto II or Lomax distribution with the specified shape
    poisson [lam,size] Poisson distribution
    power a[,size] power distribution with positive exponent a-1 in [0,1]
    rayleigh [scale, size] Rayleigh distribution
    standard_cauchy [size] standard Cauchy distirbution with mode=0
    standard_exponential [size] standard exponential distrtibution
    standard_gamma shape[size] standard gamma distribution
    standard_normal [size] standard normal distirbution(mean=0,stdev=1)
    standard_t df[,size] Student's t distirubtion with df degrees of freedom
    triangular left,mode,right[,size] tirangular distribution over the interval[left, right]
    uniform [low,high,size] uniform distribution
    vomises mu,kappa[,size] von Mises distribution
    wald mean, scale[,size] Wald, or inverse Gaussian distribution
    weibull a[,size] Weibull distribution
    zipf a[,size] Zipf distribution

     

    관련 포스팅

    [Python/Numpy] - ndarray 랜덤한값 생성

     

    참고문헌

    • Python for Finance

     

     

    댓글

    Designed by JB FACTORY

    ....