1 Presentación

  1. El Curso tiene como objetivo introducir al estudiante al lenguaje de programación R, para realizar análisis estadísticos.

  2. Además de la instalación del R se va a instalar RStudio, el cual es un entorno de desarrollo integrado (IDE) que hace más fácil la manipulación de código de R.

  3. Una vez instalado R y RStudio, se dará una introducción a varios temas estadísticos, y se mostrará como trabajar con R.

2 Descarga e instalación de R y RStudio

La página oficial del software estadístico R es : https://www.r-project.org/

Antes de realizar la instalación del R, ir a Sistema del equipo de Computo y verificar el número de bits que se tiene 64 0 32, ya que este dato se pregunta durante la instalación de R.

La instalación de R, RTools y RStudio, se realiza en el siguiente orden:

  1. Instalar R versión 4.2.1 para Windows: https://cran.r-project.org/bin/windows/base/

  2. Instalar RTools versión 4.2: https://cran.r-project.org/bin/windows/Rtools/

  3. Instalar RStudio: https://rstudio.com/products/rstudio/download/

Nota:

  • Rtools es un paquete de cadena de herramientas que se utiliza para compilar paquetes R desde el origen (aquellos que necesitan compilación de código C/C++ o Fortran) y para compilar R en sí.

  • Cuando se utiliza la ubicación de instalación predeterminada, R y Rtools42 se pueden instalar en cualquier orden y Rtools42 se puede instalar cuando R ya se está ejecutando

3 Importancia, ventajas y desventaja del software R

  1. R es un lenguaje de programación y de distribución libre que funciona en los sistemas operativos de Linux, Windows, Macintosh y Unix.

  2. R fue creado en \(1992\) en Nueva Zelanda por Ross Ihaka y Robert Gentleman. Para ello decidieron adoptar la sintaxis del lenguaje S desarrollado por Bell Laboratories. Cabe mencionar que John Chambers y colaboradores en Laboratorios Bell (AT&T), actualmente Lucent Tecnologies, desarrollaron el lenguaje S en 1976.

  3. En R se pueden crear y manipular objetos; objetos que pueden ser funciones o bases de datos, entre otros.

  4. R es un ambiente que se presta para usar las funciones que han creado otros usuarios, y también para crear las propias.

  5. Básicamente R se compone de un conjunto de paquetes, los cuales deben de ser descargados e instados en R. Dentro de los paquetes se encuentran funciones y bases de datos con los cuales se pueden trabajar. Como usuario de R, uno descarga e instala los paquetes que necesita para realizar el análisis estadístico que necesita.

  6. Cuando se instala R, el usuario ya dispone de un conjunto de paquetes y con ello una gran variedad de funciones para realizar análisis estadísticos básicos. Además de los paquetes precargados el usuario puede disponer de más funciones en el siguiente enlace: http://www.r-project.org.

  7. En el siguiente enlace se encuentra una lista de varios paquetes que pueden ser descargados e instalados en R:

http://web.archive.org/web/20160415144236/https://cran.r-project.org/web/views/

3.1 Ventajas

Ventajas que se tienen al utilizar R, como lenguaje de programación:

  1. Es un programa con código totalmente libre.

  2. Almacenamiento y manipulación de los objetos como vectores, matrices, data frames, listas, funciones, bases de datos, etc.

  3. Es la herramienta más barata y de fácil acceso en estadística.

  4. Se puede realizar cualquier tipo de análisis estadístico, así modelación, manipulación de grandes bases de datos y generación de gráficos, entre otros.

  5. Las contribuciones de los usuarios, hacen de R una herramienta cada vez más completa y potente. Dichas contribuciones se encuentra disponibles en: http://cran.r-project.org/bin/windows/contrib/

4 Introducción al lenguaje de programación R

