Number of clients with purchase/visit/address information, we delete clients with 1 visit, and atheletic client

nrow(client_of_interest)
[1] 981

Number of visits(at least 2 visit)

summary(client_of_interest$number_of_visit)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   2.00    4.00    8.00   22.13   18.00  618.00 

Days spent in the gym

summary(client_of_interest$length)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0      41     119     303     406    2438 

Purchase count

summary(client_of_interest$purchase_count)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       3       6      18      14     569 

Purchase amount

summary(client_of_interest$purchase_amount)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    1.5   217.2   518.0  1514.3  1180.6 64012.0 

Visit Items

visit_by_item

Visit Payment

visit_by_payment

Detailed look at Personal Trainning

nrow(client_PT)
[1] 217
summary(client_PT$number_of_visit)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   2.00    5.00   14.00   46.23   46.00  618.00 
summary(client_PT$purchase_amount)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    1.5   481.4  1067.6  3644.3  3493.5 64012.0 
sales_PT_item_summary
first_purchase_PT_item_summary
client_PT %>% group_by(first_Item.name) %>% summarise(count=n(),avg_price=mean(sum_first_purchase_amount),gym_days = mean(length)) %>% arrange(-gym_days)

Length of stay in the gym = First Purchase amount + driving time

summary(PT_retention_regression)

Call:
lm(formula = length ~ driving_time_minute + sum_first_purchase_amount, 
    data = client_PT)

Residuals:
   Min     1Q Median     3Q    Max 
-484.8 -378.0 -220.7  216.5 2018.8 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)               408.21247   56.91156   7.173 1.18e-11 ***
driving_time_minute        -0.35922    0.26081  -1.377    0.170    
sum_first_purchase_amount   0.08706    0.10236   0.851    0.396    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 540.4 on 214 degrees of freedom
Multiple R-squared:  0.01168,   Adjusted R-squared:  0.002442 
F-statistic: 1.264 on 2 and 214 DF,  p-value: 0.2845
client_PT %>% group_by(first_Item.name) %>% summarise(n_visit=mean(number_of_visit_before_second_purchase,na.rm=TRUE)) %>% arrange(-n_visit)
cor(client_PT$sum_second_purchase_amount,client_PT$number_of_visit_before_second_purchase,use="complete.obs")
[1] 0.2542691

Detailed look at Pilate

nrow(client_pilate)
[1] 90
summary(client_pilate$number_of_visit)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   2.00    5.00   11.00   36.54   43.00  471.00 
summary(client_pilate$purchase_amount)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    1.5   219.2   749.6  3049.0  2269.6 64012.0 
sales_pilate_item_summary
client_pilate %>% group_by(first_Item.name) %>% summarise(count=n(),avg_price=mean(sum_first_purchase_amount),gym_days = mean(length)) %>% arrange(-gym_days)

Length of stay in the gym = First Purchase amount + driving time

summary(pilate_retention_regression)

Call:
lm(formula = length ~ driving_time_minute + sum_first_purchase_amount, 
    data = client_pilate)

Residuals:
   Min     1Q Median     3Q    Max 
-366.7 -327.6 -123.3  105.3 2081.9 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)               352.60009   63.78183   5.528 3.34e-07 ***
driving_time_minute         0.02144    0.18757   0.114    0.909    
sum_first_purchase_amount   0.06122    0.13874   0.441    0.660    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 464.3 on 87 degrees of freedom
Multiple R-squared:  0.002321,  Adjusted R-squared:  -0.02061 
F-statistic: 0.1012 on 2 and 87 DF,  p-value: 0.9039

Visit Data analysis

