Spaces:
Sleeping
Sleeping
library(shiny) | |
source("auxiliar.R") | |
shinyServer(function(input,output,session){ | |
observe({ | |
inFile <- input$file1 | |
if(is.null(inFile)) | |
dt <- datos | |
else dt <- read.csv(inFile$datapath, header=input$header, sep=input$sep) | |
updateSelectInput(session, "variable1", | |
choices = names(dt), | |
selected = "Weight") | |
updateSelectInput(session, "variable2", | |
choices = names(dt), | |
selected = "Group") | |
}) | |
output$summary <- renderTable({ | |
inFile <- input$file1 | |
if(is.null(inFile)) | |
dt <- datos | |
else dt <- read.csv(inFile$datapath, header=input$header, sep=input$sep) | |
dt <- na.omit(dt) # Para eliminar obs con NA | |
dt | |
}) | |
output$appPlot <- renderPlot({ | |
inFile <- input$file1 | |
if(is.null(inFile)) | |
dt <- datos | |
else dt <- read.csv(inFile$datapath, header=input$header, sep=input$sep) | |
# Para eliminar obs con NA | |
dt <- na.omit(dt) | |
# Para obtener x y grupo | |
x <- dt[, input$variable1] | |
group <- dt[, input$variable2] | |
group <- as.factor(group) | |
if (nlevels(group) != 2) { | |
plot(1, type = "n", xlab = "", ylab = "", axes = FALSE) | |
mensaje <- "La variable cualitativa \n que eligi贸 debe tener s贸lo \n 2 niveles." | |
text(x=1, y=1, mensaje, cex=2, col = "blue", pos=3) | |
} | |
else { | |
par(mfrow=c(1, 2), bg="gray98") | |
# Para dibujar las densidades | |
xx <- split(x, group) | |
den <- lapply(xx, density) | |
plot(den[[1]], lwd=4, col="deepskyblue3", | |
main="Densidad", las=1, | |
xlab=as.character(input$variable1), | |
ylab="Densidad", | |
xlim=range(range(den[[1]]$x), range(den[[2]]$x)), | |
ylim=c(0, max(c(den[[1]]$y, den[[2]]$y)))) | |
lines(den[[2]], lwd=4, col="firebrick3") | |
# Leyenda para distinguir las densidades | |
legend("topright", bty="n", | |
lwd=4, | |
col=c("deepskyblue3", "firebrick3"), | |
legend=unique(group)) | |
# Para dibujar los qqplot | |
qq1 <- qqnorm(xx[[1]], plot.it=FALSE) | |
qq2 <- qqnorm(xx[[2]], plot.it=FALSE) | |
plot(qq1, las=1, main="QQplot", | |
pch=19, col="deepskyblue3", | |
xlim=range(c(qq1$x, qq2$x)), | |
ylim=range(c(qq1$y, qq2$y)), | |
xlab="Cuantiles te贸ricos N(0, 1)", | |
ylab=as.character(input$variable1)) | |
points(qq2, pch=19, col="firebrick3") | |
# Para construir los qqplot | |
qqline(xx[[1]], col="deepskyblue3") | |
qqline(xx[[2]], col="firebrick3") | |
# Para incluir el valor P de Shapiro | |
shapi <- lapply(xx, shapiro.test) | |
leyenda <- c(paste("Valor P=", round(shapi[[1]]$p.value, 2)), | |
paste("Valor P=", round(shapi[[2]]$p.value, 2))) | |
legend("topleft", bty="n", | |
text.col=c("deepskyblue3", "firebrick3"), | |
legend=leyenda) | |
} | |
}) | |
output$statistic <- renderTable({ | |
inFile <- input$file1 | |
if(is.null(inFile)) | |
dt <- datos | |
else dt <- read.csv(inFile$datapath, header=input$header, sep=input$sep) | |
# Para eliminar obs con NA | |
dt <- na.omit(dt) | |
# Para obtener x y grupo | |
x <- dt[, input$variable1] | |
group <- dt[, input$variable2] | |
group <- as.factor(group) | |
xx <- split(x, group) # Lista con variable interes | |
resumen <- function(x) c(mean(x), var(x), length(x)) | |
res <- sapply(xx, resumen) | |
rownames(res) <- c("Media", "Varianza", "N煤mero de observaciones") | |
t(res) | |
}, rownames = TRUE, align="c", bordered = TRUE) | |
output$resul1 <- renderText({ | |
inFile <- input$file1 | |
if(is.null(inFile)) | |
dt <- datos | |
else dt <- read.csv(inFile$datapath, header=input$header, sep=input$sep) | |
# Para eliminar obs con NA | |
dt <- na.omit(dt) | |
# Para obtener x y grupo | |
x <- dt[, input$variable1] | |
group <- dt[, input$variable2] | |
group <- as.factor(group) | |
if (nlevels(group) != 2) { | |
paste0("La variable cualitativa \n que eligi贸 debe tener s贸lo \n 2 niveles.") | |
} | |
else { | |
xx <- split(x, group) | |
ph <- var.test(x=xx[[1]], y=xx[[2]], | |
alternative=input$h0, | |
ratio=1, | |
conf.level=input$alfa) | |
paste0('El estad铆stico de prueba es f0=', round(ph$statistic, 4), | |
' con un valor-P de ', round(ph$p.value, 2), '.') | |
} | |
}) | |
output$resul2 <- renderText({ | |
inFile <- input$file1 | |
if(is.null(inFile)) | |
dt <- datos | |
else dt <- read.csv(inFile$datapath, header=input$header, sep=input$sep) | |
dt <- na.omit(dt) # Para eliminar obs con NA | |
x <- dt[, input$variable1] | |
group <- dt[, input$variable2] | |
group <- as.factor(group) | |
if (nlevels(group) != 2) { | |
paste0("La variable cualitativa \n que eligi贸 debe tener s贸lo \n 2 niveles.") | |
} | |
else { | |
xx <- split(x, group) | |
ph <- var.test(x=xx[[1]], y=xx[[2]], | |
alternative=input$h0, | |
ratio=1, | |
conf.level=input$alfa) | |
intervalo <- paste("(", round(ph$conf.int[1], digits=4), | |
", ", | |
round(ph$conf.int[2], digits=4), | |
").", sep='') | |
paste0('El intervalo de confianza del ', 100*input$alfa, | |
'% para el cociente de varianzas poblacionales es ', | |
intervalo) | |
} | |
}) | |
}) |