Importente:

  • Las líneas de código generalmente se escriben en un script.

  • Las líneas en un script se comentan con el símbolo de #

  • Una vez que se crea un objeto (es decir, se le da un nombre) en R, es muy importante llamarlo con el nombre que se le dio, exactamente igual; ya que de lo contrario R nos dirá que el objeto que estamos llamando aún no ha sido definido.

  • Todo paréntesis, corchete o llave que se abra, se debe de cerrar, es decir, (), [], {}; de lo contrario R marcará error cuando se compile el código.

  • Al guardar un scrip se selecciona la codificación UTF-8, ya que hay acentos en el código.

Con la función searc() se muestran los paquetes cargados al R:

consultar los paquetes cargados con la función

search()
:)   [1] ".GlobalEnv"        "package:prettydoc" "package:writexl"  
:)   [4] "package:readxl"    "package:agricolae" "package:prettyR"  
:)   [7] "package:forcats"   "package:stringr"   "package:dplyr"    
:)  [10] "package:purrr"     "package:readr"     "package:tidyr"    
:)  [13] "package:tibble"    "package:ggplot2"   "package:tidyverse"
:)  [16] "package:DescTools" "package:DT"        "package:tinytex"  
:)  [19] "package:knitr"     "package:stats"     "package:graphics" 
:)  [22] "package:grDevices" "package:utils"     "package:datasets" 
:)  [25] "package:methods"   "Autoloads"         "package:base"

Por ejemplo, veamos los objetos del paquete MASS:

library(help=MASS)  # Muestra todos los objetos que están en el paquete MASS

4.1 Formas de pedir ayuda en R

En el R existe varias formas para pedir ayuda en la instalación de paquetes, manejo de funciones, creación y manejo de objetos.

Para pedir ayuda con la función mean(), la cual calcula el promedio de una variable, se tienen las siguientes opciones:

?mean
help(mean)
help.search("mean") # Realiza una búsqueda más general

Para pedir ayuda sobre un símbolo matemático:

?"+"

Para pedir ayuda sobre la función for():

?"for"

Busca ayuda el internet:

RSiteSearch("powerTransform")
:)  A search query has been submitted to https://search.r-project.org
:)  The results page should open in your browser shortly

Otra función de utilidad es find(), la cual devuelve la ubicación en donde se pueden encontrar los objetos que se buscan.

find("mean")    # Indica en que paquete se encuentra la función mean()

4.2 Instalación de paquetes

Para hacer uso de un paquete que aún no se encuentra instalado en R; primero se debe descargar y luego activar. Para esto se usan dos funciones: install.packages() y library(). Por ejemplo vamos a descargar y luego a activar el paquete readxl para leer bases de datos desde excel.

install.packages("readxl", dependencies = TRUE) # Instalación del paquete  readxl
library("readxl") # Activación del paquete readxl

Objetos que se encuentra en el paquete readxl:

library(help=readxl)

Instalar los siguiente paquetes:

  • dplyr
install.packages("dplyr") 
library("dplyr")
  • prettyR
install.packages("prettyR") 
library("prettyR")          # Para la función describe() y Mode()

library(help=prettyR)
  • tidyverse
install.packages("tidyverse")  
library("tidyverse")   # Paquete necesario para el uso de %>%

Ahora que ya sabemos instalar paquetes, se puede instalar el paquete sos y utilizar la función findFn() para realizar la búsqueda sobre algún tópico de estadística en el internet.

install.packages("sos")
library("sos")

findFn("regresion models")  # Busca en el internet los paquetes que tienen funciones que realizan regresión lineal.

Funciones de utilidad en la instalación de paquetes:

  • Función para actualizar paquetes: update.packages()

  • Función para remover paquetes: remove.packages()

  • Para verificar si el paquete tinytex está instalado: tinytex:::is_tinytex()

Importante:

  • La instalación de los paquetes, install.packages(), se realiza solo una vez en R. Por esta razón se recomienda que una vez instalado un paquete, se comente esa línea de código con el símbolo de #.

  • La activación de los paquetes, library(), se realiza siempre que se abre el script de trabajo, y al inicio de la sesión de trabajo.

Otra forma de instalar un paquete en R, es utilizando la función install_github() del paquete remotes.

install.packages("remotes")   # Instalación del paquete remotes
library("remotes")            # Activación del paquete remotes