LS0tCnRpdGxlOiAiR3ltIFZpc2l0IFB1cmNoYXNlIEFkZHJlc3MgRGF0YSBhbmFseXNpcyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKTnVtYmVyIG9mIGNsaWVudHMgd2l0aCBwdXJjaGFzZS92aXNpdC9hZGRyZXNzIGluZm9ybWF0aW9uLCB3ZSBkZWxldGUgY2xpZW50cyB3aXRoIDEgdmlzaXQsIGFuZCBhdGhlbGV0aWMgY2xpZW50CgpgYGB7cn0KbnJvdyhjbGllbnRfb2ZfaW50ZXJlc3QpCmBgYAoKTnVtYmVyIG9mIHZpc2l0cyhhdCBsZWFzdCAyIHZpc2l0KQpgYGB7cn0Kc3VtbWFyeShjbGllbnRfb2ZfaW50ZXJlc3QkbnVtYmVyX29mX3Zpc2l0KQpgYGAKCkRheXMgc3BlbnQgaW4gdGhlIGd5bQpgYGB7cn0Kc3VtbWFyeShjbGllbnRfb2ZfaW50ZXJlc3QkbGVuZ3RoKQpgYGAKClB1cmNoYXNlIGNvdW50CgpgYGB7cn0Kc3VtbWFyeShjbGllbnRfb2ZfaW50ZXJlc3QkcHVyY2hhc2VfY291bnQpCmBgYAoKUHVyY2hhc2UgYW1vdW50CgpgYGB7cn0Kc3VtbWFyeShjbGllbnRfb2ZfaW50ZXJlc3QkcHVyY2hhc2VfYW1vdW50KQpgYGAKClZpc2l0IEl0ZW1zCgpgYGB7cn0KdmlzaXRfYnlfaXRlbQpgYGAKClZpc2l0IFBheW1lbnQKYGBge3J9CnZpc2l0X2J5X3BheW1lbnQKYGBgCgojIyBEZXRhaWxlZCBsb29rIGF0IFBlcnNvbmFsIFRyYWlubmluZwoKLSBOdW1iZXIgb2YgY2xpZW50cyB3aG8gaGF2ZSBwdXJjaGFzZWQgcGVyc29uYWwgdHJhaW5uaW5nCmBgYHtyfQpucm93KGNsaWVudF9QVCkKYGBgCgotIE51bWJlciBvZiB0b3RhbCB2aXNpdHMgZm9yIHBlcnNvbmFsIHRyYWlubmluZyBjbGllbnRzCgpgYGB7cn0Kc3VtbWFyeShjbGllbnRfUFQkbnVtYmVyX29mX3Zpc2l0KQpgYGAKCi0gVG90YWwgUHVyY2hhc2UgQW1vdW50IGZvciBwZXJzb25hbCB0cmFpbm5pbmcgY2xpZW50cwoKYGBge3J9CnN1bW1hcnkoY2xpZW50X1BUJHB1cmNoYXNlX2Ftb3VudCkKYGBgCgotIFR5cGUgb2YgcGVyc29uYWwgdHJhaW5uaW5nIHB1cmNoYXNlCgpgYGB7cn0Kc2FsZXNfUFRfaXRlbV9zdW1tYXJ5CmBgYAoKLSBGaXJzdCBQdXJjaGFzZSBvZiBwZXJzb25hbCB0cmFpbm5pbmcoYnkgaXRlbSkKCmBgYHtyfQpmaXJzdF9wdXJjaGFzZV9QVF9pdGVtX3N1bW1hcnkKYGBgCgoKCgoKCi0gUmV0ZW50aW9uIGFuZCBmaXJzdCBwdXJjaGFzZQoKCmBgYHtyfQpjbGllbnRfUFQgJT4lIGdyb3VwX2J5KGZpcnN0X0l0ZW0ubmFtZSkgJT4lIHN1bW1hcmlzZShjb3VudD1uKCksYXZnX3ByaWNlPW1lYW4oc3VtX2ZpcnN0X3B1cmNoYXNlX2Ftb3VudCksZ3ltX2RheXMgPSBtZWFuKGxlbmd0aCkpICU+JSBhcnJhbmdlKC1neW1fZGF5cykKCmBgYAoKCgoKCkxlbmd0aCBvZiBzdGF5IGluIHRoZSBneW0gPSBGaXJzdCBQdXJjaGFzZSBhbW91bnQgKyBkcml2aW5nIHRpbWUKYGBge3J9CnN1bW1hcnkoUFRfcmV0ZW50aW9uX3JlZ3Jlc3Npb24pCmBgYAoKCi0gTnVtYmVyIG9mIHZpc2l0cyBzaW5jZSBmaXJzdCBwdXJjaGFzZQoKCmBgYHtyfQpjbGllbnRfUFQgJT4lIGdyb3VwX2J5KGZpcnN0X0l0ZW0ubmFtZSkgJT4lIHN1bW1hcmlzZShuX3Zpc2l0PW1lYW4obnVtYmVyX29mX3Zpc2l0X2JlZm9yZV9zZWNvbmRfcHVyY2hhc2UsbmEucm09VFJVRSkpICU+JSBhcnJhbmdlKC1uX3Zpc2l0KQoKYGBgCgotIENvcnJlbGF0aW9uIGJldHdlZW4gbnVtYmVyIG9mIHZpc2l0IHNpY2UgZmlyc3QgcHVyY2hhc2UgYW5kIGFtb3VudCBpbiB0aGUgc2Vjb25kIHB1cmNoYXNlCgpgYGB7cn0KY29yKGNsaWVudF9QVCRzdW1fc2Vjb25kX3B1cmNoYXNlX2Ftb3VudCxjbGllbnRfUFQkbnVtYmVyX29mX3Zpc2l0X2JlZm9yZV9zZWNvbmRfcHVyY2hhc2UsdXNlPSJjb21wbGV0ZS5vYnMiKQpgYGAKCgojIyBEZXRhaWxlZCBsb29rIGF0IFBpbGF0ZQoKCi0gTnVtYmVyIG9mIGNsaWVudHMgd2hvIGhhdmUgcHVyY2hhc2VkIHBpbGF0ZQpgYGB7cn0KbnJvdyhjbGllbnRfcGlsYXRlKQpgYGAKCi0gTnVtYmVyIG9mIHRvdGFsIHZpc2l0cyBmb3IgcGlsYXRlIGNsaWVudHMKCmBgYHtyfQpzdW1tYXJ5KGNsaWVudF9waWxhdGUkbnVtYmVyX29mX3Zpc2l0KQpgYGAKCi0gVG90YWwgUHVyY2hhc2UgQW1vdW50IGZvciBwaWxhdGUgY2xpZW50cwoKYGBge3J9CnN1bW1hcnkoY2xpZW50X3BpbGF0ZSRwdXJjaGFzZV9hbW91bnQpCmBgYAoKLSBUeXBlIG9mIHBpbGF0ZSBwdXJjaGFzZQoKYGBge3J9CnNhbGVzX3BpbGF0ZV9pdGVtX3N1bW1hcnkKYGBgCgoKLSBSZXRlbnRpb24gYW5kIGZpcnN0IHB1cmNoYXNlCgoKYGBge3J9CmNsaWVudF9waWxhdGUgJT4lIGdyb3VwX2J5KGZpcnN0X0l0ZW0ubmFtZSkgJT4lIHN1bW1hcmlzZShjb3VudD1uKCksYXZnX3ByaWNlPW1lYW4oc3VtX2ZpcnN0X3B1cmNoYXNlX2Ftb3VudCksZ3ltX2RheXMgPSBtZWFuKGxlbmd0aCkpICU+JSBhcnJhbmdlKC1neW1fZGF5cykKCmBgYAoKCgoKCkxlbmd0aCBvZiBzdGF5IGluIHRoZSBneW0gPSBGaXJzdCBQdXJjaGFzZSBhbW91bnQgKyBkcml2aW5nIHRpbWUKYGBge3J9CnN1bW1hcnkocGlsYXRlX3JldGVudGlvbl9yZWdyZXNzaW9uKQpgYGAKCgojIyBWaXNpdCBEYXRhIGFuYWx5c2lzCgoKCgoK