diff --git a/generalized ln-linear.R b/generalized ln-linear.R index 734d05297c305828dcb0d21d5a5f984e60576482..7c4e4edb68d28f98bf21ca22213024c234e9f722 100644 --- a/generalized ln-linear.R +++ b/generalized ln-linear.R @@ -5,105 +5,6 @@ library(rhandsontable) library(data.table) library(numDeriv) -# UI -ui <- fluidPage( - - # App title ---- - titlePanel("Generalized ln-linear"), - - sidebarLayout( - # Sidebar panel for inputs ---- - sidebarPanel( - - h3("Create data table"), - - # Input: ---- - fileInput("file1", "Choose csv file with semicolon separator", - multiple = FALSE, - accept = c("text/csv", - "text/comma-separated-values,text/plain", - ".csv")), - - uiOutput("var_ui"), - - #selectInput("var","Select parameter:",choices=c("MES"="MES","DCO"="DCO","DBO5"="DBO5","NK"="NK","NNH4"="NNH4","NNO3"="NNO3")), - - numericInput("LQ", "Quantification limit of the selected parameter", min=0, value=1), - - numericInput("nbcov", "Number of explanatory variable modalities", min=1, value=2, max=10), - - rHandsontableOutput("tabEdit"), # affichage de la table a editer - - actionButton("go", "Create"), - - br(), - br(), - br(), - - h3("Effects on median"), - uiOutput("choose_median"), - - h3("Effects on dispersion"), - uiOutput("choose_disp"), - - h3("Choose quantile (%)"), - numericInput("alpha", "Quantile", min=1, value=50, max=100), - - actionButton("run", "Show results")), - - - # Main panel for displaying outputs ---- - mainPanel( - - tabsetPanel(type="tabs", - tabPanel("Tutorial", - h3("How to use the Generalized ln-linear Shiny App"), - br(), - p(strong("> Select the csv file containing the data to be analyzed")), - p("It has to be a csv file with semicolon separator"), - br(), - p(strong("> Choose the dependent variable")), - p("For example TSS"), - br(), - p(strong("> State the value of the corresponding quantification limit")), - p("For example 2.0 (mg/L) for TSS"), - br(), - p(strong("> Indicate the number of explanatory variable modalities to be investigated")), - p("Other than those corresponding to the reference set"), - br(), - p(strong("> Complete the table describing each explanatory variable modality with the following information:")), - p("- the label of the modality that you want to see in the different results tables",em("(for example 'inf2ans')")), - p("- the column header in your csv file corresponding to the explanatory variable",em("(for example 'classe_age')")), - p("- the expression of the modality inside this column in your csv file",em("(for example '< 2 ans')")), - br(), - p(strong("> Click on the 'Create' button and then check in the 'Data Table' panel if the table is well-built")), - br(), - p(strong("> Choose the modalities to consider in order to evaluate their effets on median and dispersion")), - br(), - p(strong("> Choose the quantile you want to be returned by the model")), - br(), - p(strong("> Lauch the model by clicking on the 'Show results' button. The table of estimates and the table of quantiles appear in the 'Results' panel.")) - ), - - tabPanel("Data Table", - textOutput("lab_don"), - tableOutput("don")), - - tabPanel("Results", - - h3("> Table of estimates"), - textOutput("lab_res"), - dataTableOutput("test"), - - h3("> Quantiles"), - textOutput("lab_quant"), - dataTableOutput("quantile")) - ) - ) - ) -) - - ln_lineaire <- function(labvdep,don,zm,zd,alpha){ nbzm <- length(zm); @@ -409,9 +310,109 @@ ln_lineaire <- function(labvdep,don,zm,zd,alpha){ } + +# UI +ui <- fluidPage( + + # App title ---- + titlePanel("Generalized ln-linear"), + + sidebarLayout( + # Sidebar panel for inputs ---- + sidebarPanel( + + h3("Create data table"), + + # Input: ---- + fileInput("file1", "Choose csv file with semicolon separator", + multiple = FALSE, + accept = c("text/csv", + "text/comma-separated-values,text/plain", + ".csv")), + + uiOutput("var_ui"), + + numericInput("LQ", "Quantification limit of the selected parameter", min=0, value=1), + + numericInput("nbcov", "Number of explanatory variable modalities", min=1, value=2, max=10), + + rHandsontableOutput("tabEdit"), # affichage de la table a editer + + actionButton("go", "Create"), + + br(), + br(), + br(), + + h3("Effects on median"), + uiOutput("choose_median"), + + h3("Effects on dispersion"), + uiOutput("choose_disp"), + + h3("Choose quantile (%)"), + numericInput("alpha", "Quantile", min=1, value=50, max=100), + + actionButton("run", "Show results")), + + + # Main panel for displaying outputs ---- + mainPanel( + + tabsetPanel(type="tabs", + tabPanel("Tutorial", + h3("How to use the Generalized ln-linear Shiny App"), + br(), + p(strong("> Select the csv file containing the data to be analyzed")), + p("It has to be a csv file with semicolon separator"), + br(), + p(strong("> Choose the dependent variable")), + p("For example TSS"), + br(), + p(strong("> State the value of the corresponding quantification limit")), + p("For example 2.0 (mg/L) for TSS"), + br(), + p(strong("> Indicate the number of explanatory variable modalities to be investigated")), + p("Other than those corresponding to the reference set"), + br(), + p(strong("> Complete the table describing each explanatory variable modality with the following information:")), + p("- the label of the modality that you want to see in the different results tables",em("(for example 'inf2ans')")), + p("- the column header in your csv file corresponding to the explanatory variable",em("(for example 'classe_age')")), + p("- the expression of the modality inside this column in your csv file",em("(for example '< 2 ans')")), + br(), + p(strong("> Click on the 'Create' button and then check in the 'Data Table' panel if the table is well-built")), + br(), + p(strong("> Choose the modalities to consider in order to evaluate their effets on median and dispersion")), + br(), + p(strong("> Choose the quantile you want to be returned by the model")), + br(), + p(strong("> Lauch the model by clicking on the 'Show results' button. The table of estimates and the table of quantiles appear in the 'Results' panel.")) + ), + + tabPanel("Data Table", + textOutput("lab_don"), + tableOutput("don")), + + tabPanel("Results", + + h3("> Table of estimates"), + textOutput("lab_res"), + dataTableOutput("test"), + + h3("> Quantiles"), + textOutput("lab_quant"), + dataTableOutput("quantile")) + ) + ) + ) +) + + # server server <- function(input, output) { + values <- reactiveValues(mat=NULL, don=NULL) + # Importation du fichier de donnees data <- reactive({ req(input$file1) @@ -433,7 +434,6 @@ server <- function(input, output) { }) # Selection covariables - values <- reactiveValues(mat=NULL, don=NULL) observe({ if (!is.null(input$tabEdit)) values$mat <- hot_to_r(input$tabEdit) @@ -453,48 +453,6 @@ server <- function(input, output) { ## Creation de la DataTable don - # don <- eventReactive(input$go, { - # - # dt <- cbind(data(),y=data()[input$var]) - # colnames(dt)[ncol(dt)] <- "y" - # - # # Left-censoring - # loq <- input$LQ - # - # dt <- cbind(dt,lb=data()[input$var]) - # colnames(dt)[ncol(dt)] <- "lb" - # dt$lb[dt$y <= loq] <- 0 - # - # dt <- cbind(dt,ub=data()[input$var]) - # colnames(dt)[ncol(dt)] <- "ub" - # dt$ub[dt$y <= loq] <- loq - # - # ## Covariates ## - # dt <- as.data.table(dt) - # for (i in 1:input$nbcov){ - # dt[,values$mat[i,1]:=ifelse(get(values$mat[i,2])==values$mat[i,3],1,0)] - # } - # - # ## Nettoyage ## - # dt <- select(dt, -1:-(grep("y",colnames(dt))-1)) - # dt <- na.omit(dt) - # - # # Effects on location (median) and dispersion - # output$choose_median <- renderUI({ - # checkboxGroupInput("median","Effects on median", choices = values$mat[,1],selected = values$mat[,1]) - # }) - # - # output$choose_disp <- renderUI({ - # checkboxGroupInput("disp","Effects on dispersion", choices = values$mat[,1],selected = values$mat[,1]) - # }) - # - # output$lab_don <- renderText({ - # paste("Parameter: ",isolate(input$var),"\n") - # }) - # - # dt - # }) - observeEvent(input$go, { don <- cbind(data(),y=data()[input$var]) @@ -538,15 +496,12 @@ server <- function(input, output) { }) }) - - #output$don <- renderTable(don()) #verification don output$don <- renderTable(values$don) #verification don ## Lancement modele observeEvent(input$run,{ - #outputs <- ln_lineaire(labvdep=input$var,don=don(),zm=input$median,zd=input$disp,alpha=input$alpha/100) outputs <- ln_lineaire(labvdep=input$var,don=values$don,zm=input$median,zd=input$disp,alpha=input$alpha/100) # return table of estimates