This is a Shiny web application. You can run the application by clicking
the 'Run App' button above.
##Pre-Data manipulation
Book<-Book1%>%
filter( AlarmSayisi<= 100,
TeknikDestekTalebi<= 15,
MobilDataKullanimi<=30)
Book$MobilDataKullanimi <- ifelse(Book$MobilDataKullanimi>1,1,0)
Book$HizmetSuresi <- Book$HizmetSuresi/12
Book$HizmetSuresi3<-ifelse(Book$HizmetSuresi<=3,1,0)
Book$SikayetSayisi[Book$SikayetSayisi >=1] <-1
Book$TeknikDestekTalebi<-ifelse(Book$TeknikDestekTalebi>1,1,0)
Book$IndirimOrani<-as.numeric(Book$IndirimOrani)
Book$IndirimOrani<-Book$IndirimOrani*100
Book$IndirimOrani[Book$IndirimOrani>0]<-1
Book$IndirimOrani[is.na(Book$IndirimOrani)]=0
Book$CHURN<-recode(Book$CHURN,"VAR"=1, "YOK"=0)
Find out more about building applications with Shiny here:
library(shiny)
library(plyr)
library(mfx)
library(plotly)
library(ggplot2)
library(dplyr)
library(forcats)
Define UI for application that draws a histogram
ui <- shinyUI(
pageWithSidebar(
sidebarLayout(
uiOutput("select1","Ürün",choices =c("a1"="a1","a2"="a2",
"a3"="a3","a4"="a4","a5"="a5")), #replaced selectInput to uiOutput
br(),
uiOutput("select2", "İlçe",choices=c("b1"="b1",
"b2"="b2","b3"="b3")),
mainPanel(
titlePanel("ML Result: Risk Distribution"),
tabPanel("pp", plotlyOutput("Display"))))
))
Define server logic required to draw a histogram
server <- function(input, output) {
output$select1<-renderUI({
uiOutput("select1","Ürün",choices =c("a1"="a1","a2"="a2",
"a3"="a3","a4"="a4","a5"="a5")) })
output$select2<-renderUI({
uiOutput("select2", "İlçe",choices=c("b1"="b1",
"b2"="b2","b3"="b3"))})
##REACTIVE FUNCTION FOR ML-PROBIT REG
data<-reactive({
a<-Book %>% filter(Urun==(input$select1) & Ilce==(input$select2))
attach(a)
res<-probitmfx(formula=CHURN~ HizmetSuresi3+SikayetSayisi+TeknikDestekTalebi+MobilDataKullanimi+IndirimOrani
,data = a,
atmean = TRUE, robust = FALSE, clustervar1 = NULL,
clustervar2 = NULL, start = NULL, control = list())
res1<-as.data.frame(res$mfxest)
pi<-select(res1,`dF/dx`,`P>|z|`)
if (pi[1,2] < 0.05) a$HizmetSuresi3 <- a$HizmetSuresi3*pi[1,1]
if (pi[2,2] < 0.05) a$SikayetSayisi <- a$SikayetSayisi*pi[2,1]
if (pi[3,2] < 0.05) a$TeknikDestekTalebi <- a$TeknikDestekTalebi*pi[3,1]
if (pi[4,2] < 0.05) a$MobilDataKullanimi <- a$MobilDataKullanimi*pi[4,1]
if (pi[5,2] < 0.05) a$IndirimOrani <- a$IndirimOrani*pi[5,1]
a$churn.prob<-a$HizmetSuresi3+a$SikayetSayisi+a$TeknikDestekTalebi+a$MobilDataKullanimi+a$IndirimOrani
aa<-select(a,c(SUBSCRIPTION_ID,churn.prob,CHURN))
aa
aaa <-aa %>% mutate("Risk_level"=
ifelse(between(churn.prob, -1.10,-0.60), "Very Low Risk",
ifelse(between(churn.prob, -0.601,-0.20), "Low Risk",
ifelse(between(churn.prob, -0.201,-0.01), "Medium Risk",
ifelse(between(churn.prob, 0,0.20), "High Risk",
ifelse(between(churn.prob, 0.201,0.60), "Highest Risk", "NON"))))))
aaa.churnvar<-aaa %>% filter(CHURN==1)
aaa.churnyok<-aaa %>% filter(CHURN==0)
adat.var<-count(aaa.churnvar,"Risk_level")
adat.yok<-count(aaa.churnyok,"Risk_level")
adat.yok$n2<-adat.yok$n
adat1<-left_join(adat.var, adat.yok, by = c("Risk_level"))
adat1
})
##plotly
p <- plot_ly(adat1, x = ~Risk_level, y = ~freq.x, type = 'bar', name = 'Churn Var') %>%
add_trace(y = ~freq.y, name = 'Churn Yok') %>%
layout(xaxis = list(title = "",
categoryorder = "array",
categoryarray = c("Very Low Risk","Low Risk",
"Medium Risk","High Risk","Highest Risk"),barmode = 'group'),yaxis = list(title = ""))
pp<-p %>% config(displayModeBar = F)
output$Display <- renderPlotly({pp})
})
}
shinyApp(ui = ui, server = server)