말하는감자의 데이터분석일지

[데잇걸즈Day39]통계분석 미니프로젝트 '다시 가고 싶은 여행지' 0915

소소리 2022. 9. 16. 19:14

다시 가고 싶은 여행지를 직접 데이터로 만들어서 미니프로젝트 해보기

 

- 여행 만족도: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)