CLT, CI

seongyong·2021년 3월 15일
0

통계

목록 보기
3/4

학습내용

Encoding

문자집합을 컴퓨터에 저장하기 위해 Byte형태로 표현한 방식. ASCII는 한국어, 중국어 등을 표현을 못함. 그래서 모든 언어를 표현할 수 있는 유니코드가 나오게 됨. 유니코드를 표현할 수 있는 UTF-8이 가장 많이 사용됨.

CP949 : 영문 MS Window 기본인코딩

특정 분포 생성

np.random.normal(mean,sd,size)
np.random.poisson(lambda, size)

np.random을 통해 특정 분포 생성 가능

CI

from scipy import stats

stats.normal.interval(.95, loc = mean,scale = s.e) #정규분포의 CI
stats.t.interval(.95, loc = mean,scale = s.e) t분포의 CI

#standard error는 표본의 sd에서 sqrt(n)을 나누어 계산

CI 그래프 표현

1.matplotlib

import matplotlib.pyplot as plt # yerr과 capsize를 이용하면 신뢰구간 표현가능

plt.bar(x = 's1', height = s1_mean, yerr = CI1[1]-s1_mean, capsize = 10)
plt.bar(x = 's2', height = s2_mean, yerr = CI2[1]-s2_mean, capsize = 10)
plt.axhline(pop_mean, linestyle = '--', color = '#4000c7')
plt.axhline(s1_mean, color = 'black', xmin = 0.15, xmax = 0.35)
plt.axhline(s2_mean, color = 'black', xmin = 0.65, xmax = 0.85)
#axvline은 수직선을 그려줌

2.seaborn 이용

import seaborn as sns

sea1 = s1[['오존(ppm)']]
sea1['sample'] = 's1'

sea2 = s2[['오존(ppm)']]
sea2['sample'] = 's2'

sea = pd.concat([sea1,sea2])

})

sns.barplot(
    x = 'sample',
    y = '오존(ppm)',
    data = sea,
    hue = 'sample',
    ci = 95,		#신뢰구간 표시
    capsize = .1 		#capsize 조절
)

plt.axhline(pop_mean, linestyle = '--', color = '#4000c7')

plt.legend(loc='upper right')
plt.show()

seaborn은 확실히 tidy table형식에서 잘 작동하였음

Dataframe Sampling

  1. index를 통해 임의 추출하기(np.random 이용)
import numpy

index_all = np.arange(start=0, stop = len(df), step=1)

np.random.seed()

s_index = np.random.choice(index_all, size)

s = df[df.index.isin(list(s_index))]
  1. 데이터프레임에서 바로 샘플링
df.sample(n=500, random_state = 1)
df.sample(frac = 0.2, random_state = 1)
df.sample(n=500, axis = 1, random_state = 1) #열 추출

같은 seed라도 두 방법의 결과가 다른데 아마 numpy와 pandas에서의 난수 생성 방법이 달라서 그런 것 아닐까...

CLT 실습


np.random.seed(100)

poi = np.random.poisson(5, 1000) 
stats.normaltest(poi).pvalue
# 정규분포가 아님 p-value < 0.05


#샘플링 후 평균 계산

poi_mean = []

for i in range(0,1000):
    poi_100 = np.random.choice(poi,100)
    poi_mean.append(np.mean(poi_100))


stats.normaltest(poi_mean).pvalue
#normaltest의 p-value가 0.05이상이므로 정규성을 만족한다고 볼 수 있음.

plt.hist(poi_mean, color = 'g')
plt.grid()
plt.title('포아송 분포의 평균들')
plt.show()

추가내용

np.std(sample, ddof = ) #샘플의 sd 계산가능
plt.bar(x=['s1','s2'], y=[s1['오존(ppm)'].mean(),s2['오존(ppm)'].mean()],color=['b','r'])
sns.barplot(x = x, y = y)` #list로써 x, y를 지정해줄 수 있음

0개의 댓글