我起草了此应用程序,以显示偏斜残差的影响。用户可以指定截距,斜率,样本大小和残余偏度。
输出为散点图。我想添加一个回归输出。但是,我不知道如何编写该部分:
output$reg01 <- renderPrint({
summary(lm(1:10~rnorm(10)))
当前,我只是在这里填充一个伪造的回归,以确保我的UI至少可以正常工作。但是最终,我希望它从myData中读取y和x。我尝试lm(y〜x,data = myData)没有成功。好像myData局限于第一个renderPlot()函数一样。
任何有关如何在每次运行中保持模拟数据恒定的帮助,以便我可以使用不同的plot / tabulate函数来引用它吗?我的猜测是关于react()的事,但我不确定如何将数据集放入其中。
library(shiny)
library(sn)
ui <- fluidPage(
numericInput(inputId= "n", "Sample size", value=100),
numericInput(inputId="b0", "Intercept", value=2.5),
numericInput(inputId="b1", "Slope", value=5),
numericInput(inputId="skew", "Skewness", value=0),
plotOutput(outputId = "scatter"),
verbatimTextOutput(outputId = "reg01")
)
server <- function(input, output){
output$scatter <- renderPlot({
# Creating the data
x <- rnorm(input$n)
res <- rsn(n=input$n, xi=0, omega=15, alpha=input$skew)
y <- input$b0 + input$b1*x + res
myData <- data.frame(x,y)
# Generating the plot
plot(x,y,pch=16,col="#00000050")
abline(input$b0,input$b1,col="#FF000040",lwd=10)
lines(loess.smooth(x,y,span=0.6),col="#00dd55",lty=3,lwd=4)
abline(lm(y~x),col="#4488aa",lwd=4)
})
output$reg01 <- renderPrint({
summary(lm(1:10~rnorm(10)))
})
}
shinyApp(ui=ui, server=server)
这是一个最小的(不工作的)示例,其中没有所有统计信息:
library(shiny)
ui <- fluidPage(
numericInput(inputId= "meanX", "mean for x", value=10),
numericInput(inputId= "meanY", "mean for y", value=10),
plotOutput(outputId = "scatter"),
verbatimTextOutput(outputId = "reg01")
)
server <- function(input, output){
output$scatter <- renderPlot({
# Creating the data
x <- rnorm(100, input$meanX, 1)
y <- rnorm(100, input$meanY, 1)
myData <- data.frame(x,y)
# Generating the plot
plot(x,y,pch=16,col="#00000050")
})
output$reg01 <- renderPrint({
summary(lm(y ~ x, data=myData))
})
}
shinyApp(ui=ui, server=server)
答案 0 :(得分:1)
您可以将数据生成移动到反应容器中。电抗值可用于生成其他输出或电抗。他们只会在输入更改时重新计算。
library(shiny)
ui <- fluidPage(
numericInput(inputId= "meanX", "mean for x", value=10),
numericInput(inputId= "meanY", "mean for y", value=10),
plotOutput(outputId = "scatter"),
verbatimTextOutput(outputId = "reg01")
)
server <- function(input, output){
mydata_storage = reactive({
# Creating the data
x <- rnorm(100, input$meanX, 1)
y <- rnorm(100, input$meanY, 1)
myData <- data.frame(x,y)
})
output$scatter <- renderPlot({
mydata = mydata_storage()
plot(mydata$x,mydata$y,pch=16,col="#00000050")
})
output$reg01 <- renderPrint({
mydata = mydata_storage()
summary(lm(y ~ x, data=mydata))
})
}
shinyApp(ui=ui, server=server)