본문 바로가기
쫌쫌따리 통계+데이터+AI

26회 통계 모음

by stherhj 2023. 3. 10.

[문제1]

철강제품의 불량률을 조사하고자 한다. 이 때, 불량률의 90%, 추정오차한계가 5% 이내가 되기 위하여 적절한 표본의 크기 중 최소값은 얼마인가?

[답1]

모비율 추정을 위해 필요한 표본의 개수

n = p(1-p)*(z/d)^2

p = 0.9, d<=0.05, z에 대한 가정이 필요함(95%의 신뢰수준으로 가정-> z=약1.96)

n >= (0.9*0.1)*(1.96/0.05)^2 (약138.3)

95%의 신뢰수준 아래 최소 139개의 표본이 필요하다.

 

[문제2]

다음은 1월부터 9월까지의 은의 가격이다.

 

 

1. 은의 가격 및 이동평균값 3이 설정된 시계열 그래프를 그려라

2. 1월 대비 9월의 은의 가격은 몇 % 올랐는가? (소수점 두번째 자리에서 반올림)

[답2]

1.

import pandas as pd
import matplotlib.pyplot as plt

data_ma = pd.DataFrame({'Date':['2022-01-01','2022-02-01','2022-03-01','2022-04-01','2022-05-01','2022-06-01','2022-07-01','2022-08-01','2022-09-01'],'Price':[12.14,42.6,34.4,35.29,30.96,57.12,37.28,42.49,31.38]})
data_ma.info()
data_ma['Date'] = pd.to_datetime(data_ma['Date'],format='%Y-%m-%d')
data_ma.set_index('Date',inplace=True)
data_ma
data_ma.info()
data_ma.plot()
ma = data_ma.rolling(3).mean()
plt.plot(data_ma)
plt.plot(ma)
plt.show()

2.

(31.38-12.14)/12.14 = 약 158.48% 증가하였다.

 

[문제3]

다음은 A,B,C 자치구별 W 의원에 대한 찬성, 반대 지지를 나타낸다. 자치구별 지지율이 같은지에 대해서 검정하라.

1. 연구가설과 귀무가설을 설정하라.
2. 검정 후 귀무가설 기각 여부를 제시하라. (유의수준 0.05)

[답3]

1.

H0: 의원에 대한 찬성율은 자치구에 관계없이 동일하다.

H1: 의원에 대한 찬성율은 자치구에 관계없이 동일하지 않다.

2. 

crosstab = pd.DataFrame({'찬성':[176,193,159],'반대':[124,107,141]},index=['A','B','C'])
#교차분석(동질성검정)
from scipy.stats import chi2_contingency
chi, p, df, expect = chi2_contingency(crosstab)
p # 0.019 < 0.05 -> 귀무가설 기각 즉, 찬성율은 자치구 따라 차이가 유의하다.

 

[문제4]

초등학교 남학생 16명과 여학생 9명의 혈압을 측정한 problem4.csv파일을 가지고 남녀학생의 평균 혈압에 차이가 없는지 분석하라. 단, 남학생과 여학생의 혈압 데이터는 정규분포를 따르며 등분산성을 가정한다.

표본의 크기가 작지만 정규분포를 따르므로 독립표본 t test 시행(+등분산성을 가정하였으므로 등분산 가정 t검정)

problem4.csv
0.00MB

1. 연구가설과 귀무가설 설정하라.

2. 검정 후 귀무가설 기각 여부를 제시하라. (95%신뢰수준)

3. 2.에서 구한 검정 통계량 값을 바탕으로 신뢰구간을 구하라. (+신뢰구간이 귀무가설 기각 여부에 어떤 역할을 하는지 설명하시라.)

[답4]

1. 

H0: 학생들의 성별에 따른 평균 혈압은 같다.

H1: 학생들의 성별에 따른 평균 혈압은 다르다.

2.

data = pd.read_csv('./problem4.csv')
#정규성 검정과 등분산성 검정 통과
#i) Python 제공 function으로 풀 때
import scipy.stats as stats
female = data[data['gender']=='female']['pressure']
male = data[data['gender']=='male']['pressure']
stats.ttest_ind(female, male, equal_var=True)
#Ttest_indResult(statistic=-1.529468431300889, pvalue=0.14741253929045572) > 0.05 유의수준보다 크므로 귀무가설 기각 X 평균 혈압은 같다.

#ii) 손으로 푸는 등분산가정 독립t검정
n_f = len(female)
n_m = len(male)
mean_f = np.mean(female)
mean_m = np.mean(male)
std_f = np.std(female)
std_m = np.std(male)
mean_var = (mean_m-mean_f)
S_equal = np.sqrt(((n_m-1)*(std_m**2)+(n_f-1)*(std_f**2))/(n_m+n_f-2))
equal_t = mean_var/(S_equal*np.sqrt(1/n_m+1/n_f))
print((1-stats.t.cdf(equal_t,df=(n_m+n_f-2)))*2)
#pvalue 0.10867530361897404 > 0.05 유의수준 보다 큼

[?] Python 제공 stats.ttest_ind 적용 시와 손으로 공식 적용하여 풀 때 결과값에 차이가 있는 이유

https://stackoverflow.com/questions/66081234/stats-ttest-ind-vs-manual-computation-of-students-independent-t-test-diff

 

stats.ttest_ind() vs. "manual" computation of Student's independent t-test: different results

I am comparing stats.ttest_ind() vs "manual" computation of the same test, and get different results. import numpy as np import pandas as pd import scipy.stats as stats import math stats.

stackoverflow.com

(요약) stats.ttest_ind(equal_var=True)에서 pure 동일성을 가정하였기 때문. 손으로 푸는게 더 정확함.

[참고]

https://it-freelancer.tistory.com/296

 

[Adp 실기 기출 풀이] 26회 - 남학생과 여학생 혈압 차이 검정

지난 5월 21일 25회 ADP 필기를 합격했고, 9월 25일 첫 번째 실기를 보았습니다. 필기 유예 기간 끝날 때까지 도전할 계획이며, 11월 26일 27회 실기를 준비하고 있습니다. 제 기억과 다른 후기에서 확

it-freelancer.tistory.com

3. 

#i) Python package 활용 but package 설치 안되어있어서 확인은 못함
import pingouin as pg
res = pg.ttest(female, male, paired=False)
print(res) 

#ii) 손으로 푸는 신뢰구간 (welch_ttest: 이분산가정 독립t검정)

 

[문제5]

problem7.csv
0.01MB

 

출처: https://www.kaggle.com/code/kukuroo3/adp-26-problem-python/notebook?scriptVersionId=116329085 

 

adp_26_problem_python

Explore and run machine learning code with Kaggle Notebooks | Using data from ADP_26

www.kaggle.com

 

댓글