Spaces:
Sleeping
Sleeping
| source("dWALD.R") | |
| source("WALD.R") | |
| source("dExWALD.R") | |
| source("ExWALD.R") | |
| library(shiny) | |
| library(MASS) | |
| library(gamlss) | |
| shinyServer(function(input, output) { | |
| datos_reactivo <- reactive({ | |
| req(input$datos) | |
| datos_char <- unlist(strsplit(input$datos, ",")) | |
| datos_num <- as.numeric(trimws(datos_char)) | |
| datos_num <- datos_num[!is.na(datos_num)] | |
| if(length(datos_num) == 0) { | |
| return(NULL) | |
| } else { | |
| return(datos_num) | |
| } | |
| }) | |
| output$histograma <- renderPlot({ | |
| datos <- datos_reactivo() | |
| req(datos) | |
| dist_sel <- input$dist | |
| #par(mfrow=c(2, 1)) | |
| hist(datos, probability = TRUE, col = "white", | |
| main = paste("Histogram and estimated density assuming", dist_sel), | |
| xlab = "RT") | |
| x_seq <- seq(min(datos), max(datos), length.out = 200) | |
| # Estimation y curva según distribución elegida | |
| if(dist_sel == "Normal") { | |
| fit <- gamlss(datos~1, family=NO) | |
| mu <- coef(fit, what="mu") | |
| sigma <- exp(coef(fit, what="sigma")) | |
| y <- dNO(x_seq, mu = mu, sigma = sigma) | |
| lines(x_seq, y, col = "steelblue2", lwd=3) | |
| legend("topright", bty="n", | |
| legend="Estimated density", | |
| lwd=3, col="steelblue2") | |
| } else if(dist_sel == "exGAUS") { | |
| # Ajuste con fitdistr | |
| fit <- tryCatch({ | |
| mod <- gamlss(datos~1, family=exGAUS, | |
| control=gamlss.control(n.cyc=5000, trace=TRUE)) | |
| }, error = function(e) NULL) | |
| if(!is.null(fit)) { | |
| mu <- coef(fit, what="mu") | |
| sigma <- exp(coef(fit, what="sigma")) | |
| nu <- exp(coef(fit, what="nu")) | |
| y <- dexGAUS(x_seq, mu=mu, sigma=sigma, nu=nu) | |
| lines(x_seq, y, col = "steelblue2", lwd=3) | |
| legend("topright", bty="n", | |
| legend="Estimated density", | |
| lwd=3, col="steelblue2") | |
| } | |
| } else if(dist_sel == "WALD") { | |
| # Ajuste con fitdistr | |
| fit <- tryCatch({ | |
| mod <- gamlss(datos~1, family=WALD, | |
| control=gamlss.control(n.cyc=5000, trace=TRUE)) | |
| }, error = function(e) NULL) | |
| if(!is.null(fit)) { | |
| mu <- exp(coef(fit, what="mu")) | |
| sigma <- exp(coef(fit, what="sigma")) | |
| y <- dWALD(x_seq, mu=mu, sigma=sigma) | |
| lines(x_seq, y, col = "steelblue2", lwd=3) | |
| legend("topright", bty="n", | |
| legend="Estimated density", | |
| lwd=3, col="steelblue2") | |
| } | |
| } else if(dist_sel == "ExWALD") { | |
| fit <- tryCatch({ | |
| fit <- gamlss(datos~1, family=ExWALD, | |
| control=gamlss.control(n.cyc=5000, trace=TRUE)) | |
| }, error = function(e) NULL) | |
| if(!is.null(fit)) { | |
| mu <- exp(coef(fit, what="mu")) | |
| sigma <- exp(coef(fit, what="sigma")) | |
| nu <- exp(coef(fit, what="nu")) | |
| y <- dExWALD(x_seq, mu=mu, sigma=sigma, nu=nu) | |
| lines(x_seq, y, col = "steelblue2", lwd=3) | |
| legend("topright", bty="n", | |
| legend="Estimated density", | |
| lwd=3, col="steelblue2") | |
| } | |
| } | |
| # To plot the residual analysis | |
| #plot(fit) | |
| }) | |
| output$parametros <- renderTable({ | |
| datos <- datos_reactivo() | |
| req(datos) | |
| dist_sel <- input$dist | |
| if(dist_sel == "Normal") { | |
| mu <- mean(datos) | |
| sigma <- sd(datos) | |
| data.frame( | |
| Parameter = c("μ", "σ", | |
| "Sample mean", "Sample standard deviation"), | |
| Estimation = c(mu, sigma, mean(datos), sd(datos)) | |
| ) | |
| } else if(dist_sel == "exGAUS") { | |
| fit <- tryCatch({ | |
| mod <- gamlss(datos~1, family=exGAUS, | |
| control=gamlss.control(n.cyc=5000, trace=TRUE)) | |
| }, error = function(e) NULL) | |
| if(!is.null(fit)) { | |
| mu <- coef(fit, what="mu") | |
| sigma <- exp(coef(fit, what="sigma")) | |
| nu <- exp(coef(fit, what="nu")) | |
| data.frame( | |
| Parameter = c("μ", "σ", "ν", | |
| "Sample mean", "Sample standard deviation"), | |
| Estimation = c(mu, sigma, nu, mean(datos), sd(datos)) | |
| ) | |
| } else { | |
| data.frame( | |
| Parameter = "Error", | |
| Estimation = "We cannot fit WALD" | |
| ) | |
| } | |
| } else if(dist_sel == "WALD") { | |
| fit <- tryCatch({ | |
| mod <- gamlss(datos~1, family=WALD, | |
| control=gamlss.control(n.cyc=5000, trace=TRUE)) | |
| }, error = function(e) NULL) | |
| if(!is.null(fit)) { | |
| mu <- exp(coef(fit, what="mu")) | |
| sigma <- exp(coef(fit, what="sigma")) | |
| data.frame( | |
| Parameter = c("μ", "σ", | |
| "Sample mean", "Sample standard deviation"), | |
| Estimation = c(mu, sigma, mean(datos), sd(datos)) | |
| ) | |
| } else { | |
| data.frame( | |
| Parameter = "Error", | |
| Estimation = "We cannot fit WALD" | |
| ) | |
| } | |
| } else if(dist_sel == "ExWALD") { | |
| fit <- tryCatch({ | |
| fit <- gamlss(datos~1, family=ExWALD, | |
| control=gamlss.control(n.cyc=5000, trace=TRUE)) | |
| }, error = function(e) NULL) | |
| if(!is.null(fit)) { | |
| mu <- exp(coef(fit, what="mu")) | |
| sigma <- exp(coef(fit, what="sigma")) | |
| nu <- exp(coef(fit, what="nu")) | |
| data.frame( | |
| Parameter = c("μ", "σ", "ν", | |
| "Sample mean", "Sample standard deviation"), | |
| Estimation = c(mu, sigma, nu, mean(datos), sd(datos)) | |
| ) | |
| } else { | |
| data.frame( | |
| Parameter = "Error", | |
| Estimation = "We cannot fit ExWALD" | |
| ) | |
| } | |
| } | |
| }) | |
| }) | |