본문 바로가기
통계, EDA, 선형대수/statistics

N122 T-test++(카이제곱)

by kiimy 2021. 5. 15.
728x90
728x90
col = ['', '' ,'']

row = ['', '', '']

df.columns = col

df.index.name = None ==>??

df = df.reindex(index = row )

 

 

random.binominal(n=, p=, size=) 이항분포// size가 시행횟수

from scipy.stats import binom_test

binom_test(564, n=, p=) // n이 시행힛수

이항 검정은 범주가 2개로 자료에만 사용할 수 있다. 만약 범주가 3개 이상인 경우에는 카이제곱 검정을 사용해야 한다. 행과 열을 조합해서 발생할 수 있는 경우의 수를 행열로 만들어놓고 활용하면 편하다.



from google.colab import files

df_before = files.upload() ==> 데이터 불러올수있음 or 코랩 드라이버에 저장해서 불러올 수 있음

df_before = pd.read_csv('규모별_미분양현황_20210514145145.csv', encoding= "cp949")

*외부데이터 가져올때 encoding 확인

*중복값 삭제 drop_duplicates() 위에 있는 것들만 살림 //

==> groupby 쓰면 특정 고유값 합칠 수 있음

t-value 와 f-value 는 클 수록 우연히 발생하지 않을 확률(f-value)

= 같지 않을 확률( 다를 확률이 있다)즉, p-value < 0.05 가됨

 

T-test 성립조건

 

*T-test (연속변수) <==> 카이제곱 (범주형)

1. 평균치를 사용하느냐/ 통계치를 사용하느냐

2. 인과관계 / 상관관계

3. 비모수적 ( 평균이나 분산을 모를때 == 정규분포를 따르지 않을때)

- 모집단의 분산/표준편차 알지 못 할때 사용(= 평균값을 사용하지)

*두 변수의 상관관계 = (힘과 방향) = 상관계수

 

-1 0 1  ==> 1과 -1쪽으로 가면 힘이 세다

-1 0 1 ==> 0으로 가면 힘이 약하다 / 0 = 의미가 없다

 

세다 : 데이터가 가깝게 모여있다

약하다 : 데이터가 퍼져있다.

 

*비모수적 방법 Non parametric methods (그 중 Chisquare  카이 제곱)

from scipy.stats import normaltest
from scipy.stats import chisquare == one sample
from scipy.stats import chi2_contingency == two sample
from scipy.stats import chi2_contingency

print(chi2_contingency(obs2, correction = False))  # True와 False를 비교해줘야함

print(chi2_contingency(obs2, correction = True)) # 두 경우 모두 pvalue : 0.6269 연관이 없다.

 

*통계치를 pvalue로 바꾸는 법 ( = stats.chi2.cdf) ==> pvalue만 나옴

= stats.chi2.pdf(통계치, df)

= stats.chi2.cdf(통계치, 자유도==> n -1)

 

* pdf, cdf, ppf

어느 회사의 연봉이 평균 1000이고 표준편차가 60인 정규분포를 따른다. 그러면, 연봉이 950 이하일 확률은 어느정도인가?

pdf= probability density function 확률밀도함수 = 0~1

cdf= cumulative distribution function누적 분포 함수 = 면적을 구하는것

ppf= percent Point Function 확률

 

rv = stats.norm(1000, 60)
xx = np.linspace(700,1300,1000)
pdf = rv.pdf(xx)
plt.plot(xx, pdf)
plt.show()

## 950이하일 확률
rv.cdf(950)
# 0.20232838096364308 *100 = 20%

## 950이상일 확률
1- rv.cdf(950)

## 950에서 1100사이
rv.cdf(1100) - rv.cdf(950)

 

** 상위 5% 연봉 확인하기위해서

cdf의 역함수 개념인 ppf

rv.ppf(0.95)

# 1098.6912176170883  ==> 1098이 상위 5%

[출처] [통계] 파이썬에서의 정규분포와 누적확률 및 분위수 [pdf,cdf,ppf]|작성자 삐빅

 

*Chisquare  카이 제곱( = 인과관계가 아님!! / 상관관계를 보여줌)

= 관찰된 빈도가 기대빈도와 의미있게 같은지 다른지

-one sample = 변수하나를 가지고 변수 내의 그룹간의 비율이 같은지 다른지

-two sample = 두 변수 사이의 연관성이 있는지 없는지 여기서

!!귀무가설과 대안가설이 다름!!!

귀무가설 =  연관성이 없다 // == > 독립적이다

대안 가설 =  연관성이 있다 == > 독립적이지 않다

*Numerical -> Categorial

1. Type casting

numerical 이지만, continuous하지 않아 바로 category로 사용 할 수 있는 경우.

ex) 1, 2, 3 -> 1, 2, 3

 

2. Binning

numerical 이지만, continuous 해서 구간별로 나누어 사용 할 수 있는 경우.

ex) 1.4, 2, 3.1, 2.8, 1.1, 2.5 -> A : 1 ~ 2, B : 2 ~ 3, C : 3 ~ 4

 

*tpye of Error

1종 오류 = 실제로 하지 않았는데 했대( = 유의 한대, 유의 하지않다) // 술 안 마셧는데 마셧대 

2종 오류 = 실제로 했는데 안 했대( = 유의하지 않은데, 유의하다) // 술 마셧는데 안마셧대 매우 위험

 

*카이제곱 계산법( = 범주 간의 확률차이가 얼마나 큰지 알수 없어서 ANOVA보다 답답한 느낌이 있음)

== > 그래서 신뢰구간을 이용사용(confidence interval) -N123

 

2- sample chisquare test의 자유도 (Degree of Freedom) 는 1-sample과는 조금 다릅니다.

1-sample (적합도 검정), DF = # categories-1

2-sample (독립성 검정), DF = (#행 - 1)*(#열 - 1)

DF: (2-1)*(2-1) = 1

728x90

댓글