다시 가고 싶은 여행지를 직접 데이터로 만들어서 미니프로젝트 해보기
- 여행 만족도:1 나쁨 5 좋음
- 날씨 :1 나쁨 5 좋음
- 물가 :1 비쌈 5 저렴
- 도시 :1 작음 5 큼
- 크기 :1 맛없음 5 맛 있음
- 랜드마크 수:1 적음 5 많음
- 음식 :1 맛없음 5 맛있음
로 설정하고 1~5로 점수를 매겨 보았다.
중간값 구해보기
df.mean()
여행 만족도 3.858108
날씨 4.040541
물가 3.000000
도시 크기 3.135135
관광 스팟 수 3.858108
음식 3.932432
상관관계 구해보기
df.corr()
seaborn 으로 상관관계를 시각화 해보기
import seaborn as sns
sns.regplot(x=df['weather'],y= df['satisfaction'], data=df)
sns.regplot(x=df['food'],y= df['satisfaction'], data=df)
sns.regplot(x=df['size'],y= df['satisfaction'], data=df)
sns.regplot(x=df['landmark'],y= df['satisfaction'], data=df)
결론 : 데이터가 작아서 표 모양이 내가 생각했던 그런 모양이 아니었다.
그나마 상관관계가 높다고 생각한 날씨/ 음식/ 랜드마크를 기반으로 상관계수를 보기로 했다.
상관계수는 독립변수 간의 관계를 보는 것.
회귀분석의 상관셰수는 독립변수와 종속변수 간의 관계를 보는 것.
import pingouin as pg
pg.corr(df['weather'], df['satisfaction'])
피어슨 - 선형적
나머지 (스피어만 등) - 비선형적
총 만족도의 비율을 보기 위해 히스토플랏으로 비율을 보기로 한다.
sns.histplot(x='satisfaction', data=df)
해석 : 대부분 평균 4~5점으로 점수를 후하게 줬다.
그런데 각각의 독립변수 점수가 낮아도 전체적인 만족도는 좋을 수도 있다.
회귀분석 전진선택법 이용
#음식과 만족도의 상관관계
from statsmodels.formula.api import ols
m = ols("satisfaction ~ food", data=df).fit()
m.summary()
R-squared 는 클 수록 좋고
AIC / BIC는 작을 수록 좋다.
#날씨와 만족도의 상관관계
from statsmodels.formula.api import ols
m = ols("satisfaction ~ weather", data=df).fit()
m.summary()
#랜드마크와 만족도의 상관관계
from statsmodels.formula.api import ols
m = ols("satisfaction ~ landmark", data=df).fit()
m.summary()
#음식 + 랜드마크
m = ols("satisfaction ~ food + landmark", data=df).fit()
m.summary()
#음식 + 날씨
m = ols("satisfaction ~ food + weather", data=df).fit()
m.summary()
# 음식+날씨+랜드마크 + 날씨 + 대륙 상관관계
m = ols("satisfaction ~ food + weather + landmark + continent", data=df).fit()
m.summary()
Dep. Variable:R-squared:Model:Adj. R-squared:Method:F-statistic:Date:Prob (F-statistic):Time:Log-Likelihood:No. Observations:AIC:Df Residuals:BIC:Df Model:Covariance Type:
satisfaction | 0.414 |
OLS | 0.389 |
Least Squares | 16.61 |
Thu, 15 Sep 2022 | 1.96e-14 |
14:28:08 | -176.21 |
148 | 366.4 |
141 | 387.4 |
6 | |
nonrobust |
coefstd errtP>|t|[0.0250.975]Interceptcontinent[T.아시아]continent[T.오세아니아]continent[T.유럽]foodweatherlandmark
0.7690 | 0.451 | 1.705 | 0.090 | -0.122 | 1.660 |
-0.1119 | 0.289 | -0.388 | 0.699 | -0.682 | 0.459 |
1.1420 | 0.641 | 1.781 | 0.077 | -0.125 | 2.409 |
0.1159 | 0.297 | 0.390 | 0.697 | -0.471 | 0.703 |
0.3957 | 0.063 | 6.319 | 0.000 | 0.272 | 0.519 |
0.2276 | 0.056 | 4.046 | 0.000 | 0.116 | 0.339 |
0.1607 | 0.057 | 2.815 | 0.006 | 0.048 | 0.274 |
대륙별 만족도 평균에 차이가 있는가?
df.groupby('continent').agg('mean')
북아메리카/ 아시아/ 오세아니아/ 유럽 이렇게 4가지를 비교
아쉬운점 : 오세아니아 표본이 2개 밖에 없어서 아쉬웠다.
아시아를 다 묶어서 했는데.. 동남아시아 / 동아시아 나누고
유럽을 동유럽 서유럽 나눠서 했으면 더 다채로운 결과를 얻지 않았을까...
#이렇게도 해봤는데... 영...
asia=df.satisfaction[df.continent=='아시아']
asia
europe=df.satisfaction[df.continent=='유럽']
europe
0 4
1 5
2 3
3 5
4 5
..
141 2
142 2
143 4
144 4
145 3
이렇게 나와서 좀.. 무의미한
pg.ttest(asia,europe)
아시아, 유럽 대륙별로 만족도에 차이가 있음
pg.ttest(asia,ose)
'말하는감자의 데이터분석일지' 카테고리의 다른 글
프로그래머스 SQL Lv.2 나이 정보가 없는 회원 수 구하기 (0) | 2022.11.22 |
---|---|
[데잇걸즈Day51] Git ... 말잇못 (0) | 2022.11.22 |