Vous êtes sur la page 1sur 99

UNIVERSIDAD NACIONAL AGRARIA LA MOLINA

Facultad de Economía y Planificación


Departamento de Estadística e Informática

ANÁLISIS ESTADÍSTICO DE DATOS


USANDO R
Ing. Joao Manuel Rado Huaringa
jrado@lamolina.edu.pe
INTRODUCCIÓN AL R
• R es un lenguaje orientado a objetos, es decir las variables,
datos, resultados, etc. se almacenan en la memoria de la
computadora en forma de objetos, cada uno con un
nombre particular.

• A diferencia de otros lenguajes, R ejecuta comandos


directamente, es decir no es necesario construir ejecutables
para realizar alguna acción.

• La última versión de R es la 3.4.3 llamada “Kite-Eating


Tree”.

• Las versiones de R se actualizan continuamente. Por esta


razón es necesario visitar siempre la página:
https://cran.r-project.org/
Ing. Joao Rado Huaringa
INTRODUCCIÓN AL R
• Acerca de los manuales en R, en la sección Documents existe un
gran número de textos acerca del manejo de R. Estos se van
actualizando y añadiendo cada cierto tiempo.

• R permite realizar el análisis estadístico a un conjunto de datos.


Para ello hace uso de paquetes y funciones.

Ing. Joao Rado Huaringa


INTRODUCCIÓN AL R
a) Funciones
• Las funciones en R permiten aplicar distintas tareas en el
procesamiento de datos.

• Una función contiene argumentos, que son parámetros que se


necesitan para poder llevar a cabo una tarea. Estos argumentos
pueden ser datos, fórmulas, expresiones, etc.

• Finalmente, no todos los argumentos son definidos por el usuario,


algunos se encuentran definidos por defecto.

• Ejemplo de funciones: sqrt(), mean(), sum(), read.table(),


apply(),etc.
Ing. Joao Rado Huaringa
INTRODUCCIÓN AL R
b) Paquetes
• Los paquetes en R son conjuntos de funciones que realizan o
forman parte de técnicas específicas.

• Algunas funciones se encuentran en paquetes que vienen por


defecto al instalar el programa. Pero existe una gran cantidad de
paquetes o librerías que se encuentran de forma virtual en la red.

• Si parte de nuestro análisis involucra técnicas avanzadas, es seguro


que debamos requerir la instalación de paquetes. En la página web
del proyecto se puede ver la disponibilidad de paquetes que ofrece.

• Ejemplo de paquetes: agricolae, car, Discriminer, MASS,


ggplot2, etc.
Ing. Joao Rado Huaringa
APLICACIÓN 1: R como una
calculadora
Ejecute el programa R y realice los siguientes cálculos:

5  7 1
> 5+7-1
8 x 9  11 [1] 11
> 8*9+11
23  1 [1] 83
> 2^3-1
1 [1] 7
3 > 3^0.5-1/2
2 [1] 1.232051
5  7 1 > (5+7-1)/(8*9+11)
[1] 0.1325301
8 x 9  11
Ing. Joao Rado Huaringa
R STUDIO

2. Administrador de
datos y objetos
1. Editor de sintaxis

4. Entorno para
gestionar gráficos,
3. Consola de paquetes y obtener
resultados información

Ing. Joao Rado Huaringa


R STUDIO
• R Studio es una plataforma para ejecutar R. La principal ventaja que
tiene frente a usar simplemente R es que brinda 4 ventanas
simultáneas que facilitan el trabajo.

• R Studio permite guardar las sintaxis de trabajo en archivos R. Los


cuáles pueden ser reproducidos en innumerables ocasiones donde
involucre hacer tareas similares o con técnicas estadísticas afines.

Ing. Joao Rado Huaringa


TIPOS DE DATOS
• R trabaja con distintos tipos de datos, los que posteriormente
pueden ser almacenados en objetos. Los principales son: numérico,
caracter, complejo o lógico.
• Ejemplo:
> 2
[1] 2 mode()
> mode(2)
[1] "numeric"
> "estadística" mode permite reconocer el tipo de
[1] "estadística"
> mode("estadística") dato con el que se esta trabajando.
[1] "character"
> TRUE
[1] TRUE [1] es el contador de elementos
> mode(TRUE)
[1] "logical"
> 2i
[1] 0+2i
> mode(2i)
[1] "complex"
Ing. Joao Rado Huaringa
ASIGNANDO NOMBRES A DATOS
• Cuando se realiza un análisis estadístico es conveniente almacenar
datos, resultados, etc. La asignación de nombres a datos u objetos es
común en R.
• Por ejemplo:
> 2
<- es el operador asignar. También
[1] 2
> x<-2 se puede usar =
> x
[1] 2

• En el ejemplo anterior se asignó el nombre x al dato 2. Si se utiliza la


función mode se obtiene:
> mode(x)
[1] "numeric"

Ing. Joao Rado Huaringa


OBJETOS
• Como se definió anteriormente R trabaja con objetos. Lo que resulta
una ventaja frente a otros programas estadísticos. Estos objetos a su
vez se clasifican en tipos:
Objeto Tipos de datos Función Clasificación
Vector Numérico, caracter, complejo o lógico vector(), c() atómico
Factor Numérico o carácter factor() atómico
Matriz Numérico, caracter, complejo o lógico matrix() atómico
Marco de datos Numérico, caracter, complejo o lógico data.frame() recursivo
Serie de Tiempo Numérico ts() atómico
Lista Numérico, caracter, complejo o lógico lista() recursivo

• Nota: los resultados que se presentan en R, a su vez se pueden


almacenar también en objetos

Ing. Joao Rado Huaringa


OBJETOS
a) Vector
Es un arreglo unidimensional de datos de un solo tipo. Por ejemplo:

> a<-c(28,33,29,27,20)
> a
[1] 28 33 29 27 20
> b<-c("amarillo","rojo","azul","azul","blanco")
> b
[1] "amarillo" "rojo" "azul" "azul" "blanco"
> is.vector(a)
[1] TRUE
> length(a)
[1] 5
is.vector()

length() is.vector hace la consulta si el objeto


es de tipo vector. Si es verdadero
length retorna la longitud o tamaño del retornará TRUE, caso contrario FALSE
vector
Ing. Joao Rado Huaringa
OBJETOS
b) Factor
Es un vector que incluye valores de una variable categórica, a
diferencia de un simple vector se incluye los diferentes niveles que
toma la variable. Por ejemplo:

> d<-factor(c(1,1,1,2,3)) is.factor()


> d
[1] 1 1 1 2 3 is.factor
Levels: 1 2 3 hace la
> is.factor(d) consulta si el
[1] TRUE objeto es de
> d<-factor(c(1,1,1,2,3),levels=c(1,2))
> d
tipo factor. Si
[1] 1 1 1 2 <NA> es verdadero
Levels: 1 2 retornará
TRUE, caso
contrario
FALSE

Ing. Joao Rado Huaringa


OBJETOS
c) Matriz
• Es un arreglo bidimensional de datos de un solo tipo. Se caracteriza
por presentar índices para filas y columnas. Por ejemplo:
> A<-matrix(data=10,nrow=2,ncol=2) is.matrix()
> A
[,1] [,2] is.vector
[1,] 10 10 hace la
[2,] 10 10
consulta si el
> is.matrix(A)
[1] TRUE objeto es de
> length(A) tipo matriz. Si
[1] 4 es verdadero
> dim(A) retornará
[1] 2 2 TRUE, caso
contrario
dim() length() FALSE
dim retorna el número de
length retorna la cantidad de
filas y número de columnas de
datos que tiene la matriz.
la matriz. Ing. Joao Rado Huaringa
OBJETOS
d) Marco de datos
Es un conjunto de datos con referencias. Un marco de datos resulta de
unir vectores de la misma longitud. Por ejemplo:
> datos<-data.frame(a,b,d)
> datos
a b d
1 28 amarillo 1
2 33 rojo 1
3 29 azul 1
4 27 azul 2
5 20 blanco <NA>
> e<-c(5,5,6)
> datos2<-data.frame(a,b,d,e)
Error in data.frame(a, b, d, e) :
arguments imply differing number of rows: 5, 3

Ing. Joao Rado Huaringa


