Je crée ma première application Shiny et j'ai du mal à tracer les quatre tests d'adéquation du paquet fitdistrplus
. (Pour les références, je suis en train de reproduire les parcelles de la page 7 de la référence ici:fitdist in r shiny, l'erreur nécessite des valeurs finies 'xlim'
En bref, je veux que l'utilisateur de sélectionner un sous-ensemble de données en fonction de la variable M, puis d'évaluer différentes densités de distributions de probabilité pour la variable Q. J'ai utilisé le code pour créer la bonté de l'ajustement des parcelles en dehors de Shiny et cela fonctionne parfaitement.En R Shiny, je suis capable de tracer individuellement l'ajustement (fw, fg, fl) mais quand il s'agit d'utiliser le denscomp
, qqcomp
, cdfcomp
et ppcomp
, j'ai ce message d'erreur:
Error: need finite 'xlim' values
J'ai essayé d'ajouter les xlim
et ylim
dans le code (ex: xlim =c(0,300), ylim=c(0.008)
) mais j'ai quand même reçu le message d'erreur.
Est-ce que quelqu'un a une idée pour résoudre ce problème?
Mon code ci-dessous:
library(fitdistrplus)
library(shiny)
library(dplyr)
ui<- shinyUI(pageWithSidebar(
headerPanel("Distribution analysis"),
sidebarPanel(
selectInput("input1",
label = "M",
choices = data$m,
selected = "M1"),
mainPanel(
tabsetPanel(
tabPanel("Fit", plotOutput("fit1")),
tabPanel("Distribution", plotOutput("hist1")),
tabPanel("Table", tableOutput("table"))
))
))
server<- shinyServer(function(input, output) {
dataInput <- reactive({
data %>%
filter(m==input$input1)
})
fw<- eventReactive(input$input1 {
fitdist(dataInput()$Q, "weibull")
})
fg<- eventReactive(input$input1 {
fitdist(dataInput()$Q, "gamma")
})
fln<- eventReactive(input$input1 {
fitdist(dataInput()$Q, "lnorm")
})
output$fit1 <- renderPlot({
if (!is.null(dataInput())) {
par(mfrow = c(2, 2))
plot.legend <- c("Weibull", "lognormal", "gamma")
denscomp(list(fw, fln, fg), legendtext = plot.legend)
qqcomp(list(fw, fln, fg), legendtext = plot.legend)
cdfcomp(list(fw, fln, fg), legendtext = plot.legend)
ppcomp(list(fw, fln, fg), legendtext = plot.legend)
}
})
})
shinyApp(ui=ui, server=server)
et les données pour recréer l'exemple:
m<- c("M1","M3","M3", "M2", "M3","M2","M2","M1","M1","M1","M1","M3","M3","M2","M2","M1","M3","M3", "M3","M2","M2","M2","M1","M1","M1","M1","M1","M3","M3","M3")
Q<- c(265, 65, 40, 245,230,175, 185, 190, 290, 85, 75, 155, 110, 60, 35, 245, 300,175, 180, 265, 55, 200, 95, 185, 165, 55, 90, 190, 235, 200)
data<- data.frame(m,Q)
Merci pour la réponse. Cela a résolu le problème. Merci pour les conseils aussi. Très apprécié. –
Veuillez Accepter la réponse si elle a résolu votre problème –