# 데이터마님
# 7회 기출 변형
# 상관계수
df.corr()['Target'].sort_values()[-2]
# 개수세기
value_count()
size()
# 다중선형회귀모델링 sm.OLS(y,X).fit()
import statsmodels.api as sm
X = df.drop('종속변수명', axis=1) # 1. 종속변수 제외한 모든 변수로 하는 경우
X = sm.add_constats(X) # 상수항 추가
X = sm.add_constant(df[['age', 'Cholesterol']]) # 2. 특정 변수만 가지고 하는 경우
y = df['종속변수명']
model = sm.OLS(y,X).fit()
print(model.summary()) # 모델결과 확인
params = model.params['v2'] # v2 칼럼의 회귀 계수
pvalue = model.pvalues().max() # 회귀계수들이 가지는 p값들 중 최대값
pvalue = model.pvalues['변수'] # p-value < 0.05, 특정변수가 선형관계에 있다. 검정가능
odds_ratios = np.exp(model.params['age']) # age칼럼의 오즈비
pred = model.predict([직접 변수에 넣을 상수값 지정하기]) # 모델 예측 model.predict([1,55,72.6])
# test 데이터의 독립변수로 target 예측값
pred = (model.predict(test.drop(columns=['target']))>0.5).astype('int')
# 오류율 = 1-정확도
from sklearn.metrics import accuracy_score
error_rate = 1 - accuracy_store(test['target'].pred)
# 로지스틱 회귀분석 sm.GLM(y,X).fit()
분석 대상들을 각각 어느 집단으로 분류될 수 있는지를 분석할 때 사용(분류)
model = sm.GLM(y,X,family = sm.families.Binomial()).fit()
residual_deviance = model.deviance
# 카이제곱 검정 chi2_contigency(데이터배열)
두 범주형 변수가 서로 독립인지 판단
예. 성별에 따라 흡연 여부 차이 유의미한지. 종교에 따라 취미의 분포 차이 있는지. 야/여당에 따라 시각차이 있는지
from scipy.stats import chi2_contingency
data = np.array([[smoking_male, non_smoking_male], [smoking_female, non_smoking_female]]) # 데이터 배열 생성 (빈도로 변환)
chi2_stat, p_val, dof, expected = chi2_contingency(data)
print('기각', p_val)
crosstab = pd.crosstab(df.학과, df.성별) # 학과와 성별이 관계가 있는지
s,p,_,_ = chi2_contingency(crosstab) # 검정통계량, p_vale
round_s = round(s,3)
print(round_s)
from scipy.stats imoprt chisquare
예. 각 그룹간 비율 2:1:1 맞는지 확인
target = df['groupby'].value_counts().sort_index().to_frame()
target['expected'] = [ target['groupby'].sum()*0.5, target['groupby'].sum()*0.25, target['groupby'].sum()*0.25]
s,p = chisquare(target['groupby'], target['expected'])
# T분포 t.ppf((1+신뢰수준)/2,자유도)
from scipy.stats import t
std = np.std(df.height, ddof=1)
n = len(df.height)
confidence_level = 0.95 # 신뢰수준
ddof = n-1 # 자유도
t_value = round(t.ppf((1+confidence_level) / 2, ddof),4) # 양쪽 꼬리에서의 t값 구하기
print(t_value)
# 95% 신뢰구간
lower = round(mean - t_value * std / np.sqrt(n), 3)
upper = round(mean + t_value * std / np.sqrt(n), 3)
print(lower,upper)
# 단일 표본 T검정
from scipy.stats import ttest_1samp
s,p = ttest_1samp(칼럼명, 30) # 모집단의 평균이 30인지 확인
# 대응 표본 T검정
from scipy.stats import ttest_rel
s,p = ttest_rel(b,a,alternative='greater') # b가 a보다 크다고 할 수 있는지 검정
round_p = round(p,3)
print("대립", round_p)
# 크루스칼-왈리스 검정
from scipy.stats import kruskal
a = df[df.ID == 'A'].value.values
b = df[df.ID == 'B'].value.values
c = df[df.ID == 'C'].value.values
s,p = kruskal(a,b,c)
round_s = round(s,3) # 검정통계량
print(round_s)
round_p = round(p,3) # p_value
print('대립', round_p)
# 정규성 검정 (n>=100 인 경우)
from scipy.stats import norm
z = round((p_hat - p) / np.sqrt(p*(1-p) / n), 5) # 검정통계량
p_value = round(1-norm.cdf(z),3) # p_value
# 사피로 정규성 검정
from scipy.stats import shapiro
a = df[df['group'] == 'A'].rpm
shapiro(a)
from scipy.stats import levene
s, p = levene(a,b)
# 베르누이/이항 분포 검정
from scipy.stats import binom
n = 21 # 총 시도횟수
p = 0.7 # 성공 확률
k = 16 # 성공 횟수
# 21명 중 16명 미만이 치과를 찾았을 확률 = P(x<k) 누적분포함수
prob = binom.cdf(k-1,n,p) # Cumulative distribution function 누적분포함수
# 적어도 19명이 치과를 찾았을 확률 = P(x>=k) = 1 - P(x<k)
prob = 1 - binom.cdf(k-1,n,p)
# Probability mass function 확률밀도함수
prob = binom.pmf(k,n,p)
print(round(prob,3))
# 참고
'Daily > Get certificate' 카테고리의 다른 글
[빅분기] 독학 합격 후기 (0) | 2024.06.24 |
---|---|
[빅분기 실기] 2유형 (0) | 2024.06.14 |
[빅분기 실기] 1유형 (0) | 2024.06.14 |
[OPIc] IH 한번에 따기 (해커스클라라, 대학연합오픽) (0) | 2022.12.07 |
[ADsP] 통계전공자 1주일 독학 합격 후기 (0) | 2020.12.23 |
댓글