OBJETOS
e) Serie de tiempo
Es un arreglo que se caracteriza por presentar un conjunto de datos
teniendo como referencia el tiempo en que fueron tomados. Por
ejemplo:
> f<-c(1:15) start indica
> f el año en que
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
se va a iniciar
> serie<-ts(f,start=2000)
> serie
la serie de
Time Series: tiempo
Start = 2000
End = 2014 Frequency
Frequency = 1 indica la
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 frecuencia en
> serie2<-ts(f,start=2015,frequency = 12)
que se toman
> serie2
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
los datos
2015 1 2 3 4 5 6 7 8 9 10 11 12
2016 13 14 15
Ing. Joao Rado Huaringa
OBJETOS
f) Lista
Una lista se caracteriza por incluir toda clase de objetos. Se diferencia
de un marco de datos debido a que puede incluir una matriz, vectores,
etc. Además los nombres de los objetos no se toman por defecto. Por
ejemplo:
> L1<-list(a,d)
> L1
[[1]]
[1] 28 33 29 27 20

[[2]]
[1] 1 1 1 2 <NA>
Levels: 1 2
> L2<-list(colores=b,numeros=e)
> L2
$colores
[1] "amarillo" "rojo" "azul" "azul" "blanco"

$numeros
[1] 5 5 6

Ing. Joao Rado Huaringa


APLICACIÓN 2
1. Construya un objeto (y) tipo vector numérico y dos objetos (w, z)
de tipo factor, considere una longitud igual a 4 para todos.
2. Construya un objeto de tipo matriz de dimensión 2x3 y asígnele
como nombre E
3. A continuación se presentan los datos para una serie de tiempo.
Úselos para poder ingresarlos al programa R como un objeto de
serie de tiempo y asígnele como nombre ventas.
Año 2000 2001 2002 2003 2004 2005 2006
Ventas 237 246 261 280 313 339 346

4. Use los objetos construidos en la pregunta 1 y almacénelos en un


data.frame, asígnele como nombre ejemplo1
5. Use los objetos de la pregunta 1 y 2 para almacenarlos en una lista,
asígnele como nombre lista1. Coloque nuevos nombres a los
objetos en la lista. Ing. Joao Rado Huaringa
LECTURA DE BASES DE DATOS

BD Funciones

Para leer un conjunto de datos se debe hacer uso de funciones. Consiste en convertir
nuestro archivo en un objeto de R de tal forma que pueda ser leído y almacenado de
forma intrínseca por el software. Existen varias funciones que cumplen esta tarea. A
continuación se presentan las más importantes.
Funciones Descripción

scan Permite leer un conjunto datos de un archivo de texto o ingresar datos.

read.table Permite leer un conjunto de datos en forma de tabla.

read.delim Permite leer datos de un archivo de texto delimitados por tabulaciones

read.csv Permite leer un archivo de extensión csv.

read.spss Permite leer un archivo de extensión spss.

Ing. Joao Rado Huaringa


LECTURA DE BASES DE DATOS
a) Scan
Esta función permite tanto leer datos como ingresarlos. Tiene como
argumentos principales «file» y «what». El primero indica el nombre del
archivo y el segundo el tipo de dato, que por defecto es numérico. Por ejemplo:

> data<-scan(file="")
1: 10 12 Si se coloca comillas en vez
3: 15 de algún nombre, la entrada
4: 21 23 de datos se hará por teclado.
6: Pero si se coloca el nombre
Read 5 items se leerá el archivo indicado.
> data
[1] 10 12 15 21 23
> data2<-scan(file="hiper.txt")
Read 20 items
> data2
[1] 105 115 116 117 112 121 121 110 110 114 114 115 114 106 125 114 106 113 110
122

Ing. Joao Rado Huaringa


LECTURA DE BASES DE DATOS
b) Read.table
Esta función es una de las más usadas y lee un conjunto de datos como un
marco de datos. Tomando como filas las observaciones y como columnas las
variables. Por ejemplo:
> data3<-read.table(file="hipertension.txt",header=T,sep=“”)
> head(data3) head()
Y X1 X2 X3 X4 X5 X6
1 105 47 85.4 1.75 5.1 63 33 head es una función que
2 115 49 94.2 2.10 3.8 70 14
permite mostrar las primeras 6
3 116 49 95.3 1.98 8.2 72 10
4 117 50 94.7 2.01 5.8 73 99 observaciones de un conjunto
5 112 51 89.4 1.89 7.0 72 95 de datos
6 121 48 99.5 2.25 9.3 71 10
> data3<-read.table("hipertension.txt",T)
> head(data3)
Y X1 X2 X3 X4 X5 X6 Si se omiten los nombres
1 105 47 85.4 1.75 5.1 63 33 delos argumentos principales,
2 115 49 94.2 2.10 3.8 70 14 la función podrá identificarlos
3 116 49 95.3 1.98 8.2 72 10 por defecto.
4 117 50 94.7 2.01 5.8 73 99
5 112 51 89.4 1.89 7.0 72 95
6 121 48 99.5 2.25 9.3 71 10

Ing. Joao Rado Huaringa


LECTURA DE BASES DE DATOS
b) Read.table
> data3<-
read.table("hipertension.txt",T,col.names=c("respuesta","v1","v2","v3","v4","v5","v6"))
> head(data3)
respuesta v1 v2 v3 v4 v5 v6
1 105 47 85.4 1.75 5.1 63 33 col.names permite renombrar a
2 115 49 94.2 2.10 3.8 70 14 las variables en el marco de datos
3 116 49 95.3 1.98 8.2 72 10
4 117 50 94.7 2.01 5.8 73 99
5 112 51 89.4 1.89 7.0 72 95
6 121 48 99.5 2.25 9.3 71 10 file.choose()
> data3<-read.table(file.choose(),T)
> head(data3)
Y X1 X2 X3 X4 X5 X6 file.choose es una función
1 105 47 85.4 1.75 5.1 63 33 que permite llamar una
2 115 49 94.2 2.10 3.8 70 14 ventana de búsqueda.
3 116 49 95.3 1.98 8.2 72 10
4 117 50 94.7 2.01 5.8 73 99
5 112 51 89.4 1.89 7.0 72 95
6 121 48 99.5 2.25 9.3 71 10

Ing. Joao Rado Huaringa


LECTURA DE BASES DE DATOS
c) Read.delim
Es un caso particular de read.table donde la delimitación de datos se
hace solo por tabulaciones. Por ejemplo:
> data4<-read.delim("hipertension.txt",T)
> head(data4) clipboard permite recoger
Y X1 X2 X3 X4 X5 X6
1 105 47 85.4 1.75 5.1 63 33
datos de cualquier archivo con
2 115 49 94.2 2.10 3.8 70 14 formato de tabulaciones. Solo es
3 116 49 95.3 1.98 8.2 72 10 necesario copiar los datos. Usar
4 117 50 94.7 2.01 5.8 73 99 «Ctrl+c»
5 112 51 89.4 1.89 7.0 72 95
6 121 48 99.5 2.25 9.3 71 10
> data4<-read.delim("clipboard",T)
> head(data4)
Y X1 X2 X3 X4 X5 X6
1 105 47 85.4 1.75 5.1 63 33
2 115 49 94.2 2.10 3.8 70 14
3 116 49 95.3 1.98 8.2 72 10
4 117 50 94.7 2.01 5.8 73 99
5 112 51 89.4 1.89 7.0 72 95
6 121 48 99.5 2.25 9.3 71 10

Ing. Joao Rado Huaringa


LECTURA DE BASES DE DATOS
d) Read.csv
Es un caso particular de read.table donde la delimitación de datos se
hace solo por comas. Por ejemplo:

> data5<-read.csv("car.txt",T)
> head(data5)
precio_compra tam num_puertas cantidad_personas tam_maletera seguridad calificacion
1 muy_alto alto mas_de_4 2 pequeño bajo inaceptable
2 muy_alto alto mas_de_4 2 pequeño intermedio inaceptable
3 muy_alto alto mas_de_4 2 pequeño alto inaceptable
4 muy_alto alto mas_de_4 2 intermedio bajo inaceptable
5 muy_alto alto mas_de_4 2 intermedio intermedio inaceptable
6 muy_alto alto mas_de_4 2 intermedio alto inaceptable

Ing. Joao Rado Huaringa


