주말 제외 프로젝트 6일차, 통계 분석 정리 및 중간 점검 피드백을 받았다.
잘못된 방향 (내 생각)
데이터에서 고유값을 가지는 피쳐는 'id'가 유일했다(중복없이).
그러나, 단지 분석에 필요없을 것이라는 판단(가격과 관련 X)으로 drop하고 분석을 진행했다. 그렇게 EDA까지 진행이 된 시점에서 생각보다 가격에 영향을 미치는 요인을 많이 찾는과정이 어려웠다(drop한 피쳐가 많아서).
이 부분에서 가장 결정적인 실수였던 것은, (만약 다시 살리고 싶은 컬럼이 있다면 불러와서 merge로 병합하면 되는건데) 'id'를 제외시켰기 때문에 매칭해서 결합시킬 수가 없게 된 것이다.
생각대로 진행하려면 다시 원본파일을 불러와 진행하는 수 밖에 없는 것... 돌이켜봤을 때, 이 부분이 가장 아쉬웠다.
문뜩, 생각
review 관련 컬럼을 살펴보고 통계와 연계하고 싶다는 생각이 들어서 주말에 잠깐 시간을 내어 데이터를 다시 살펴보았었다(물론 원본파일을 다시 불러와서 새파일에서 진행했다). review와 관련된 피쳐는 생각보다 price와 관련이 없는 것으로 확인(.corr())을 했고, df.columns를 보다가 bathrooms(욕실 수)가 눈에 들어와서, 또 관련된 bathrooms_text 도 확인하게 되었는데...
bathrooms_text 값들을 분류하여 private / shared / none 으로 분류해 볼 수 있겠다는 생각이 들었다.
하지만 중반을 넘어선 시점이라서 추가하지는 못할 것 같다.
[1020 중간 FeedBack]
- 큰 프로젝트 진행할 때에는 전처리 EDA과정에서 중앙값, 평균값, 최빈값을 사용하는 것에 민감해야 함!
그럼에도 중앙값이 왜 가장 적합했는지 명확한 근거가 필요함!
- price 를 왜 로그변환 했는지에 대해서 이유도 언급해주면 좋음. 파일에는 주석으로, 발표자료에는 언급으로!
- price 뿐만 아니라, 다른 부분에 있어서도 적용해보면 좋겠다는 의견
- 납득을 할 수 있을만큼, 확실한 근거를 댈 수 있을만큼 확인해보면 좋을 것 같다.
- 주요 효과크기 비교?
η²(에타제곱),
ω²(오메가제곱), 아노바에서 사용?
Hedges’ g : cohen's d 랑 비슷, 데이터 크기가 작을 때
- 통계 검정을 해봤다면, 다음으로 통계 시각화 작업.
결과를 만들고 시각화를 한다음에 통계적으로 유의하고 효과크기로 의미있는 변수를 선택을 할 수 있어야 됨.
통계검증 시각화.
회귀. p밸류, 알스퀘어, 선형회귀
비즈니스적으로 어떻게 적용할 수 있다.
· 통계 검증 → (효과크기 해석) → 시각화 → 변수 선택 → 비즈니스 적용 (인사이트)
통계분석 내용을 어떻게 프로젝트 내용에 담아야할지에 대한 의문, 궁금증이 있다. 내일은 반드시 정리하고 가야한다. 생각보다 시간이 얼마 남지 않았다.
(참고) 통계분석 결과 시각화
🎯 2️⃣ t-test / ANOVA 분석 결과 시각화
(1) 그룹 간 평균 비교 (박스플롯)
sns.boxplot(x='그룹변수명', y='측정값', data=df)
plt.title('그룹별 분포 비교 (Boxplot)')
plt.show()
→ 그룹 간 중앙값, 분산, 이상치 등을 직관적으로 보여줍니다.
(2) 평균값 막대그래프 + 신뢰구간
sns.barplot(x='그룹변수명', y='측정값', data=df, ci=95, capsize=0.2)
plt.title('그룹 간 평균 비교 (95% 신뢰구간 포함)')
plt.show()
→ ANOVA나 t-test에서 평균 차이를 직관적으로 보여주는 시각화입니다.
(3) 사후검정 결과 시각화 (Games-Howell, Tukey 등)
import pingouin as pg
posthoc = pg.pairwise_gameshowell(dv='price', between='bathrooms_type', data=df)
sns.heatmap(posthoc.pivot('A', 'B', 'pval'), annot=True, cmap='coolwarm', fmt=".3f")
plt.title('사후검정 p-value 히트맵')
plt.show()
→ 어떤 그룹 간 차이가 유의미한지를 색으로 표현합니다.
🎯 3️⃣ 잔차(residuals) 분석 시각화
회귀모델이 적합한지 확인할 때 중요합니다.
residuals = y_te - y_pred sns.histplot(residuals, kde=True)
plt.title('잔차 분포 (정규성 확인)')
plt.show()
또는:
plt.scatter(y_pred, residuals) plt.axhline(0, color='red', linestyle='--')
plt.xlabel('예측값')
plt.ylabel('잔차')
plt.title('잔차 vs 예측값')
plt.show()
→ 잔차가 0 근처에 고르게 분포하면 선형성 및 등분산성이 괜찮다는 뜻이에요.
🧠 정리
| 분석 목적 | 추천 시각화 | 함수 |
| 회귀 관계 | sns.regplot() | 선형 회귀선 |
| 회귀계수 영향 | sns.barplot() | 계수 막대 그래프 |
| 그룹 평균 비교 | sns.boxplot(), sns.barplot() | t-test, ANOVA |
| 사후검정 결과 | sns.heatmap() | p-value 히트맵 |
| 모델 진단 | sns.histplot(), plt.scatter() | 잔차 분석 |
끝.
'프로젝트' 카테고리의 다른 글
| [프로젝트 #2-7] 통계 파트 정리 후 마무리 가닥이 보인다. (0) | 2025.10.21 |
|---|---|
| [프로젝트 #2-5] EDA 2차 마무리와 가설검정(통계) 시작! (0) | 2025.10.17 |
| [프로젝트 #2-4] EDA 1차 진행 : 단변량/다변량 분석 | 파생변수는 어쩌지...? (0) | 2025.10.16 |