Objetos del paquete remotes:

library(help=remotes)

Instalación del paquete ggplot2 con la función install_github():

install_github("tidyverse/ggplot2")   # Instalación del paquete ggplot2
library("ggplot2")                    # Activación del paquete ggplot2

El paquete ggplot2 es de mucha utilidad para la elaboración de gráficos.

Funciones de utilidad en R:

  • Funciones que dan información de R: sesionInfo(), Sys.getenv() y vertion().

  • Función que indica como citar al software R: citation.

4.3 Manejo de objetos en R

En la creación y manipulación de objetos es importante considerar los siguientes puntos:

  • Una vez que se asigna un nombre a un objeto creado, ese objeto debe de ser llamado con dicho nombre.

  • Los objetos definidos en los paquetes instalados, deben de ser llamados con dicho nombre. Cuando haya conflictos de nombres, siempre podemos usar la siguiente sintaxis para evitar el conflicto: nombre_Paquete::objeto.

4.3.1 Vectores

La función c() nos permite concatenar datos, generando con esto un vector.

x<-c(2,4,6,8,10)    # c concatena números o letras.
y<-c(1,3,5,7,9)

x    # Se muestran los elementos asignados al objeto x
:)  [1]  2  4  6  8 10
y    # Se muestran los elementos asignados al objeto y
:)  [1] 1 3 5 7 9
# Suma: a+b
x+y
:)  [1]  3  7 11 15 19
# Resta:    a-b
x-y
:)  [1] 1 1 1 1 1
#Multiplicación:    a∗b
x*y
:)  [1]  2 12 30 56 90
#División a/b
x/y
:)  [1] 2.000000 1.333333 1.200000 1.142857 1.111111
# Potencia: a^b
x^y
:)  [1]          2         64       7776    2097152 1000000000
# Raíz cuadrada:    sqrt()
sqrt(x)
:)  [1] 1.414214 2.000000 2.449490 2.828427 3.162278

Las funciones cumsum(), cumprod(), cummax() y cummin() regresan un vector que es el resultado de la suma, producto, mínimo y máximo de un vector dado.

x<-c(1,2,5)  # Vector


diff(x)     # diferencia entre elementos
:)  [1] 1 3
cumsum(x)   # suma acumulada
:)  [1] 1 3 8
cumprod(x)  # producto acumulado
:)  [1]  1  2 10
cummax(x)   # máximo del vector
:)  [1] 1 2 5
cummin(x)   # mínimo del vector
:)  [1] 1 1 1

4.3.2 Data frame

Creación de un objeto del tipo data.frame:

x1<-c(12,24,34,13,16,18,20,18,19,21)             # Se concatenan números

x2<-c(50,34,67,60,50,60,70,72,59,50)             # Se concatenan números

x3<-c("M","H","M","M","H","M","M","M","H","M")   # Se concatenan letras

datos<-data.frame(Edad=x1,Peso=x2, Sexo=x3)      # Se crea un objeto del tipo data.frame
kable(datos, caption = "Base de datos")
Base de datos
Edad Peso Sexo
12 50 M
24 34 H
34 67 M
13 60 M
16 50 H
18 60 M
20 70 M
18 72 M
19 59 H
21 50 M

La función attributes() muestra los nombres de las variables, el tipo de objeto creado y el número de renglones.

attributes(datos)
:)  $names
:)  [1] "Edad" "Peso" "Sexo"
:)  
:)  $class
:)  [1] "data.frame"
:)  
:)  $row.names
:)   [1]  1  2  3  4  5  6  7  8  9 10

La función str() muestra: el tipo de objeto creado, las dimensiones del objeto, los numbres de las variables y el tipo de variables.

str(datos)
:)  'data.frame':   10 obs. of  3 variables:
:)   $ Edad: num  12 24 34 13 16 18 20 18 19 21
:)   $ Peso: num  50 34 67 60 50 60 70 72 59 50
:)   $ Sexo: chr  "M" "H" "M" "M" ...

La función class() indica de qué tipo es el objeto creado:

class(datos)
:)  [1] "data.frame"

