fitdistrplus我正在创建我的第一个 Shiny 应用程序,我正在努力从包中绘制四个拟合优度测试。(作为参考,我试图从这里的参考资料中重现第 7 页的情节:
简而言之,我希望用户根据变量 M 选择数据子集,然后评估变量 Q 的不同概率分布密度。我已经使用代码在 Shiny 之外创建了拟合优度图,并且效果很好。在 R Shiny 中,我可以单独绘制拟合 (fw, fg, fl) 但在使用denscomp、和时qqcomp,我会收到以下错误消息:cdfcompppcomp
错误:需要有限的“xlim”值
我试图在代码中添加xlimand ylim(例如:)xlim =c(0,300), ylim=c(0.008),但我仍然收到错误消息。
有谁知道如何解决这个问题?
我的代码如下:
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)  
以及重新创建示例的数据:
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)

