Enunciado

Como sabemos, las medidas de dispersión y forma basan sus cálculos respecto a la media aritmética de los datos, sin embargo, suponga que ahora queremos calcular estos resúmenes numéricos respecto a la mediana. Con este antecedente, cree un R-función propia llamada descriptivos cuyos inputs son:

Los outputs que debe generar esta función son los siguientes:

  1. Una lista que contenga en cada elemento:
  1. Dos gráficos

Nota importante: Todos los cálculos en los que corresponda, se deben realizar dividiendo para n y no para n-1. Tenga en cuenta que tanto para la varianza como para la simetría y curtosis, no se deben usar las funciones que existen por defecto en R, puesto que estas realizan el cálculo dividiendo las sumatorias para “n-1” en lugar de “n” Un ejemplo de la salida que debe proporcionar la función es:

descriptivos<- function(x, na.rm = FALSE,central) {
  if (central== "media") {
  n<-length(x)-sum(is.na(x))
  media<-sum(x,na.rm=na.rm)/n
  
  VAR<-sum(((x[!is.na(x)])-mean(x,na.rm=na.rm))^2)/n
  DES<-sqrt(VAR)
  COE<-DES/media
  bx <- boxplot(x, plot = FALSE)
  ASI<-sum(((x[!is.na(x)])-mean(x,na.rm=na.rm))^3)/(n*DES^3)
  CUR<-sum(((x[!is.na(x)])-mean(x,na.rm=na.rm))^4)/(n*DES^4)-3
  par(mfrow=c(1, 2))
  boxplot(x)
  hist(x)
  return(list(T.central=c("media"=media),Dispersion=c("Varianza"=VAR,
                                                      "D.estandar"=DES,
                                                      "C.V."=COE),
              Posicion=c("min"=bx$stats[1],"C1"=bx$stats[2],
                         "C2"=bx$stats[3],"C3"=bx$stats[4],"max"=bx$stats[5],
                         "n.atip"=length(bx$out)),
              Forma=c("Simetria"=ASI,"Curtosis"=CUR)))
  
  }else{
    if(central=="mediana" ) {
      n<-length(x)-sum(is.na(x))
      mediana<-median(x,na.rm = na.rm)
      
      VAR<-sum(((x[!is.na(x)])-mediana)^2)/n
      DES<-sqrt(VAR)
      COE<-DES/mediana
      bx <- boxplot(x, plot = FALSE)
      ASI<-sum(((x[!is.na(x)])-mediana)^3)/(n*(DES^3))
      CUR<-sum(((x[!is.na(x)])-mediana)^4)/(n*(DES^4))-3
      
      return(list(T.central=c("mediana"=mediana),
                  Dispersion=c("Varianza"=VAR
                                                              ,"D.estandar"=DES,"C.V."=COE),
                  Posicion=c("min"=bx$stats[1],"C1"=bx$stats[2],
                             "C2"=bx$stats[3],"C3"=bx$stats[4],
                             "max"=bx$stats[5],"n.atip"=length(bx$out)),
                  Forma=c("Simetria"=ASI,"Curtosis"=CUR)))
      
    } else{
      warning("ingrese solo la palabra media o mediana")
    }  
    
    
  }
}
data<- c(1.60, 1.25, 0.19, 0.88, 2.16, 1.72, 1.19, 1.14, 0.19, 1.34, 2.05,
       0.58, 0.48, 1.06, 3.24, 1.24, NA, 1.33, 1.21, 5.09, 0.76, NA)
descriptivos(x=data,na.rm = FALSE,central = "media")
## $T.central
## media 
##    NA 
## 
## $Dispersion
##   Varianza D.estandar       C.V. 
##         NA         NA         NA 
## 
## $Posicion
##    min     C1     C2     C3    max n.atip 
##  0.190  0.820  1.225  1.660  2.160  2.000 
## 
## $Forma
## Simetria Curtosis 
##       NA       NA
descriptivos(x=data,na.rm = TRUE,central = "media")

## $T.central
## media 
## 1.435 
## 
## $Dispersion
##   Varianza D.estandar       C.V. 
##  1.1783350  1.0855114  0.7564539 
## 
## $Posicion
##    min     C1     C2     C3    max n.atip 
##  0.190  0.820  1.225  1.660  2.160  2.000 
## 
## $Forma
## Simetria Curtosis 
## 1.930854 4.058655
descriptivos(x=data,na.rm = TRUE,central = "mediana")
## $T.central
## mediana 
##   1.225 
## 
## $Dispersion
##   Varianza D.estandar       C.V. 
##  1.2224350  1.1056378  0.9025615 
## 
## $Posicion
##    min     C1     C2     C3    max n.atip 
##  0.190  0.820  1.225  1.660  2.160  2.000 
## 
## $Forma
## Simetria Curtosis 
## 2.383420 5.156789
descriptivos(x=data,na.rm = TRUE,central = "moda")
## Warning in descriptivos(x = data, na.rm = TRUE, central = "moda"): ingrese solo
## la palabra media o mediana