La función dim muestra la dimensión del objeto creado:

dim(datos)  # La función dim() se utiliza con objetos del tipo data.frame
:)  [1] 10  3

Funciones para ver la parte inicial y final de una base de datos:

head(datos)  # Muestra la parte inicial del data.frame
:)    Edad Peso Sexo
:)  1   12   50    M
:)  2   24   34    H
:)  3   34   67    M
:)  4   13   60    M
:)  5   16   50    H
:)  6   18   60    M
tail(datos)  # Muestra la parte final del objeto data.frame
:)     Edad Peso Sexo
:)  5    16   50    H
:)  6    18   60    M
:)  7    20   70    M
:)  8    18   72    M
:)  9    19   59    H
:)  10   21   50    M

Formas de tener acceso a la variable edad:

datos$Edad
:)   [1] 12 24 34 13 16 18 20 18 19 21
datos[,1]
:)   [1] 12 24 34 13 16 18 20 18 19 21

Formas de tener acceso al primer valor de la variable edad:

datos$Edad[1]
:)  [1] 12
datos[1,1]
:)  [1] 12

Formas de tener acceso a un conjunto de valores de la variable edad

datos[1:3,1]   # Muestra los primeros tres valores de la variable edad
:)  [1] 12 24 34
datos[c(1,5),1] # Muestra el primer valor y el quinto valor de la variable edad
:)  [1] 12 16

4.4 Resumen de funciones

  • ls(): Lista todos los objetos del espacio de trabajo local en R.

  • rm(): Remueve objetos en una sesión de trabajo.

  • rm(list=ls()): Elimina todos los objetos creados en una sesión de trabajo.

  • attributes(): Atributos del objeto

  • str(): Atributos del objeto

  • class(): Tipo de objeto

  • View(): Visualizar una base de datos

5 Importar datos desde excel

Funciones para importar archivos desde excel:

  • Función read.csv() del paquete utils, archivo limitado por comas

  • Función read_excel() del paquete readxl

  • Función read.xlsx() del paquete xlsx

  • Función read.xlsx() del paquete openxlsx

La función args() muestra los argumentos de la función read_excel():

args(read_excel) 
:)  function (path, sheet = NULL, range = NULL, col_names = TRUE, 
:)      col_types = NULL, na = "", trim_ws = TRUE, skip = 0, n_max = Inf, 
:)      guess_max = min(1000, n_max), progress = readxl_progress(), 
:)      .name_repair = "unique") 
:)  NULL

En el caso de los dos primeros argumentos de read_excel(): + path es el argumento que especifica la ruta en donde se encuentra el archivo de excel.

  • sheet es el argumento para indicar el número de la hoja del archivo de excel, con la que se va a trabajar.

Con la función read_excel() se va a importar el archivo “Variables_agricolas.xlsx” desde excel a R, y se va a crear el objeto “dat_variables”.

dat_variables<-read_excel("C:/Documetos MGM_OS_Dell/Documentos Maria_Dell/UAGro/Cursos_Taller_Impartidos/Curso-Taller_DGETA_2022/Variables_agricolas.xlsx")
class(dat_variables) #tbl es tabla
:)  [1] "tbl_df"     "tbl"        "data.frame"
View(dat_variables)   # Muestra la base de datos importada dat_variables

Base de datos importada a R:

head(dat_variables)
:)  # A tibble: 6 × 24
:)     Anio Idestado Nomestado Idddr Nomddr Idcader Nomcader Idmun…¹ Nommu…² Idciclo
:)    <dbl>    <dbl> <chr>     <dbl> <chr>    <dbl> <chr>      <dbl> <chr>     <dbl>
:)  1  2020       12 Guerrero     53 Atoyac       1 Técpan …      57 Técpan…       3
:)  2  2020       12 Guerrero     53 Atoyac       1 Técpan …      57 Técpan…       3
:)  3  2020       12 Guerrero     53 Atoyac       1 Técpan …      57 Técpan…       3
:)  4  2020       12 Guerrero     53 Atoyac       4 La Unión      68 La Uni…       3
:)  5  2020       12 Guerrero     53 Atoyac       4 La Unión      68 La Uni…       3
:)  6  2020       12 Guerrero     53 Atoyac       5 Petatlán      38 Zihuat…       3
:)  # … with 14 more variables: Nomcicloproductivo <chr>, Idmodalidad <dbl>,
:)  #   Nommodalidad <chr>, Idunidadmedida <dbl>, Nomunidad <chr>, Idcultivo <dbl>,
:)  #   Nomcultivo.Sin.Um <chr>, Sembrada <dbl>, Cosechada <dbl>,
:)  #   Siniestrada <dbl>, Volumenproduccion <dbl>, Rendimiento <dbl>,
:)  #   Precio <dbl>, Valorproduccion <dbl>, and abbreviated variable names
:)  #   ¹​Idmunicipio, ²​Nommunicipio
:)  # ℹ Use `colnames()` to see all variable names

6 Tipos de variables

Según su escala de medición:

  • Nominal: dicotómicas, politómicas (No existe orden en las categorías)

  • Ordinal (Existe orden en las categorías)

  • Métrica

    • De intervalo

    • De razón

Según el número de valores que contiene:

  • Continua (Números reales)

  • Discreta (Números enteros)

Según su papel en la investigación:

  • Independiente

  • Dependiente

Base de datos iris: This famous iris data set gives the measurements in centimeters of the variables sepal length and width and petal length and width, respectively, for 50 flowers from each of 3 species of iris. The species are Iris setosa, versicolor, and virginica.

data(iris)

attributes(iris)
:)  $names
:)  [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"     
:)  
:)  $class
:)  [1] "data.frame"
:)  
:)  $row.names
:)    [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
:)   [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
:)   [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
:)   [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
:)   [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
:)   [91]  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108
:)  [109] 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
:)  [127] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
:)  [145] 145 146 147 148 149 150
class(iris)
:)  [1] "data.frame"
dim(iris)
:)  [1] 150   5

Base de datos iris:

head(iris)
:)    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
:)  1          5.1         3.5          1.4         0.2  setosa
:)  2          4.9         3.0          1.4         0.2  setosa
:)  3          4.7         3.2          1.3         0.2  setosa
:)  4          4.6         3.1          1.5         0.2  setosa
:)  5          5.0         3.6          1.4         0.2  setosa
:)  6          5.4         3.9          1.7         0.4  setosa

Nombre de las columnas del objeto iris:

colnames(iris)  # Nombre de las columnas del objeto iris
:)  [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"

Creación del objeto dat_iris y uso de la función rename() para cambiar los nombres de las columnas de la base de datos iris.

dat_iris<-iris%>%
          rename(Long.Sepal=Sepal.Length, Ancho.Sepal=Sepal.Width, 
                 Long.Petalo=Petal.Length, Ancho.Petalo=Petal.Width,
                 Especies=Species)

Base de datos iris con nuevos nombres para las variables:

head(dat_iris)
:)    Long.Sepal Ancho.Sepal Long.Petalo Ancho.Petalo Especies
:)  1        5.1         3.5         1.4          0.2   setosa
:)  2        4.9         3.0         1.4          0.2   setosa
:)  3        4.7         3.2         1.3          0.2   setosa
:)  4        4.6         3.1         1.5          0.2   setosa
:)  5        5.0         3.6         1.4          0.2   setosa
:)  6        5.4         3.9         1.7          0.4   setosa

Note que la función también str() muestra de que tipo son las variables del objeto dat_iris.

str(dat_iris)
:)  'data.frame':   150 obs. of  5 variables:
:)   $ Long.Sepal  : num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
:)   $ Ancho.Sepal : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
:)   $ Long.Petalo : num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
:)   $ Ancho.Petalo: num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
:)   $ Especies    : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

6.1 Variables continuas:

class(dat_iris$Long.Sepal)
:)  [1] "numeric"
class(dat_iris$Ancho.Sepal)
:)  [1] "numeric"
class(dat_iris$Long.Petalo)
:)  [1] "numeric"
class(dat_iris$Ancho.Petalo)
:)  [1] "numeric"

