데이터 인사이트 스터디 내용을 관리하는 블로그 입니다.

Data Insight Study Blog

  • Join Us on Facebook!
  • Follow Us on Twitter!
  • LinkedIn
  • Subcribe to Our RSS Feed

4. Clustering and Modeling > Predictive Modelling > A Linear Model for Tip Percent

팁 비율을 예측하는 선형 모델(linear model)

하나는 pickup_nb와 dropoff_nb, 또 하나의 pickup_dow와 pickup_hour 사이에 상호작용 조건들를 포함하는 선형 모델을 만들어 보겠습니다. 여기에서 우리는 팁의 비율이 단순히 승객들이 어느 지역에서 승차했는지(pickup_nb), 어느 지역에서 하차 하였는지(dropoff_nb)가 아니라 승차와 하차의 쌍으로 부터 영향을 받는다는 것에 착안하였습니다. 또한 요일과 시간이 함께 팁에 영향을 미친다는 것을 추정 하였습니다. 예를 들어 일요일 9시 부터 12시 까지 사람들이 팁을 많이 준다는 것이,  모든 요일의 9시에서 12시 사이에는 높은 팁을 준다 또는 일요일이라면  언제라도 높은 팁을 준다 라는 것을 의미하지는 않습니다. 이러한 직관은 다음과 같이 rxLinMod 함수에 넘겨주는 모델 수식 인수로 인코딩됩니다.

   tip_percent ~ pickup_nb : dropoff_nb + pickup_dow : pickup_hour

여기서 우리는 :을 사용하여 상호 작용 부분을 식별하고, +를 사용하여 추가 부분를 구분합니다.

form_1 <- as.formula(tip_percent ~ pickup_nb:dropoff_nb + pickup_dow:pickup_hour)
rxlm_1 <- rxLinMod(form_1, data = mht_xdf, dropFirst = TRUE, covCoef = TRUE)

모델 계수들(model coefficients)을 개별적으로 검사하는 것은 항목이 매우 많기 때문에 어려운 작업입니다. 또한 큰 데이터 세트를 사용하여 작업하는 경우, 표본의 크기가 크기 때문에, 실제로 큰 의미를 갖지 않지만 통계적으로 유의미한 것으로 나타나는 계수들이 많습니다. 따라서 여기에서는 우리의 예측이 어떻게 나타나는지를 살펴보기만 하겠습니다. 먼저 각각 변수들을 factor level의 list로 추출하여 expand.grid로 전달하여, 모든 가능한 factor level의 조합으로 데이터 집합을 만듭니다. 그런 다음 rxPredict를 사용하는 위 모델을 적용하여 tip_percent를 예측합니다.

rxs <- rxSummary( ~ pickup_nb + dropoff_nb + pickup_hour + pickup_dow, mht_xdf)
ll <- lapply(rxs$categorical, function(x) x[ , 1])
names(ll) <- c('pickup_nb', 'dropoff_nb', 'pickup_hour', 'pickup_dow')
pred_df_1 <- expand.grid(ll)
pred_df_1 <- rxPredict(rxlm_1, data = pred_df_1, computeStdErrors = TRUE, writeModelVars = TRUE)
names(pred_df_1)[1:2] <- paste(c('tip_pred', 'tip_stderr'), 1, sep = "_")
head(pred_df_1, 10)
   tip_pred_1 tip_stderr_1          pickup_nb dropoff_nb pickup_dow pickup_hour
1    6.796323   0.16432197          Chinatown  Chinatown        Sun     1AM-5AM
2   10.741766   0.15853956       Little Italy  Chinatown        Sun     1AM-5AM
3    9.150114   0.09162002            Tribeca  Chinatown        Sun     1AM-5AM
4   10.174307   0.09819651               Soho  Chinatown        Sun     1AM-5AM
5    9.706202   0.07365164    Lower East Side  Chinatown        Sun     1AM-5AM
6    8.475197   0.06354026 Financial District  Chinatown        Sun     1AM-5AM
7   10.866035   0.07150005  Greenwich Village  Chinatown        Sun     1AM-5AM
8   10.997276   0.06831955       East Village  Chinatown        Sun     1AM-5AM
9    9.313165   0.12507373       Battery Park  Chinatown        Sun     1AM-5AM
10  10.613802   0.11624956       West Village  Chinatown        Sun     1AM-5AM
답글 기능이 비활성화되어 있습니다