LECTURA DE BASES DE DATOS
d) Read.spss
Permite leer archivos en formato spss. Antes se debe cargar la librería
foreign.

> library(foreign)
> data6<-read.spss("vinos.sav",T)
La función ha sido creada
> data6
en el 2000. Es posible que
> data6_frame<-data.frame(data6) por cambios en SPSS
> head(data6_frame) algunas características no
V1 V2 V3 V4 puedan ser leídas. Sin
1 3064 1201 10 361 embargo, recoge la
2 3000 1053 11 338 información de la hoja de
datos .sav
3 3155 1133 19 393
4 3085 970 4 467
5 3245 1258 36 294
6 3267 1386 35 225

Ing. Joao Rado Huaringa


GENERACIÓN DE DATOS
Para generar datos es necesario conocer algunas funciones. La generación es
útil en varios casos. Por ejemplo la elaboración de un listado de números o de
repetir varias veces un mismo valor.
> var1<-seq(from=1,to=10)
> var1 seq() seq es una función que
[1] 1 2 3 4 5 6 7 8 9 10 permite construir una
> var1<-seq(1,10)
> var1 secuencia regular de números
[1] 1 2 3 4 5 6 7 8 9 10 enteros y reales.
> var2<-seq(from=1,to=10,by=0.5)
> var2
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0
[18] 9.5 10.0

from indica el número con el que inicia la serie,


to el número con el que termina. Finalmente by
indica los saltos que dará. Si no se incluye este
argumento tomará como defecto 1

Ing. Joao Rado Huaringa


GENERACIÓN DE DATOS
> var3<-rep(1,10)
> var3 rep() rep es una función que crea un
[1] 1 1 1 1 1 1 1 1 1 1 vector con elementos idénticos.
> var4<-c(rep("M",5),rep("F",5))
> var4
[1] "M" "M" "M" "M" "M" "F" "F" "F" "F" "F"

Otra función importante es gl(), llamada también generador de niveles.


