titanic= sns.load_dataset("titanic")
pd.crosstab(titanic.sex, titanic.survived)
pd.crosstab(titanic.sex, titanic.survived, normalize=True)
# 시각화까지
ct=pd.crosstab(titanic.sex, titanic.survived)
ct.plot.bar(stacked=True) # seaborn lib
from scipy import stats
stats.chi2_contingency(ct) # 2번째 값이 p value
2번째 값이 p값
male= titanic[titanic.sex=="male"]
female= titanic[titanic.sex=="female"]
levene(male.fare,female.fare)
#levene test에서 p값을 보자
ttest_ind(male.fare, female.fare, equal_var=False)
#equl_var가 다르니까 false. 이는 두 샘플의 분산이 같은지 여부
- p값 낮으면
성별에 따른 요금의 차이가 통계적 유의성이 있다. (=통계적으로 유의미한 수준의 차이가 있다)
ttest_rel ( sl.height, sl.height2) #두개에 유의미한 차이가 있는지 보기. 변수 두개를 줘야함
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
model=ols('fare~pclass', titanic).fit()
print (anova_lm(model))
여기서는 p-값(PR(>F))은 0.529369. 0.05 보다 큼으로 유의미한 차이가 없다.
titanic[['age','fare']].corr()
카이가 표준정규분포라고 할 때
카이 스퀘어 값의 크고 작음을 알려주는
분산의 분포
가설의 검증
수치형 변수 종류 (3가지)
범위는 -1에서 1까지
(-1)은 강한 음의 선형 관계를 나타내고, 1은 강한 양의 선형 관계를 나타내고, 0은 선형 관계가 없음
이상값에 민감하며 데이터가 정규 분포를 따른다고 가정한다.
상이한 2개의 통계 데이터( 연도 별 키의 통계, 연도 별 몸무게의 통계) 의 상관관계는 큰 의미가 없다
30개 이상의 관측치(레코드)가 있어야 의미가 있다. t-test에서도 마찬가지..
상관관계 : 2 변수가 같이 증가, 같이 감소 (선형적 상관관계, 직선에 얼마나 몰려있는지)
회귀분석 : 독립변수 -> 종속변수 선형적 상관관계의 정도(기울기)까지 분석
from statsmodels.formula.api import ols, glm
m1 = ols ( 'quality~alcohol', data=wine).fit()
m1.summary()
red_df= pd.read_csv("winequality-red.csv", sep=";")
m1 = ols ( 'quality~alcohol', data=wine[:3000]).fit() #3000개만 써서 모델을 만듬
m1.predict( wine[3000:].alcohol) # 3000개 이후의 데이터를 집어넣어서 예측(predict)
독립변수가 여러개 일때 => 각각에 계수가 붙어
모델 생성 : 모델=ols( '종속변수~독립변수1+독립변수2+ ... ', data=데이터).fit()
각 독립변수의 영향이 출력됨
p < 0.05 작은 경우만 유의성을 가짐
wine.columns = [c.replace(' ', '_') for c in wine.columns]
wineForm = 'quality~fixed_acidity+volatile_acidity+citric_acid+residual_sugar+chlorides+free_sulfur_dioxide+total_sulfur_dioxide+density+pH+sulphates+alcohol'
m3 = ols(wineForm,data=wine[:5000]).fit()
prediction = m3.predict(wine[5000:])