6.2 Variable categórica

Las categorías de una variable cualitativa, se pueden arreglar en una tabla:

Categoría Conteo
\(a_{1}\) \(n_{1}\)
\(a_{2}\) \(n_{2}\)
. .
. .
. .
\(a_{k}\) \(n_{k}\)

A partir de esta información se puede calcular:

  • Frecuencias absolutas, \(n_{i}\), es decir, la cantidad de unidades por categoría (valores absolutos)

  • Frecuencias relativas, \(f_{i}=\frac{n_{i}}{n}\), es decir, la proporción de unidades por categoría (valores relativos), donde \(n=\sum n_{i}\).

  • Frecuencias relativas porcentuales, \(f_{i}*100\), es decir, la proporción de unidades por categoría expresada en porcentajes.

class(dat_iris$Especies)
:)  [1] "factor"
resultado<-dat_iris %>%
           select(Especies)%>%
           group_by(Especies)%>%
           summarise(Fre.abs=n())%>%
           mutate(Fre.relativas=Fre.abs/sum(Fre.abs),
                  Fre.relativas.por=Fre.relativas*100)

kable(resultado, digits = 3, col.names = c("Especies", "Frecuencias absolutas", "Frecuencias relativas", "Frecuencias relativas porcentual"))
Especies Frecuencias absolutas Frecuencias relativas Frecuencias relativas porcentual
setosa 50 0.333 33.333
versicolor 50 0.333 33.333
virginica 50 0.333 33.333

7 Análisis univariado

Si usamos la función attach() para manejar bases de datos las cosas se simplifian, ya que se puede trabajar directamente con las variables sin tener que escribir el nombre de la base de datos antes de la varaible, a continuación se muestra un ejemplo. (With attach() the database is attached to the R search path. This means that the database is searched by R when evaluating a variable, so objects in the database can be accessed by simply giving their names).

attach(dat_iris)

7.1 Estadísticas de centralidad

Dado \(n\) datos el promedio está dado por: \[ \bar{x}=\frac{1}{n}\sum_{i=1}^{n} x_{i} \]

x<-c(2,4,6)
mean(x)
:)  [1] 4

La mediana, es un valor que divide a las observaciones en dos grupos con el mismo número de datos. Si el número de datos es par, se elige el promedio de los dos datos centrales. La mediana no es sensible a los valores extremos.

x<-c(2,4,6,8)
median(x)
:)  [1] 5

La moda de un conjunto de datos, es el valor que ocurre con mayor frecuencia. Si todos los valores son diferentes, entonces no hay moda. Un conjunto de datos puede tener mas de una moda.

x<-c(2,4,6,8,2,2,6,6,6)
Mode(x)      
:)  [1] "6"

Ejemplo con la base de datos dat_iris:

mean(Ancho.Petalo)     # Promedio
:)  [1] 1.199333
median(Ancho.Petalo)   # Mediana
:)  [1] 1.3
Mode(Ancho.Petalo)    # Moda
:)  [1] "0.2"

Otra función que también reporta la Moda es Mode() y se encuentra en el paquete DescTools.

7.2 Estadísticas de dispersión

La varianza muestral está dada por

\[ S^2=\frac{1}{n-1}\sum_{i=1}^{n} (x_{i}-\bar{x})^2 \] La desviación estándar está dada por \[ \sqrt{S^2} \] Ejemplos:

var(Ancho.Petalo) # Varianza
:)  [1] 0.5810063
sd(Ancho.Petalo)  # Desviación estándar
:)  [1] 0.7622377

Los cuantiles son puntos de corte tomados a intervalos de un conjunto de datos. El cuantil de orden \(p\) (con 0 < p < 1) es el valor d \(x_{p}\) que marca un corte de modo que una proporción \(p\) de valores es menor o igual que \(x_{p}\). Por ejemplo, el cuantil de orden \(0.30\) dejaría un \(30\%\) de valores por debajo.

