Python 2022. 8. 24. 09:52

통계분석 기초에 대한 리마인드를 위해, 누구나 파이썬 통계분석 이라는 책을 보고 있는데 유용한 코드가 나와서 기록

포아송 분포는 scipy.stats.poisson으로 호출이 가능하지면, 수식을 보기위해 기록

 

import numpy as np
from scipy import stats

# 기댓값
def E(X, g=lambda x:x):
    x_set, f = X
    return np.sum([g(x_k) * f(x_k) for x_k in x_set])
# 분산
def V(X, g=lambda x:x):
    x_set,f = X
    mean = E(X,g)
    return np.sum([(g(x_k)-mean)**2 * f(x_k) for x_k in x_set])
# 확률변수를 인수로 가지며, 확률변수가 확률의 성질을 만족하는지 확인하고,
# 기댓값과 분산을 계산하여 반환하는 함수
def check_prob(X):
    x_set, f = X
    prob = np.array([f(x_k) for x_k in x_set])
    assert np.all(prob >= 0), 'minus probability'
    prob_sum = np.round(np.sum(prob),6)
    assert prob_sum == 1, f'sum of probability{prob_sum}'
    print(f'expected value {E(X):.4}')
    print(f'variance{V(X):.4}')
    
#---------------------------------------------#

# 포아송 분포
from scipy.special import factorial

def Poi(lam):
    x_set = np.arange(20)
    def f(x):
        if x in x_set:
            return np.power(lam,x) / factorial(x)*np.exp(-lam)
        else:
            return 0
    return x_set, f
lam = 3
X = Poi(lam)
check_prob(X)

 

'Python' 카테고리의 다른 글

[python] string contains  (0) 2023.02.16
[python] list value rank  (0) 2022.09.08
pandas dataframe show max columns  (0) 2022.08.18
dataframe split date  (0) 2022.06.24
dataframe value counts to dataframe  (0) 2022.06.22
posted by 초코렛과자
:
Python 2022. 8. 18. 10:32
import pandas as pd
pd.options.display.max_columns = 300

 

'Python' 카테고리의 다른 글

[python] list value rank  (0) 2022.09.08
[python] 포아송 분포  (0) 2022.08.24
dataframe split date  (0) 2022.06.24
dataframe value counts to dataframe  (0) 2022.06.22
loc을 이용한 data 변경  (0) 2022.06.07
posted by 초코렛과자
: