############################################# ### Cálculo de todas las medidas de posición y de dispersión con R ############################################# datos <- c(3.4 , 5.6 , 7 , 8.25 , 9.3, 2.854, 4.578) datos length(datos) mean(datos) median(datos) sort(datos) datos <- c(1, 2, 3, 5) datos median(datos) datos <- sample( 3:10, 50, replace = TRUE) datos table(datos) sort( table(datos), decreasing=TRUE ) sort(datos) datos.bimodal <- c(1,1,1,2,2,2,2,3,3,4,4,5,5,5,5) datos.bimodal sort( table(datos.bimodal), decreasing=TRUE ) datos alfa <- 0.6 quantile( datos , alfa ) alfa <- 0.9 quantile( datos , alfa ) summary(datos) n <- length(datos) true.var <- sum(datos^2)/n-mean(datos)^2 true.sd <- sqrt(true.var) true.cv <- true.sd/mean(datos) cat("El recorrido es :",max(datos)-min(datos),"\n","\n") cat("El recorrido intercuartílico es :",IQR(datos),"\n","\n") cat("La varianza es :",true.var,"\n","\n") cat("La cuasivarianza es :",var(datos),"\n","\n") cat("La desviación típica es :",true.sd,"\n","\n") cat("La cuasidesviación típica es :",sd(datos),"\n","\n") cat("El coeficiente de variación es :",true.cv,"\n","\n") cat("El cuasicoeficiente de variación es :",sd(datos)/mean(datos),"\n","\n") ## var(datos) sd(datos) ############################################# ### Descriptiva para variables NOMINALES ############################################# #almacenar los valores de la variable separados por comas Red <- c( "Twitter", "Otras", "WhatApp", "WhatApp", "Instagram", "Otras", "WhatApp", "Instagram", "WhatApp", "WhatApp", "Otras", "Otras", "Otras" , "Twitter", "WhatApp", "Instagram", "WhatApp", "WhatApp", "Otras" , "WhatApp", "Facebook", "WhatApp", "WhatApp", "WhatApp", "Twitter", "Otras", "Instagram", "Facebook", "Twitter", "WhatApp", "Twitter", "Facebook", "WhatApp", "Otras", "Otras", "WhatApp", "WhatApp", "Twitter", "Facebook", "Facebook", "Twitter", "Otras", "WhatApp", "Facebook", "Otras", "Instagram", "WhatApp", "Otras", "Twitter", "Otras", "WhatApp", "Twitter", "Otras", "Twitter", "Facebook", "WhatApp", "Twitter", "WhatApp", "Facebook", "Twitter", "WhatApp", "Twitter", "Facebook", "Facebook", "Twitter", "WhatApp", "Twitter", "WhatApp", "WhatApp", "Otras" ) table(Red) #tabla de frecuencias absolutas prop.table(table(Red)) #tabla de frecuencias relativas barplot(table(Red), xlab="Red", ylab="Frecuencia") #grafico de barras pie(table(Red)) #grafico sectores ############################################# ### Descriptiva para variables NUMÉRICAS ############################################# x <- c( 0.88, 1.03, 1.11, 0.77, 1.04, 1.05, 0.94, 0.95, 0.94, 0.91, 0.95, 0.90, 0.92, 1.01, 1.10, 0.99, 0.95, 0.91, 0.92, 1.24, 1.01, 0.95, 0.96, 1.05, 0.93, 0.86, 1.06, 0.90, 1.00, 0.91 ) #almacena los valores de la variable hist(x,plot=FALSE) #tabla frecuencias hist(x) #histograma boxplot(x) mean(x) #media aritmetica median(x) #mediana quantile(x,0.5) #segundo cuartil quantile(x,0.25) #primer cuartil quantile(x,0.75) #tercer cuartil quantile(x,0) #minimo quantile(x,1) #maximo quantile(x,0.33) #percentil 33 quantile(x, c(0, 0.25, 0.5, 0.75, 1)) #varios percentiles max(x) #maximo min(x) #minimo max(x)-min(x) #rango quantile(x,0.75) - quantile(x,0.25) #rango intercuartilico var(x) #CUASIvarianza sd(x) #CUASIdesviacion tipica sd(x)/mean(x) #CUASIcoeficiente variacion ############################################# ### Práctica 1 - Ejercicio 1 ############################################# ### La siguiente función calcula la Moda (si hay varias, da la menor de ellas) Mode <- function(x) { ux <- unique(x) ux[which.max(tabulate(match(x, ux)))] } ### a) datos <- c(142, 120 , 122 , 116 , 140 , 118 , 132 , 112 , 128 , 132 , 134 , 118 , 128 , 110 , 108 , 140 , 118 , 94 , 108 , 132) length(datos) cat("La media es :",mean(datos),"\n\n") cat("La mediana es :",median(datos),"\n\n") cat("La moda es :",Mode(datos),"\n\n") alfa <- 0.6 quantile( datos , alfa ) alfa <- 0.9 quantile( datos , alfa ) cat("El primer cuartil es :",quantile(datos,0.25),"\n\n") cat("El segundo cuartil (mediana) es :",quantile(datos,0.5),"\n\n") cat("El tercer cuartil es :",quantile(datos,0.75),"\n\n") summary(datos) n <- length(datos) true.var <- sum(datos^2)/n-mean(datos)^2 true.sd <- sqrt(true.var) true.cv <- true.sd/mean(datos) cat("El recorrido es :",max(datos)-min(datos),"\n","\n") cat("El recorrido intercuartílico es :",IQR(datos),"\n","\n") cat("La varianza es :",true.var,"\n","\n") cat("La cuasivarianza es :",var(datos),"\n","\n") cat("La desviación típica es :",true.sd,"\n","\n") cat("La cuasidesviación típica es :",sd(datos),"\n","\n") cat("El coeficiente de variación es :",true.cv,"\n","\n") cat("El cuasicoeficiente de variación es :",sd(datos)/mean(datos),"\n","\n") var(datos) sd(datos) ### b) Este apartado se resolverá más adelante ### c) table(datos) ### Ordena la tabla por sus frecuencias absolutas en orden decreciente sort( table(datos), decreasing=TRUE ) ### Amplía la tabla con frecuencias relativas y acumuladas tabla <- as.data.frame(table(datos));tabla; tabla <- transform(tabla, FreqAc = cumsum(Freq), FreqRel = round( prop.table(Freq), 3 ), FreqRelAc = round( cumsum(prop.table(Freq)), 3 ) );tabla; ### d) hist(datos, breaks = 5, main = "Estudio de la presión sanguínea sistólica", xlab = "Presión", ylab = "Frecuencia (absoluta)", col = "red") hist(datos, breaks = 5, freq = FALSE, main = "Estudio de la presión sanguínea sistólica", xlab = "Presión", ylab = "Frecuencia (absoluta)", col = "royalblue") boxplot(datos) boxplot(datos, main = "Estudio de la presión sanguínea sistólica", ylab = "Presión sistólica",col = "royalblue") ############################################# ### Práctica 1 - Ejercicio 2 ############################################# ### Práctica 1 - Ejercicio 2 ### a) Edad <- c("Anciano","Joven","Niño","Joven","Adulto","Adulto","Joven","Niño","Anciano","Anciano","Adulto","Anciano","Joven","Adulto","Anciano","Joven","Anciano","Niño","Anciano","Adulto");Edad; length(Edad) table(Edad) Grupo <- c("A","B","0","A","A","0","0","0","B","A","A","A","AB","0","B","0","A","A","0","0");Grupo; length(Grupo) table(Grupo) ### b) etiquetas <- c("Adulto", "Anciano", "Joven", "Niño") FreqAbs <- c(5, 7, 5, 3) n <- sum(FreqAbs); n FreqRel <- round(FreqAbs/n,3); FreqRel FreqRel100 <- round(FreqRel*100,1); FreqRel100 barplot(FreqRel100, names.arg=etiquetas) #### Diagrama de rectángulos pie(FreqRel,etiquetas) #### Diagrama de sectores ### Hacer lo mismo con la variable Edad ### c) ftable(Edad,Grupo) ############################################# ### FUNCIÓN sigma.test PARA USAR EN R ############################################# sigma.test <- function (x, sigma = 1, sigmasq = sigma^2, alternative = c("two.sided", "less", "greater"), conf.level = 0.95, ...) { alternative <- match.arg(alternative) sigma <- sqrt(sigmasq) n <- length(x) xs <- var(x)*(n-1)/sigma^2 out <- list(statistic = c("X-squared" = xs)) class(out) <- "htest" out$parameter <- c(df = n-1) minxs <- min(c(xs, 1/xs)) maxxs <- max(c(xs, 1/xs)) PVAL <- pchisq(xs, df = n - 1) out$p.value <- switch(alternative, two.sided = 2*min(PVAL, 1 - PVAL), less = PVAL, greater = 1 - PVAL) out$conf.int <- switch(alternative, two.sided = xs * sigma^2 * 1/c(qchisq(1-(1-conf.level)/2, df = n-1), qchisq((1-conf.level)/2, df = n-1)), less = c(0, xs * sigma^2 / qchisq(1-conf.level, df = n-1)), greater = c(xs * sigma^2 / qchisq(conf.level, df = n-1), Inf)) attr(out$conf.int, "conf.level") <- conf.level out$estimate <- c("var of x" = var(x)) out$null.value <- c(variance = sigma^2) out$alternative <- alternative out$method <- "One sample Chi-squared test for variance" out$data.name <- deparse(substitute(x)) names(out$estimate) <- paste("var of", out$data.name) return(out)}