Por ejemplo:
> var5<-gl(n=3,k=5)
> var5
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 n representa el número
Levels: 1 2 3 de niveles, k es la
> var5<-gl(3,5) cantidad de veces que se
> var5
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
repetirá, labels si se
Levels: 1 2 3 desea nombrar a los
> var6<-gl(n=3,k=5,labels=c("a","b","c")) niveles y length es el
> var6 número de resultados que
[1] a a a a a b b b b b c c c c c
Levels: a b c
se desea mostrar. Si no se
> var7<-gl(2,1,length=20) coloca nada por defecto
> var7 es 1
[1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
Levels: 1 2
Ing. Joao Rado Huaringa
MANIPULACIÓN DE VECTORES Y
MATRICES
> x<-c(rep(1,3),c(5,7))
> x
[1] 1 1 1 5 7 dim() también es una
> dim(x)<-c(5,1)
> x
función que sirve para
[,1] dar forma de matriz a una
[1,] 1 estructura . Donde el
[2,] 1 primer elemento del
[3,] 1 vector indicador hace
[4,] 5 referencia al número de
[5,] 7
> is.vector(x)
filas y el segundo al
[1] FALSE número de columnas
> is.matrix(x)
[1] TRUE
> y<-c(47,99,1)
> dim(y)<-c(3,1)
> y
[,1]
[1,] 47
[2,] 99
[3,] 1

Ing. Joao Rado Huaringa


MANIPULACIÓN DE VECTORES Y
MATRICES
> rbind(x,y)
[,1]
[1,] 1 rbind() permite unir filas de dos estructuras.
[2,] 1 Mientras que cbind() permite unir columnas. Se
[3,] 1 debe tener en cuenta el mismo número de
[4,] 5
[5,] 7
columnas y de filas, respectivamente, al usar
[6,] 47 estas funciones
[7,] 99
[8,] 1
> dim(x)<-c(1,5)
> dim(y)<-c(1,3)
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 5 7
> y
[,1] [,2] [,3]
[1,] 47 99 1
> rbind(x,y)
Error in rbind(x, y) :
number of columns of matrices must match (see arg 2)
> cbind(x,y)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 1 1 5 7 47 99 1

Ing. Joao Rado Huaringa


MANIPULACIÓN DE VECTORES Y MATRICES
> A<-matrix(1:6,nr=3,nc=2)
> A En matrices, el atributo byrow
[,1] [,2] se encuentra desactivado. Es
[1,] 1 4 decir se considera FALSE.
[2,] 2 5
La función t() calcula la
[3,] 3 6
> A<-matrix(1:6,nr=3,nc=2,byrow=TRUE) transpuesta de una matriz.
> A La función dim() dimensiona la
[,1] [,2] matriz según el orden de los
[1,] 1 2 elementos por columna.
[2,] 3 4
[3,] 5 6
> t(A)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> t(t(A))
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
> dim(A)<-c(2,3)
> A
[,1] [,2] [,3]
[1,] 1 5 4
[2,] 3 2 6
Ing. Joao Rado Huaringa
OPERADORES
En R, se deben tener en cuenta los siguientes símbolos para realizar las
operaciones más útiles:

Símbolo Aritméticos Símbolo Comparativos


+ Adición < Menor
- Substracción > Mayor
* Multiplicación <= Menor o igual
/ División >= Mayor o igual
^ Potencia == Igual
%% Módulo != Diferente de
%/% División de
enteros

Ing. Joao Rado Huaringa


OPERACIONES CON VECTORES
A continuación se presentan las operaciones básicas con
vectores.
> a<-seq(1,5)
> a
[1] 1 2 3 4 5
> b<-rep(2,5)
> b
[1] 2 2 2 2 2
> a+b
[1] 3 4 5 6 7
> a-b
[1] -1 0 1 2 3
> a*b
[1] 2 4 6 8 10
> a/b
[1] 0.5 1.0 1.5 2.0 2.5

Ing. Joao Rado Huaringa


OPERACIONES CON MATRICES
A continuación se presentan las operaciones básicas con matrices.
> X<-matrix(0,3,3)
> X
[,1] [,2] [,3] La función fix() permite editar
[1,] 0 0 0 una matriz o un marco de datos.
[2,] 0 0 0 Lleva como argumento el nombre
[3,] 0 0 0 del objeto a editar.
> fix(X)
> X
col1 col2 col3
[1,] 10 8 1 La función diag() permite
[2,] 5 9 8 trabajar con la diagonal de una
[3,] 6 7 2 matriz.
> Y<-diag(3) Si solo se indica un número por
> Y defecto creará una matriz
[,1] [,2] [,3]
identidad del tamaño del
[1,] 1 0 0
[2,] 0 1 0 número. Por otro lado, si se
[3,] 0 0 1 asigna un valor a una matriz ya
> diag(X)<-9 existente se reemplazará su
> X diagonal por este.
col1 col2 col3
[1,] 9 8 1
[2,] 5 9 8
[3,] 6 7 9
Ing. Joao Rado Huaringa
OPERACIONES CON MATRICES
> Z<-matrix(3,3,3)
> Z
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 3 3
[3,] 3 3 3
> Z+X
col1 col2 col3
[1,] 12 11 4
[2,] 8 12 11
[3,] 9 10 12
> Z-X
col1 col2 col3
[1,] -6 -5 2
[2,] -2 -6 -5
[3,] -3 -4 -6
> Z%*%X
col1 col2 col3
[1,] 60 72 54
[2,] 60 72 54
[3,] 60 72 54

Ing. Joao Rado Huaringa


SELECCIÓN DE DATOS
En muchas ocasiones es importante trabajar solo con parte de los
datos para hacer algunas operaciones. A continuación se presenta un
ejemplo de selección de datos para vectores y matrices:
> d<-c(7,10,15,36,9)
> d[3]
[1] 15
> X
col1 col2 col3
[1,] 9 8 1
[2,] 5 9 8
[3,] 6 7 9
> X[3,2]
col2
7
> d[1:3]
[1] 7 10 15
> X[1:3,2]
[1] 8 9 7
> X[2,1:3]
col1 col2 col3
5 9 8

Ing. Joao Rado Huaringa


FILTRADO DE INFORMACIÓN
Cuando se trabaja con un conjunto de datos a menudo se pide usar parte de
ella o segmentarla. A continuación se presenta un ejemplo con un caso
práctico:
El conjunto de datos “tortuga” presenta información acerca de la longitud,
anchura, altura de caparazón y el sexo de una muestra de tortugas.
> datos<-read.delim("clipboard")
> head(datos)
Longitud Ancho Altura Sexo
1 98 81 38 0
2 103 84 38 0
3 103 86 42 0
4 105 86 42 0
5 109 88 44 0
6 123 92 50 0

- Seleccione solo el ancho de caparazón para las 6 primeras tortugas


> datos[1:6,2]
[1] 81 84 86 86 88 92
> datos$Ancho[1:6]
[1] 81 84 86 86 88 92
FILTRADO DE INFORMACIÓN
- Seleccione la altura y sexo de las tortugas 8, 11 y 15.
> datos[c(8,11,15),3:4]
Altura Sexo
8 51 0
11 48 0
15 53 0

- Actualice los valores de 0 a «H» para tortugas hembra y de 1 a «M» para las
tortugas macho
> datos$Sexo<-replace(datos$Sexo,datos$Sexo==0,"H")
> datos$Sexo<-replace(datos$Sexo,datos$Sexo==1,"M")
> datos$Sexo
[1] "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H"
[22] "H" "H" "H" "M" "M" "M" "M" "M" "M" "M" "M" "M" "M" "M" "M" "M" "M" "M" "M" "M" "M"
[43] "M" "M" "M" "M" "M" "M"
> head(datos)
Longitud Ancho Altura Sexo La función replace() permite
1 98 81 38 H reemplazar datos de un vector por
2 103 84 38 H
3 103 86 42 H otros
4 105 86 42 H
5 109 88 44 H
6 123 92 50 H

Ing. Joao Rado Huaringa


FILTRADO DE INFORMACIÓN
- Segmente el conjunto de datos según el sexo de la tortuga:
> macho<-subset(datos,datos$Sexo=="M")
> hembra<-subset(datos,datos$Sexo=="H")
> head(macho) La función subset() permite
Longitud Ancho Altura Sexo crear un subconjunto de datos
25 93 74 37 M según alguna condición.
26 94 78 35 M
27 96 80 35 M
28 101 84 39 M
29 102 85 38 M
30 103 81 37 M

- Muestre las tortugas macho que tienen una longitud de caparazón inferior a
100.
> subset(macho,macho$Longitud<100)
Longitud Ancho Altura Sexo
25 93 74 37 M
26 94 78 35 M
27 96 80 35 M

Ing. Joao Rado Huaringa


MEDIDAS RESUMEN
Existen distintas medidas resumen que contiene el software R. A continuación
se muestran algunas de ellas:
Función Descripción Función Descripción
sum() Calcula la suma de un vector de median() Calcula la mediana de un vector de
datos datos
mean() Calcula el promedio de un vector de cumsum() Calcula la suma acumulada de un
datos vector de datos
var() Calcula la varianza de un vector de cumprod() Calcula el producto acumulado de
datos un vector de datos
sd() Calcula la desviación estándar de table() Presenta una tabulación cruzada de
un vector de datos un conjunto de datos tipo factor o
numerico.
quantile() Calcula los cuantiles de un vector apply() Aplica una función a un conjunto de
de datos datos de una matriz o un data.frame
atómico
min(),max() Calcula el min, la max y el rango de tapply() Aplica una función de un conjunto
,range() un vector de datos de datos a un vector de datos según
factor
IQR() Calcula el rango intercualítico de
un vector de datos
Ing. Joao Rado Huaringa
MEDIDAS RESUMEN
Medidas estadísticas para la longitud de caparazones.
> sum(datos$Longitud)
[1] 5986
> mean(datos$Longitud)
[1] 124.7083
> var(datos$Longitud)
[1] 420.0408
> sd(datos$Longitud)
[1] 20.4949
> quantile(datos$Longitud,0.25,type=6)
25%
106.25
> quantile(datos$Longitud,0.75,type=6)
75%
137.5
> min(datos$Longitud)
[1] 93
> max(datos$Longitud)
[1] 177

Ing. Joao Rado Huaringa


MEDIDAS RESUMEN
Medidas estadísticas para la longitud de caparazones.

> IQR(datos$Longitud, type=6)


[1] 31.25
> median(datos$Longitud)
[1] 122
> cumsum(datos$Longitud)
[1] 98 201 304 409 518 641 764 897 1030 1163 1297 1433 1571 1709
1850 1997 2146
[18] 2299 2454 2609 2767 2926 3088 3265 3358 3452 3548 3649 3751 3854 3958
4064 4171 4283
[35] 4396 4510 4626 4743 4860 4979 5099 5219 5340 5465 5592 5720 5851 5986
> cumsum(datos$Longitud)[48]
[1] 5986

Ing. Joao Rado Huaringa


MEDIDAS RESUMEN
Agrupación de datos

> table(datos$Sexo)
H M
24 24
> apply(datos[1:3],2,mean)
Longitud Ancho Altura
124.7083 95.4375 46.3750 La función apply() permite
> tapply(datos$Longitud,datos$Sexo,mean) obtener una medida resumen
H M para cierta cantidad de variables
136.0417 113.3750 de un objeto de datos atómico.

A diferencia de la función apply() función tapply() permite obtener una medida resumen para
una variable (primer vector) según un factor específico (segundo vector).

Ing. Joao Rado Huaringa


APLICACIÓN 4
Vylla Chicken es una empresa dedicada a la comercialización de pollos a la
brasa y comida criolla, brinda sus servicios en sus cuatro locales
estratégicamente distribuidos en la capital. La venta de sus productos se
realiza tanto en sus propios establecimientos como a domicilio (delivery).

Con la finalidad de conocer el comportamiento del negocio, el gerente de la


empresa desea realizar un estudio para estimar el monto medio facturado (en
nuevos soles) por sus clientes durante el mes pasado.

Algunas de las variables consideradas en el estudio son:

•X1: Monto de la factura (en nuevos soles).


•X2: Entrega a domicilio (1: Si, 2: No).
•X3: Medio de pago (1: Efectivo, 2: Débito, 3: Crédito).
•X4: Cantidad de personas
•Local: Local donde se realizó la venta (San Juan de Miraflores, La Molina,
Los Olivos, Cercado de Lima)
Ing. Joao Rado Huaringa
APLICACIÓN 4
Use el archivo pollería.txt para responder las siguientes preguntas usando el
software R:
1. Leer los datos con alguna función vista en clase y almacénelo en un objeto
llamado data
2. Segmente el archivo según local y almacénelos en objetos diferentes.
3. Presente la distribución de frecuencias absolutas para la variable medio de
pago en el distrito de Cercado de Lima.
4. Presente la proporción de pedidos a domicilio en el distrito de Los Olivos.
5. Presente el monto mínimo, máximo y promedio según local
6. Presente el coeficiente de variabilidad del monto según local

Ing. Joao Rado Huaringa


GRÁFICOS EN R
• A diferencia de otros objetos, un gráfico
no puede ser almacenado como uno.
• Su apariencia se muestra en una ventana
especial para gráficos.
• Existen casos excepcionales como las
funciones hist() y plot() que además
de proporcionar un gráfico también
presentan listas u otros objetos que sí
pueden ser almacenados.
• En esta parte, se revisarán dos aspectos:
los gráficos más usados en R, clásicos
para realizar estadística descriptiva, y la
modificación de gráficos haciendo el uso
de parámetros.

Ing. Joao Rado Huaringa


CONTROL DE PANEL GRÁFICO
El panel gráfico presenta por lo general un solo gráfico. Sin embargo
existen diversas funciones que permiten dividir el panel a
conveniencia del usuario. Las funciones más conocidas son layout y
par.
> x<-seq(1:10)
> y<-seq(1:10)^2
> plot(x,y)
> w<-c(rep(1,3),c(1,4,5,6,6,7,3))
> plot(w,y)
> layout(matrix(1:4,2,2))
> layout.show(4)
> plot(x,y)
> plot(x,w) La función layout() permite
> plot(w,y) dividir el panel gráfico. Mientras
> plot(x,x) que layout.show() permite
enumerar los subpaneles.

Ing. Joao Rado Huaringa


CONTROL DE PANEL GRÁFICO
> par(mfrow=c(2,2))
> plot(x,y)
> plot(x,w)
> plot(w,y)
> plot(x,x)
> par(mfrow=c(3,2))
> plot(x,y)
> plot(x,w)
> plot(w,y)
> plot(x,x)
> plot(w,y)
> plot(x,x)

La función par() también permite


dividir el panel gráfico. A diferencia de
layout(), los mismos se van
organizando por fila

Ing. Joao Rado Huaringa


HERRAMIENTAS BÁSICAS DE DISEÑO
Al igual que un editor de gráficos, R, también cuenta con opciones para dar
diseño a un gráfico. Estas opciones son argumentos adicionales que lleva una
función de gráficos estándar. Los más utilizados son los siguientes:
Argumento Descripción

add=FALSE Si es TRUE, permite superponer el gráfico en uno que ya existe.

axes=TRUE Permite dibujar los ejes en el gráfico. Para no hacerlo ejecutar FALSE

type=«p» Especifica el tipo de presentación del gráfico. Por ejemplo: p=puntos, l=líneas,
h=líneas verticales, etc.
xlim, ylim Especifican los límites para las escalas de los ejes x e y. Se presentan en forma
de vector
xlab, ylab Permiten colocar nombres a los ejes x e y respectivamente.

main, sub Coloca un título al gráfico y un subtítulo al gráfico.

Recordar que existen aún más argumentos que pueden ser consultados en el
panel de ayuda de R Studio.
Ing. Joao Rado Huaringa
GRÁFICOS IMPORTANTES
Estadística descriptiva:
- Gráfico de barras
- Gráfico de pie
- Grafico de varas
- Histograma
- Gráfico de tallos y hojas
- Gráfico de cajas
- Caras de Chernoff

Ing. Joao Rado Huaringa


GRÁFICO DE BARRAS
El gráfico de barras se utiliza para variables cualitativas. Ya sea de
tipo nominal u ordinal. Por ejemplo: nivel de educación, género, nivel
socioeconómico, color de auto, etc. Para dibujar el gráfico de barras se
usará la función barplot()
> #Con la data tortuga
> datos<-read.delim("clipboard",T)
> tabla<-table(datos$Sexo)
> tabla

0 1
24 24
> barplot(tabla)

Ing. Joao Rado Huaringa


EDITANDO UN GRÁFICO DE BARRAS
> #Con la data tortuga
> barplot(tabla, col="red")
> barplot(tabla, col=c("red","blue"))
0 1
24 24
> barplot(tabla)
> barplot(tabla, col=c("red","blue"),space=0.5,xlab="Sexo",ylab="fi",main="Gráfico de
barras para sexo de tortuga",sub="data tortuga")
> barplot(tabla, col=c("red","blue"),space=0.5,xlab="Sexo",ylab="fi",main="Gráfico de
barras para sexo de tortuga",sub="data tortuga",border="green",horiz=TRUE)
> barplot(tabla, col=c("red","blue"),space=0.5,xlab="fi",ylab="Sexo",main="Gráfico de
barras para sexo de tortuga",sub="data tortuga",border="green",horiz=TRUE)
> barplot(tabla, col=c("red","blue"),space=0.5,xlab="fi",ylab="Sexo",main="Gráfico de
barras para sexo de tortuga",sub="data
tortuga",border="green",horiz=TRUE,names.arg=c("F","M"))

La opción col permite modificar el color de las barras.


La opción space permite indicar la cantidad de espacio entre las barras.
La opción border permite cambiar de color al borde de las barras
La opción horiz permite cambiar la dirección de las barras. Si es TRUE serán barras
horizontales.
La opción names.arg permite ponerle nombres a las barras.

Ing. Joao Rado Huaringa


EDITANDO UN GRÁFICO DE BARRAS

Ing. Joao Rado Huaringa


GRÁFICO DE PIE
El gráfico de pie también se utiliza para variables cualitativas. Para
dibujar el gráfico de pie se usará la función pie()
> #Con la data tortuga
> pie(tabla)
> pie(tabla,col=c("red","blue"))
> names(tabla)<-c(“H","M")
> grafico_pie<-pie(tabla,col=c("red","blue"),main="Gráfico de pie para sexo
de tortuga")

Gráfico de pie para sexo de tortuga

Ing. Joao Rado Huaringa


GRÁFICO DE VARAS
El gráfico de varas se utiliza para variables cuantitativas discretas.
Para dibujarlo se usará la función barplot(type=h).
> data<-c(rep(1,10),rep(2,15),rep(3,23))
> data
[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
3 3
> plot(table(data),xlab="N° de marcas en caparazón",ylab="fi",main="Gráfico de barras para el
Número de marcas en caparazón")

Gráfico de barras para el Número de marcas en caparazón


20
15
fi

10
5
0

1 2 3

N° de marcas en caparazón

Ing. Joao Rado Huaringa


HISTOGRAMA
Este gráfico se utiliza para variables cuantitativas continuas. Para
dibujarlo se debe usar la función hist().
> hist(datos$Ancho)
> hist(datos$Ancho, main="Histograma para ancho de caparazón")
> hist(datos$Ancho, main="Histograma para ancho de caparazón",col="yellow")

Ing. Joao Rado Huaringa


GRÁFICO DE TALLOS Y HOJAS
Este gráfico a diferencia del histograma, muestra también los valores de
los datos. Algunos incluyen una ayuda para ubicar la mediana. Para
dibujar el gráfico de tallos y hojas se debe usar la función stem()
> #Con la data tortuga
> stem(datos$Longitud[1:24])

The decimal point is 1 digit(s) to the right of the |

8 | 8
10 | 3359
12 | 333334688
14 | 17935589
16 | 27
> stem(datos$Longitud[25:48])

The decimal point is 1 digit(s) to the right of the |

9 | 346
10 | 123467
11 | 2346779
12 | 001578
13 | 15

Ing. Joao Rado Huaringa


GRÁFICO DE CAJAS
Este gráfico se utiliza para analizar la simetría, variabilidad y
presencia de valores extremos en un conjunto de datos. Para dibujar
un diagrama de cajas se usará la función boxplot()
> #Con la data tortuga
> attach(datos)
> boxplot(Longitud~Sexo)
> boxplot(Longitud~Sexo, main="Diagrama de cajas para la longitud de
tortugas según sexo",col=c("yellow","red"))

Ing. Joao Rado Huaringa


CARAS DE CHERNOFF
Este gráfico se utiliza en el análisis multivariado como paso previo al análisis
clúster. Las variables deben ser de naturaleza cuantitativa. Para dibujar las
caras de chernoff debe instalarse la librería «aplpack» y usar la función
faces()
> #Con la data tortuga
> library(aplpack)
> faces(datos[,-4])
effect of variables:
modified item Var
"height of face " "Longitud"
"width of face " "Ancho"
"structure of face" "Altura"
"height of mouth " "Longitud"
"width of mouth " "Ancho"
"smiling " "Altura"
"height of eyes " "Longitud"
"width of eyes " "Ancho"
"height of hair " "Altura"
"width of hair " "Longitud"
"style of hair " "Ancho"
"height of nose " "Altura"
"width of nose " "Longitud"
"width of ear " "Ancho"
"height of ear " "Altura"

Ing. Joao Rado Huaringa


ARGUMENTOS ADICIONALES PARA
GRÁFICOS
Cuando ya se cuenta con un gráfico, en ciertas ocasiones será necesario
modificarlo para incluir detalles que no se pueden agregar con la función
original. Algunos se presentan a continuación:
Argumento Descripción

points(x,y) agrega puntos a una gráfica

lines(x,y) agrega puntos con líneas

text(x,y,labels) agrega texto dado por labels en las coordenadas (x,y)

segments(x0,y0,x1,y1) dibuja una línea desde el punto (x0,y0) hasta el punto (x1,y1)

abline() Si es (a,b) dibuja una línea con pendiente b e intercepto a. Si es (h=y)


dibuja una línea horizontal en la ordenada y. Si es (v=x) dibuja una línea
vertical en la abcisa x.
title() Agrega un título al gráfico

Ing. Joao Rado Huaringa


ARGUMENTOS ADICIONALES PARA
GRÁFICOS
> x<-seq(1:10)
> y<-x^2 Gráfica
> plot(x,y,type="l")

100
Nuevo texto
> lines(x,x)
> segments(0,30,8,80)

80
> segments(0,0,8,80,col="red")
> segments(2,0,8,80,col="blue")

60
> title("Gráfica")

y
> text(2,100,"Nuevo texto")

40
20
0

2 4 6 8 10

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
Estimación por intervalos

• La estimación puntual de un parámetro θ se basa en una sola muestra.


• El valor obtenido por la estimación puntual no es el mismo que el del
parámetro, por lo general la estimación queda por arriba o por debajo de
este.
• La estimación por intervalos obtiene dos límites (inferior y superior) que
permiten contener al parámetro θ en un (1-α)% de confianza.
• Por confianza, se entenderá como la seguridad de que el (1-α)% de
muestras que se obtengan contendrán al parámetro y el α % de muestras
no.

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
Estimación por intervalos

La estructura de un intervalo de confianza (1-α)% se muestra a


continuación:

IC ( )  ˆ  T ( sˆ ) 

Donde:
𝜃መ es el estimador puntual del parámetro θ
𝑇 es el valor de un estadístico tabular al (1- α/2) %
𝑠𝜃෡ es el error estándar del estimador puntual

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
a) Estimación de intervalo para la media
El intervalo de confianza al (1-α)% para la media de una población que se distribuye
aproximadamente normal y no se conoce la desviación estándar σ se presenta a continuación:

 s 
IC (  )   x  t(1 /2,n 1)
 n 
b) Estimación de intervalo para la proporción (Método exacto)
El intervalo de confianza al (1-α)% para la proporción de datos provenientes de una
distribución bernoulli

 r (r  1) F[1 /2,2( r 1),2( n  r )] 


IC ( )   ; 
 ( n  r  1) F[1 /2,2( n  r 1),2 r ] ( n  r )  ( r  1) F[1 /2,2( r 1),2( n  r )] 

Las funciones en R, para obtener los intervalos de confianza para la media y proporción son
t.test(…)$conf.int y binom.test(…)$conf.int, respectivamente.

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
c) Estimación de intervalo para la varianza

El intervalo de confianza al (1-α)% para la varianza de una población cuando la


muestra es grande (n>30):

 ( n  1) s 2
( n  1) s 2
IC ( 2 )   2 , 2 

 (1 /2)  (  /2) 
icvar<-function(datos,nivel){
alfa<-1-nivel
n<-length(datos)
s2<-var(datos)
LI<-(n-1)*s2/qchisq(1-alfa/2,n-1)
LS<-(n-1)*s2/qchisq(alfa/2,n-1)
limites<-c(LI,LS)
return(limites)
}

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
Pruebas de Hipótesis

En el análisis de datos, es muy recurrente preguntarse por el valor de


un parámetro en la población o por la relación entre dos parámetros.
Esto nos lleva a plantear una hipótesis.

Una hipótesis es una afirmación acerca de un parámetro o un conjunto


de parámetros.

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
Pruebas de Hipótesis

En estadística, se parte de dos hipótesis: la hipótesis nula (H0) y la


hipótesis alterna (H1). Cabe resaltar que la hipótesis nula es la referente
para desarrollar el análisis estádístico y mediante la cual se toma la
decisión final: aceptar H0 o rechazar H0.

La prueba de hipótesis se basa en una muestra aleatoria, lo cual puede


llevar a cometer un error. El nivel de significación α, conocido como el
error tipo I, es la probabilidad de rechazar H0 cuando realmente esta es
verdadera.

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
Unilateral Derecha
H0: θ≤θ0 vs H1: θ>θ0

Para un Unilateral Izquierda


parámetro θ
H0: θ≥θ0 vs H1: θ<θ0

Bilateral
Tipos de Pruebas H0: θ=θ0 vs H1: θ≠θ0
de Hipótesis

Unilateral Derecha
H0: θ1- θ2≤θ0 vs H1: θ1- θ2>θ0
Para una relación
de parámetros θ1
y θ2 *
Unilateral Izquierda
H0: θ1- θ2≥θ0 vs H1: θ1- θ2<θ0

Bilateral
H0: θ1- θ2=θ0 vs H1: θ1- θ2≠θ0
* Para parámetros media y proporción. En el caso de varianza se debe
considerar una razón θ1/θ2
Ing. Joao Rado Huaringa
INFERENCIA ESTADÍSTICA
Pruebas de Hipótesis para un parámetro θ

.
Una t.test(x, alternative = c("two.sided", "less", "greater"),
media (μ) mu = 0, paired = FALSE, conf.level = 0.95,…)

Donde:
• x: un vector numérico de datos
• alternative: tipo de prueba
• mu: valor de contraste hipotético
• paired: prueba pareada
• conf.level: nivel de confianza

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
Pruebas de Hipótesis para un parámetro θ

.
Una
binom.test(x, n, p = 0.5, alternative = c("two.sided",
"less", "greater"), conf.level = 0.95)
proporción
(π)

Donde:
• x: número de éxitos
• n= tamaño de muestra
• p: valor de contraste hipotético
• alternative: tipo de prueba
• conf.level: nivel de confianza

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
Pruebas de Hipótesis para dos parámetros θ1 y θ2

.
Razón de var.test(x, y, ratio = 1, alternative = c("two.sided", "less",
varianzas "greater"), conf.level = 0.95, ...)
(σ21 /σ22)

Donde:
• x: vector numérico de datos de la muestra 1
• y: vector numérico de datos de la muestra 2
• ratio: valor del contraste hipotético de razón de varianzas
• alternative: tipo de prueba
• conf.level: nivel de confianza

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
Pruebas de Hipótesis para dos parámetros θ1 y θ2

.t.test(x, y = NULL, alternative = c("two.sided", "less", Diferencia


"greater"), mu = 0, var.equal = FALSE,conf.level = 0.95, de medias
...)
(μ1 - μ2)

Donde:
• x: vector numérico de datos de la muestra 1
• y: vector numérico de datos de la muestra 2
• alternative: tipo de prueba
• mu: valor de contraste hipotético de diferencia de medias
• var.equal: es TRUE si las varianzas son homogéneas. Caso contrario es FALSE
• conf.level: nivel de confianza
Ing. Joao Rado Huaringa
INFERENCIA ESTADÍSTICA
Pruebas de Hipótesis para dos parámetros θ1 y θ2

. Diferencia de prop.test(x, n, p = NULL, alternative = c("two.sided",


proporciones "less", "greater"),conf.level = 0.95, correct = TRUE)
(π1 - π2)

Donde:
• x: vector numérico de datos con los conteos de la muestra 1 y muestra 2
• n: vector numérico de datos con los tamaños de la muestra 1 y muestra 2
• p: vector de probabilidades a contrastar del mismo tamaño al número de muestras.
Para la diferencia de proporciones no se activa este parámetro.
• alternative: tipo de prueba
• conf.level: nivel de confianza
• correct: Si su valor es TRUE aplica la corrección de Yates. Si es FALSE el valor del
estadístico es similar a la prueba Z. Ing. Joao Rado Huaringa
APLICACIÓN 4 (Continuación)
Usando los datos del archivo pollería.txt, se
.> datos<-read.delim("clipboard")
> head(datos)
X1 X2 X3 Local
1 194.74 2 3 San Juan de Miraflores
2 203.36 2 3 San Juan de Miraflores
3 207.02 1 3 San Juan de Miraflores
4 193.90 1 3 San Juan de Miraflores
5 197.83 1 3 San Juan de Miraflores
6 192.32 2 3 San Juan de Miraflores
> SJM<-subset(datos,datos$Local=="San Juan de Miraflores")
> LM<-subset(datos,datos$Local=="La Molina")
> LO<-subset(datos,datos$Local=="Los Olivos")
> CL<-subset(datos,datos$Local=="Cercado de Lima")

1. Estime un intervalo de confianza al 90% para el monto promedio de


facturas en el local de La Molina
> t.test(LM$X1,conf.level = 0.90)$conf.int
[1] 248.3941 250.9079
attr(,"conf.level")
[1] 0.9

Ing. Joao Rado Huaringa


APLICACIÓN 4 (Continuación)
2. Estime un intervalo de confianza al 94% para la proporción de pedidos a
. domicilio en el distrito de San Juan de Miraflores.
> table(SJM$X2)
1 2
20 70
> binom.test(20,sum(table(LM$X2)),conf.level=0.94)$conf.int
[1] 0.1291270 0.2881373
attr(,"conf.level")
[1] 0.94

3. Estime un intervalo de confianza al 95% para la varianza del monto de


facturas en el local de Los Olivos.
> icvar<-function(datos,nivel){
+ alfa<-1-nivel
+ n<-length(datos)
+ s2<-var(datos)
+ LI<-(n-1)*s2/qchisq(1-alfa/2,n-1)
+ LS<-(n-1)*s2/qchisq(alfa/2,n-1)
+ limites<-c(LI,LS)
+ return(limites)
+ }
> icvar(LO$X1,0.95)
[1] 92.0507 180.2755
Ing. Joao Rado Huaringa
APLICACIÓN 4 (Continuación)
4. Pruebe si la proporción de pedidos a domicilio en La Molina es inferior a
. 0.5. Use un nivel de significancia del 5%
> table(LM$X2)
1 2
49 51
> binom.test(49,sum(table(LM$X2)),p=0.5,alternative="less",conf.level=0.95)

Exact binomial test

data: 49 and sum(table(LM$X2))


number of successes = 49, number of trials = 100, p-value = 0.4602
alternative hypothesis: true probability of success is less than 0.5
95 percent confidence interval:
0.0000000 0.5765893
sample estimates:
probability of success
0.49

Ing. Joao Rado Huaringa


APLICACIÓN 4 (Continuación)
5. Pruebe si el monto promedio de facturas en Los Olivos es superior al de San Juan de
. Miraflores. Use un nivel de significancia del 10%
> var.test(LO$X1,SJM$X1,conf.level = 0.9)
F test to compare two variances

data: LO$X1 and SJM$X1


F = 1.0469, num df = 69, denom df = 89, p-value = 0.8328
alternative hypothesis: true ratio of variances is not equal to 1
90 percent confidence interval:
0.7229237 1.5317893
sample estimates:
ratio of variances
1.046895

> t.test(LO$X1,SJM$X1,alternative="greater",var.equal = T,conf.level = 0.9)


Two Sample t-test

data: LO$X1 and SJM$X1


t = 9.8899, df = 158, p-value < 2.2e-16
alternative hypothesis: true difference in means is greater than 0
90 percent confidence interval:
15.14638 Inf
sample estimates:
mean of x mean of y
211.0327 193.6206

Ing. Joao Rado Huaringa


APLICACIÓN 4 (Continuación)
5. Pruebe si la proporción de pedidos a domicilio en Los Olivos es distinto al de La
. Molina. Use un nivel de significancia del 10%
> table(LO$X2)
1 2
16 54
> table(LM$X2)
1 2
49 51

> prop.test(x = c(16, 49), n = c(sum(table(LO$X2)),sum(table(LM$X2))),alternative =


"two.sided", conf.level=0.9)

2-sample test for equality of proportions with continuity correction

data: c(16, 49) out of c(sum(table(LO$X2)), sum(table(LM$X2)))


X-squared = 10.835, df = 1, p-value = 0.0009959
alternative hypothesis: two.sided
90 percent confidence interval:
-0.3900887 -0.1327684
sample estimates:
prop 1 prop 2
0.2285714 0.4900000

Ing. Joao Rado Huaringa


ANÁLISIS DE CORRELACIÓN
Análisis de Correlación Lineal

• El análisis de correlación lineal es el estudio del grado de asociación


existente entre dos variables cuantitativas aleatorias (X e Y).
• Los supuestos para este análisis es que las variables X e Y son aleatorias,
tienen distribuciones normales y presentan relación lineal entre ellas.
• Se basa en la observación simultánea de dos variables en cada elemento de
una muestra aleatoria.
• Los datos a recopilar son llamados bivariados

Ing. Joao Rado Huaringa


ANÁLISIS DE CORRELACIÓN
Gráfico de Dispersión

• Es un gráfico donde se colocan todas las coordenadas (x,y) de las


observaciones.
• Los datos pueden reflejar una tendencia lineal, cuadrática, etc.
• Relación positiva: tendencia ascendente de izquierda a derecha
• Relación negativa: tendencia descendente de izquierda a derecha

Ing. Joao Rado Huaringa


ANÁLISIS DE CORRELACIÓN
Coeficiente de Correlación Lineal Simple

• Es un indicador del grado de asociación existente entre dos variables


aleatorias X e Y.
• En una muestra este indicador se llama coeficiente de correlación muestral
(r).
• El valor de r puede variar dentro del intervalo [-1,1]. Si r=1 o r=-1 entonces
existe una correlación (positiva o negativa) perfecta entre los datos
observados de X e Y. Sin embargo, si r=0 entonces no existirá correlación.

Ing. Joao Rado Huaringa


ANÁLISIS DE CORRELACIÓN
Prueba de existencia de correlación

Si se desea verificar si existe una correlación entre las variables en estudio. Se


utilizaran las siguientes hipótesis:

H0: ρ=0
H1 : ρ ≠0
r
El estadístico de prueba es: tcal  ~ t( n  2)
(1  r )
2

n2

Donde r es el coeficiente de correlación muestral de Pearson.

Ing. Joao Rado Huaringa


APLICACIÓN 5
En un estudio sobre aceite de algodón se han observado las variables:
Y: Densidad de aceite de algodón (g/l)
X: Temperatura (grados centígrados) .
En una muestra de 10 observaciones se encontraron los siguientes resultados:
Y X
909 54
907 61
906 71
901 72
899 72
896 76
893 79
893 80
888 81
878 96

Los datos se encuentran en el archivo aceite.txt


Ing. Joao Rado Huaringa
APLICACIÓN 5
En R:
> cor.data<-read.delim("clipboard")
> plot(cor.data$X,cor.data$Y,main="Gráfica de Dispersión")
> segments(42,930,112,860,col="blue")

Gráfica de Dispersión
910
905
900
cor.data$Y

895
890
885
880

60 70 80 90

cor.data$X

Ing. Joao Rado Huaringa


INFERENCIA ESTADÍSTICA
Pruebas de Correlación

cor.test(x, y, alternative = c("two.sided", "less", "greater"), method =


c("pearson", "kendall", "spearman"), conf.level = 0.95,...)

Donde:
• x: vector numérico de datos con los datos de la variable X en la muestra
• y: vector numérico de datos con los datos de la variable Y en la muestra
• alternative: tipo de prueba
• method: tipo de coeficiente de correlación a usar. Por defecto es Pearson.
• conf.level: nivel de confianza

Ing. Joao Rado Huaringa


APLICACIÓN 5
En R:
> cor(cor.data)
Y X
La función cor() calcula una
Y 1.0000000 -0.9500937
matriz de correlación de variables.
X -0.9500937 1.0000000

> cor.test(cor.data$X,cor.data$Y)

Pearson's product-moment correlation

data: cor.data$X and cor.data$Y


t = -8.614, df = 8, p-value = 2.555e-05
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.9884345 -0.7975873
sample estimates: La función cor.test() obtiene los indicadores para la
cor prueba de existencia de correlación, los valores de un
-0.9500937 intervalo de confianza y el coeficiente de correlación
muestral

Ing. Joao Rado Huaringa


ANÁLISIS DE REGRESIÓN
Análisis de Regresión Lineal Simple

El análisis de regresión lineal simple estudia la relación funcional lineal entre


una variable dependiente (Y) y una variable independiente (X) a través de un
modelo. Este modelo es usado posteriormente para realizar predicciones.

El modelo poblacional de regresión lineal simple es

Yi   0  1 X i   i

La ecuación de regresión estimada es:

Yˆi  ˆ0  ˆ1 X i

Ing. Joao Rado Huaringa


ANÁLISIS DE REGRESIÓN
Análisis de Regresión Lineal Simple

Los supuestos que determinan la validez de la técnica son los siguientes:


• X es una variable fija medida sin error
• Y es una variable aleatoria
• Para cada valor de X, los valores Y tienen una distribución normal
• Los errores εi tienen distribución normal con media cero y varianza
constante σ2 y no están autocorrelacionados (εi es independiente de εj para
todo i≠j )

Ing. Joao Rado Huaringa


APLICACIÓN 6
Un ingeniero zootecnista está interesado en analizar el efecto de distintas
raciones semanales (en Kg.) de una nueva dieta para lechones sobre el
incremento de peso (en libras) que obtienen al finalizar el estudio.

Los datos se muestran a continuación:

Incremento 69 71 75 77 74 78 75 76 77 78 78 81 82 84 85
Alimento 10 12 16 17 16 18 19 20 21 22 23 32 33 35 37

Ing. Joao Rado Huaringa


APLICACIÓN 6
Con R:
> Incremento<-c(69,71,75,77,74,78,75,76,77,78,78,81,82,84,85)
> Alimento<-c(10,12,16,17,16,18,19,20,21,22,23,32,33,35,37)
> plot(Alimento,Incremento)
> mod<-lm(Incremento~Alimento)
> mod$coefficients
(Intercept) Alimento

85
66.2284518 0.5032424
> abline(mod,col="red")

80
Incremento
La función lm() de R permite obtener las estimaciones

75
por mínimos cuadrados de distintos modelos lineales.
La regresión lineal simple al ser uno de ellos se obtiene

70
usándola.
La ecuación de regresión estimada es la siguiente: 10 15 20 25 30 35

Yˆi  66.2285  0.5032 X i Alimento

Ing. Joao Rado Huaringa


ANÁLISIS DE REGRESIÓN
Análisis de Regresión Lineal Simple

a) Análisis de Varianza (ANVA)


El análisis de varianza descompone la variabilidad total de Y alrededor
de su media en dos componentes: variabilidad explicada (debido a la
regresión) y variabilidad no explicada (debido al error).

Fuente de Grados de Suma de Cuadrados Fcal


Variación Libertad cuadrados medio
𝑛
Regresión 1 2 CMR=SCR/1 Fc=CMR/CME
SCR=෍ 𝑌෠𝑖 − 𝑌ത
𝑖=1
𝑛
Error n-2 2 CME=SCE/(n-2)
SCE=෍ 𝑌𝑖 − 𝑌෠𝑖
𝑖=1
𝑛
Total n-1 SCT=෌𝑖=1 𝑌𝑖 − 𝑌ത 2

Ing. Joao Rado Huaringa


ANÁLISIS DE REGRESIÓN
Análisis de Regresión Lineal Simple

b) Prueba de dependencia lineal


La prueba estadística asociada al ANVA es llamada también prueba de
dependencia lineal. Las hipótesis son las siguientes:
H0: β=0
H1 : β≠0
CMR
El estadístico de prueba es Fcal  ~ F(1,n 2)
CME
c) Coeficiente de Determinación (R2)
El coeficiente de determinación indica el porcentaje de variabilidad de
la variable respuesta (Y) explicada por la variable independiente (X).

R2=SCR*100%/SCT

Ing. Joao Rado Huaringa


APLICACIÓN 6
El programa R obtiene el cuadro ANVA:
> anova(mod)
Analysis of Variance Table La función anova() calcula la tabla de
análisis de varianza de un modelo lineal
Response: Incremento
Df Sum Sq Mean Sq F value Pr(>F)
Alimento 1 249.94 249.944 138.92 2.591e-08 ***
Residuals 13 23.39 1.799
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Al cuadro ANVA se le añade el p-valor de la prueba estadística de dependencia lineal y su


significancia. Además se incorpora una leyenda para esta:

Símbolo Pvalor Interpretación


*** P-valor<0.001 Resultados altamente significativos

** 0.001≤P-valor<0.01 Resultados moderadamente significativos

* 0.01≤P-valor<0.05 Resultados significativos

. 0.05≤P-valor<0.1 Resultados ligeramente significativos

P-valor≥0.1 Resultados no significativos


Ing. Joao Rado Huaringa
APLICACIÓN 6
El programa R también proporciona el coeficiente de determinación, el
estadístico de prueba y p-valor:
> summary(mod)
Si se aplica la función summary() al modelo de
Call:
regresión lineal obtenido anteriormente se presentará
lm(formula = Incremento ~ Alimento)
en el resumen: estadísticos descriptivos de los
residuales, el análisis de los coeficientes de regresión,
Residuals:
la raíz del CME, el R2, R2ajustado, F calculado, sus
Min 1Q Median 3Q Max
grados de libertad y p-valor asociado
-2.2609 -0.8127 0.1516 0.4518 2.7132

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 66.2284 1.0038 65.98 < 2e-16 ***
Alimento 0.5032 0.0427 11.79 2.59e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.341 on 13 degrees of freedom


Multiple R-squared: 0.9144, Adjusted R-squared: 0.9078
F-statistic: 138.9 on 1 and 13 DF, p-value: 2.591e-08

Ing. Joao Rado Huaringa


ANÁLISIS DE REGRESIÓN
Análisis de Regresión Lineal Simple

d) Diagnóstico de residuales
Existen varias herramientas gráficas para analizar los residuales
obtenidos de un modelo de regresión. Es importante realizar un
adecuado diagnóstico ya que estos influyen en el cumplimiento de los
supuestos así como en el modelo.
Las gráficas que presenta el R son:
 Valores ajustados vs. Residuales
 Cuantiles teóricos normales vs. Residuales estandarizados
(Gráfica Q-Q)
 Valores ajustados vs. Raíz de los residuales estandarizados
(Locación - Escala)
 Leverage vs. Residuales estandarizados
Ing. Joao Rado Huaringa
APLICACIÓN 6
Análisis de Regresión Lineal Simple
Diagnóstico de residuales

Ing. Joao Rado Huaringa


ANÁLISIS DE REGRESIÓN
Análisis de Regresión Lineal Simple

e) Verificación de Supuestos
En R, se pueden utilizar distintas pruebas para verificar el supuesto de
normalidad y varianza constante de los errores. Las hipótesis a poner a
prueba son las siguientes:

Normalidad
H0: Los errores se distribuyen normalmente
H1 : Los errores no se distribuyen normalmente

Varianza constante
H0: Los errores tienen varianza constante
H1 : Los errores no tienen varianza constante
Ing. Joao Rado Huaringa
APLICACIÓN 6
Una de las pruebas para verificar la normalidad en datos es Shapiro-Wilk. Está
basada en un cociente de dos estimaciones de varianza para la distribución
normal y es usada generalmente en muestras pequeñas. La función en el
paquete R es shapiro.test()
> shapiro.test(mod$residuals)

Shapiro-Wilk normality test

data: mod$residuals
W = 0.95084, p-value = 0.5377

Para verificar la varianza constante de los errores se utiliza la prueba de


Breusch-Pagan. En R, la prueba se encuentra en la función ncvTest(), que
pertenece a la librería car.
> library(car)
> ncvTest(mod)
Non-constant Variance Score Test
Variance formula: ~ fitted.values
Chisquare = 2.637061 Df = 1 p = 0.1043965

Ing. Joao Rado Huaringa


ANÁLISIS DE REGRESIÓN
Análisis de Regresión Lineal Simple

f) Estimación puntual
La estimación para un valor medio o individual de Yi se obtiene reemplazando
el valor particular de Xi en la siguiente ecuación de regresión:

Yˆi  ˆ0  ˆ1 X i


f) Estimación por intervalo para una media o un valor futuro de Y

