[Statistics] Useful Tips

2021. 1. 6. 09:22[TIPs]/Useful Tips

[binomical distribution]

# 1 나올 확률이 0.5인 사건을 500번 돌린 후 mean return 

np.random.binomial(n=1, p=0.5, size = 500)


[t-test]

coin1 = np.random.binomial(n=1, p=0.5, size = 500)
coin2 = np.random.binomial(n=1, p = 0.6, size = 1000)

# Two-side test

# one sample t-test
stats.ttest_1samp(coin1,0.5)
# ==> mean == 0.5 vs mean != 0.5

# two sample t-test
stats.ttest_ind(coin1,coin2)
# ==> mean1 == mean2 vs mean1 != mean2

# One-side test

# pvalue < 0.05 ==> greater 또는 less 의 대안가설을 채택한다
stats.ttest_ind(coin1,coin2,greater)
stats.ttest_ind(coin1,coin2,less)


[chisquare-test]

from scipy.stats import chisquare
from scipy.stats. import chi2_contingency
import numpy as np

# one sample chisquare-test
chisquare(1_list,axis=None)
# ==> similar(균등) v.s. not similar(X균등)

# two sample chisquare-test
chi2_contingency(df)
# ==> x축 & y축 연관 없다 v.s. x축 & y축 연관 있다


[anova]

1. Sample의 갯수가 적고 코딩으로 직접 np.array로 만들 수 있다고 판단되는 경우

# A,B,C,D in np.array

F,P = stats.f_oneway(A,B,C,D)
P # pvalue 출력 

2. Sample의 갯수가 많거나 pd.DataFrame 형태로 주어진 경우

# 2. sample의 갯수가 많을 때
# pandas dataframe에서 바로 계산 가능 

# 필요하다면 melt를 시켜줘야함 
# ex) df['group'] 에는 A,B,C,D 라는 categorical data가 들어가야 하고
# df['value'] 에는 그룹별 특정값들이 들어가야 함 

# import
import statsmodels.api as sm
from statsmodels.formula.api import ols

model = ols('value ~ C(group)',data=df).fit()
anova_table = sm.stats.anova_Im(model,typ=2)
anova_table # ==> 출력됨 (PR column의 첫번째 값이 pvalue를 의미한다)


[Confidence Interval]

CI = t.interval(0.95,df,loc=mean,scale = stderr)
# ==> returns lower & upper limit of the confidence interval

# finding tvalue
t.ppf(0.975,dof)
# ==>returns tvalue

# finding sem
stats.sem(data)
# ==> returns sem


[Bayesian Confidence Interval]

mean,var,std = stats.bayes_mvs(data, alpha = .95)
# ==> each returns value, value+interval, value-interval (95% interval)
728x90

'[TIPs] > Useful Tips' 카테고리의 다른 글

[Pandas] Useful Tips  (0) 2021.01.02