Los pasos para crear la aplicación son 4:
1
library(shiny)
2 ui
<- fluidPage()
3
server <- function(input, output, session) {}
4
shinyApp(ui = ui, server = server)
Ahora, se muestra un ejemplo básico del uso de esta
herramienta. En el mismo se crean dos gráficos: 1 de densidad y un qq-norm,
para comparar una secuencia aleatoria t-student con una normal, mientras se van
modificando los grados de libertad y el numero de observaciones de la variable
aleatoria [ver aplicación].
library(shiny)
Luego de activar el paquete, en la primera parte del
código se definen los inputs que irán siendo modificados en los gráficos y se
colocan en un panel, que aparece en la parte derecha de la aplicación.
Adicionalmente, mediante la función mainpanel,
se colocan los nombres de los gráficos de salida.
# Define UI for application
that draws a histogram
ui
<- fluidPage(
# Título
titlePanel("Convergencia de una
T-Student a normal"),
# Crea
un panel en la parte derecha de la aplicación para modificar los glb
sidebarLayout(
sidebarPanel(
sliderInput(inputId = "glb",
label = "Grados de
libertad",
min = 1,
max = 100,
value = 10),
sliderInput(inputId = "obs",
label = "Observaciones",
min = 5,
max = 100000,
value = 10)
),
mainPanel(plotOutput("distPlot"),
plotOutput("distPlot1")
)
)
)
Posteriormetne, se crear la función server donde se
definen los input y los gráficos que serán utilizados en la aplicación. Estos
deben estar en función de los argumentos modificables que atribuimos al panel
anterior.
server
<- function(input, output) {
output$distPlot
<- renderPlot({
# generate inputs
glb <-
input$glb
obs <-
input$obs
# draw the histogram with the specified
number of bins
curve(dt(x, df = glb), from = -5, to = 5,
col = "sky blue",
xlab
= "Quantiles", ylab = "Probabilidad", lwd = 3)
curve(dnorm(x,mean=0,sd=1), from = -5, to = 5,
col = "grey40", add =
TRUE, lwd = 2)
legend("topleft", legend =
c("T","Normal"),
col = c("sky
blue","grey40"),
lty = 1, lwd = 2)
})
output$distPlot1 <- renderPlot({
# generate bins based on input$bins from
ui.R
glb <- input$glb
obs <- input$obs
#
draw the histogram with the specified number of bins
qqnorm(rt(obs, df=glb))
abline(0,1)
})
}
Finalmente,
se corre la aplicación.
shinyApp(ui
= ui, server = server)
Referencias:
Quick-R.
Probability Plots. https://www.statmethods.net/advgraphs/probability.html
Magnusson,
Kristoffer. Understanding the t-distribution and its normal approximation. an
interactive visualization. https://rpsychologist.com/d3/tdist/
Tutorial:
Building 'Shiny' Applications with R - GitHub Pages. https://rstudio.github.io/shiny/tutorial/.