Los cuantiles suelen usarse por grupos que dividen la muestra en partes iguales; entendidas estas como intervalos que comprenden la misma proporción de valores. Los más usados son:

  • Los cuartiles, que dividen la muestra en cuatro partes (cuantiles): 0.25 0.50 y 0.75.

  • Los quintiles, que dividen la muestra en cinco partes (cuantiles): 0.20; 0.40; 0.60 y 0.80.

  • Los deciles, que dividen la muestra en diez partes.

  • Los percentiles, que dividen la muestra en cien partes.

Ejemplos:

range(Ancho.Petalo)  # La función range() reporta el máximo y el valor  mínimo 
:)  [1] 0.1 2.5
diff(range(Ancho.Petalo)) # La función diff() reporta el rango=máximo-mínimo
:)  [1] 2.4
IQR(Ancho.Petalo) # La función IQR() reporta el rango intercuartil es la diferencia de Q3-Q1
:)  [1] 1.5

7.3 Resumen de las estádisticas

summary(dat_iris)
:)     Long.Sepal     Ancho.Sepal     Long.Petalo     Ancho.Petalo  
:)   Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
:)   1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
:)   Median :5.800   Median :3.000   Median :4.350   Median :1.300  
:)   Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
:)   3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
:)   Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
:)         Especies 
:)   setosa    :50  
:)   versicolor:50  
:)   virginica :50  
:)                  
:)                  
:)  
describe(dat_iris)
:)  Description of dat_iris
:)  
:)   Numeric 
:)               mean median  var   sd valid.n
:)  Long.Sepal   5.84   5.80 0.69 0.83     150
:)  Ancho.Sepal  3.06   3.00 0.19 0.44     150
:)  Long.Petalo  3.76   4.35 3.12 1.77     150
:)  Ancho.Petalo 1.20   1.30 0.58 0.76     150
:)  
:)   Factor 
:)           
:)  Especies  setosa versicolor virginica
:)    Count    50.00      50.00     50.00
:)    Percent  33.33      33.33     33.33
:)  Mode >1 mode

Otra función que también reporta un resumen de las estadísticas es Summarize() y se encuentra en el paquete FSA.

7.4 Gráficos

     ggplot(dat_iris, aes(Long.Petalo))+
     geom_histogram(fill = "blue")+         # Gráfico de barras
     theme_bw()+         # Fondo del gráfico cuadriculado
     labs(x="Lontitud del pétado",y="Conteos")   # Cambio de nombre de los ejes 

ggplot(dat_iris, aes(Long.Petalo)) +
geom_freqpoly(color="blue")+
theme_bw()+         # Fondo del gráfico cuadriculado
labs(x="Lontitud del pétado",y="Valores")   # Cambio del nombre del eje y

     ggplot(dat_iris, aes(Ancho.Petalo))+
     geom_histogram(fill = "blue")+         # GRafico de barras
     theme_bw()+         # Fondo del gráfico cuadriculado
     labs(x="Ancho del pétado",y="Valores")   # Camb

El diagrama de Tukey o cajas y bigotes, representa gráficamente la distribución de los valores de una variable. Las estadísticas que reporta el gráfico son:

  • El valor mínimo

  • El cuantil \(Q_{1}=0.025\)

  • La mediana

  • El cuantil \(Q_{3}=0.75\)

  • El valor máximo

     ggplot(dat_iris, aes(y=Long.Petalo))+
     geom_boxplot()+         # GRafico de barras
     theme_bw()+         # Fondo del gráfico cuadriculado
     labs(x="Longitud del pétado",y="Valores")   # Cambio del nombre del eje y

     ggplot(dat_iris, aes(y=Ancho.Petalo))+
     geom_boxplot()+         # GRafico de barras
     theme_bw()+         # Fondo del gráfico cuadriculado
     labs(x="Ancho del pétado",y="Valores")   # Cambio del nombre del eje y

     ggplot(dat_iris, aes(x=Especies, color=Especies, fill=Especies))+
     geom_bar()+         # GRafico de barras
     theme_bw()+         # Fondo del gráfico cuadriculado
     labs(y="Conteos")   # Cambio del nombre del eje y