반응형
모평균 구간추정
모평균의 구간추정을 한다.
이때 모 표준편차를 아는 상태(z검정)와 모르는 상태(t검정)로 나누어서 모평균의 구간을 추정한다.
데이터는 아래와 같이 생성하였다.
data = np.random.randint(1,100,size=(100))
모 표준편차를 알 때 모평균 구간 추정(Z검정)
1. 계산식
* 이때 모표준편차의 식은 다음과 같다
2. 코드(직접계산)
import numpy as np
import pandas as pd
from scipy.stats import norm,sem
# 평균, 표준편차, 표본수
sample_mean = np.mean(data)
sample_std = np.std(data)
size = len(data)
# z통계량
z_95_left = norm(0, 1).ppf(0.025) # 누적 분포가 2.5인 x값
z_95_right = norm(0, 1).ppf(0.975) # 누적 분포가 2.5인 x값
L = sample_mean + z_95_left*(sample_std/np.sqrt(size))
R = sample_mean + z_95_right*(sample_std/np.sqrt(size))
print(L,R)
3. stats 모듈사용
from scipy.stats import sem
sample_mean = np.mean(data)
sample_std = np.std(data)
std_err_of_mean = sample_std/np.sqrt(len(data))
# print(std_err_of_mean==sem(data, ddof=0)) #sem이란 함수를 이용하여 계산 가능, ddof=0이면 자유도는 size
norm.interval(0.95, sample_mean, scale=std_err_of_mean) # 신뢰도, 평균, std_error_of_mean
모 표준편차를 모를 때 모평균 구간 추정(t검정)
1. 계산식
* 이때 모표준편차의 식은 다음과 같다
2. 직접계산
from scipy.stats import t
def var(data):
sample_mean = data.mean()
df=len(data)-1
error_sum = 0
for d in data:
error_sum += (d-sample_mean)**2
sample_var = error_sum/df
return sample_var
sample_mean = data.mean()
sample_std = np.sqrt(var(data))
size = len(data)
# standard_error_of_mean = sample_std/np.sqrt(size)
# t통계량
t_95_right = t(df).ppf(0.975)
t_95_left = t(df).ppf(0.025)
L = sample_mean + t_95_left*(sample_std/np.sqrt(size))
R = sample_mean + t_95_right*(sample_std/np.sqrt(size))
print(L,R)
3. 모듈이용
from scipy.stats import t
def var(data):
# 표본 표준편차를 계산한다.
sample_mean = data.mean()
df=len(data)-1
error_sum = 0
for d in data:
error_sum += (d-sample_mean)**2
sample_var = error_sum/df
return sample_var
sample_mean = data.mean()
sample_std = np.sqrt(var(data))
size = len(data)
standard_error_of_mean = sample_std/np.sqrt(size)
# print(standard_error_of_mean==sem(data,ddof=1)) #sem이란 함수를 이용하여 계산 가능, ddof=1이면 자유도는 size-1
L,R = t.interval(0.95, size-1, sample_mean, scale=standard_error_of_mean) # 신뢰도, 자유도, 평균, scale
print(L,R)
반응형