Para un valor medio Para un valor individual


 ( X i  X )2    1 ( X i  X )2  
ˆ 21 ˆ 2
IC ( Y / X )  Yi  t(1 /2,n 2) s    IC (Yi )  Yi  t(1 /2,n 2) s  1   
  n SC ( X )     n SC ( X )  

Ing. Joao Rado Huaringa


APLICACIÓN 6
Obtenga la estimación puntual para el peso final, un intervalo de confianza al
90% para la media y para un valor individual cuando la cantidad de alimento
brindado es de 25 Kg.

> nuevo<-data.frame(Alimento=25)
> nuevo
Alimento
La función predict()
1 25 obtiene predicciones e
> predict(mod,nuevo) intervalos de confianza
1
78.80951
para un modelo de
> predict(mod,nuevo,interval="confidence",level=0.90) regresión. Para poder
fit lwr upr utilizarla es necesario
1 78.80951 78.15731 79.46172
> predict(mod,nuevo,interval="prediction",level=0.90)
almacenar el nuevo valor
fit lwr upr (o nuevos valores de X) en
1 78.80951 76.34617 81.27285 un objeto data.frame.

Si se desean obtener intervalos se utiliza el argumento


interval acompañado de level para indicar el tipo de
intervalo y nivel de confianza

Ing. Joao Rado Huaringa