Trabajo - Grupo 0 1

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 31

“Año de la lucha contra la

corrupción e impunidad”
FACULTAD DE CIENCIAS

 DOCENTE:
Mg. Pintado
 ESCUELA:
Estadística
 CURSO:
Estadística Computacional I
 TEMA:
EL SOFTWARE R (Capítulo I, II y III)
 INTEGRANTES:
Ojeda Silupu Jairon
Salinas Juarez Brenda Liduvina
Vilchez Mogollon Angie Valeria
Otero Jimenez Jose Alejandro
Zapata Adrianzen Jose Luis Jhonatan

Piura-peru
2019
INTRODUCCIÓN

R es un entorno y lenguaje de programación con un enfoque al análisis


estadístico.
R nació como una implementación de software libre del lenguaje S, adicionado
con soporte para alcance estático. Se trata de uno de los lenguajes de
programación más utilizados en investigación científica, siendo además muy
popular en los campos de aprendizaje de máquinas, minería de
datos, investigación biomédica, bioinformática y matemáticas financieras. A esto
contribuye la posibilidad de cargar diferentes bibliotecas o paquetes con
funcionalidades de cálculo y graficación.
R es parte del sistema GNU y se distribuye bajo la licencia GNU GPL. Está
disponible para los sistemas operativos Windows, Macintosh, Unix y GNU/Linux.
R proporciona un amplio abanico de herramientas estadísticas
(modelos lineales y no lineales, test estadísticos, análisis de series temporales,
algoritmos de clasificación y agrupamiento, etc.) y gráficas Una Herramienta Útil.
R forma parte de un proyecto colaborativo y abierto. Sus usuarios pueden publicar
paquetes que extienden su configuración básica. Existe un repositorio oficial de
paquetes cuyo número superó en otoño de 2009 la cifra de los 2000.
Dado el enorme número de nuevos paquetes, estos se han organizado en vistas
(o temas), que permiten agruparlos según su naturaleza y función. Por ejemplo,
hay grupos de paquetes relacionados con estadística
bayesiana, econometría, series temporales, etc.
Para facilitar el desarrollo de nuevos paquetes, se ha puesto a servicio de la
comunidad una forja de desarrollo que facilita las tareas relativas a dicho proceso.

2
1. COMANDOS Y CONCEPTOS BASICOS:
Una vez instale R en su computador, el programa se puede iniciar corriendo el
archivo ejecutable correspondiente. El cursor, que por defecto es el símbolo ‘>’,
indica que R está listo para recibir un comando.
De hecho, cuando se utiliza R por primera vez, es muy útil tener una idea
general de cómo funciona y eso es precisamente lo que vamos hacer ahora.
Como primera medida, veremos brevemente como funciona R. Posteriormente,
describiré el operador “asignar” el cual permite crear objetos en R, miraremos
como manejar estos ´ objetos en memoria, y finalmente veremos cómo usar la
ayuda en línea, la cual a diferencia de las ayudas en otros programas
estadísticos, es bastante útil e intuitiva. Aquí describimos únicamente la utilidad
específica de cada comando, para consultar la sintaxis precisa de cada uno de
ellos.
Obteniendo ayuda: Para obtener ayuda acerca de, por ejemplo, la función
plot, se podrían utilizar los siguientes comandos ?plot, help(plot),
help.search(plot). Los dos primeros son equivalentes y el tercero permite
realizar búsquedas más avanzadas. Además, también se pueden utilizar los
correspondientes elementos del menú help.
Case sensitivity: El lenguaje R es “case sensitive”, es decir, distingue entre
mayúsculas y minúsculas.
Robustez: El lenguaje R es un lenguaje robusto. En otras palabras intenta, en
la medida de lo posible, no dar mensajes de error. Esto en general es cómodo,
pero hay que tener cuidado, es posible que al ejecutar un comando no
obtengamos ningún error y sin embargo R no esté haciendo lo que nosotros
pretendíamos.
Importar código: El comando source(“comandos.R”) permite introducir
comandos procedentes de archivos. Útil para cargar funciones elaboradas por
el usuario o bien para ejecutar macros y scripts.
Exportar: El comando sink(“archivo”), nos permite que la salida de los
comandos posteriores se almacene en “archivo”. Para devolver la salida a la
pantalla se usa nuevamente el comando sink(). Usado principalmente para
guardar salidas de datos en archivos de texto.
Funciones: Para consultar el código de una función en R, ya sea una función
propia de R o bien una del usuario, basta con teclear el nombre en la línea de
comandos (sin paréntesis ni ningún tipo de argumentos).
Workspace: El comando getwd() nos devuelve el directorio de trabajo y el
comando setwd() nos permite modificarlo. Al iniciar el programa R se abre

3
automáticamente un espacio de trabajo, en el se almacenan todos los datos,
funciones... usadas durante esa sesión. En cualquier momento se pueden
guardar todos los objetos del espacio de trabajo como un archivo con
extensión “.RData” (men´u file). Como norma general, las funciones y objetos
de datos es mejor guardarlos en archivos propios; esto evita tener objetos
innecesarios en el “workspace”. La mejor forma de hacer esto será guardando
uno o varios objetos en un archivo (de extensi´on .RData) con el comando
save(objectos, file=“nombre.RData”). Si en sesiones posteriores se necesitan
se pueden cargar con la funci´on load().
Librerías: Al iniciar el programa R se cargan por defecto unas librerías
básicas. A veces es necesario cargar otras librerías para realizar ciertos
análisis, o llamar a algunas funciones “no básicas”. Esto se hace a través del
comando library(nombre).
Listados: El comando ls() nos proporciona un listado de los objetos que hay
actualmente en el espacio de trabajo. Para hacer búsquedas de objetos en el
espacio de trabajo se pueden utilizar los comandos apropos() y find(). Además,
el comando search() nos da una lista de las librerías cargadas (más adelante
veremos que no es lo único que lista este comando).
Borrado: Para eliminar uno o varios objetos del espacio de trabajo se usa el
comando rm(objectos).
Historial de comandos: Mediante el teclado (flechas) se puede acceder a los
´últimos comandos ejecutados. Además, el comando history() nos devuelve un
archivo de texto con los últimos comandos ejecutados.

2. OBJETOS Y OPERACIONES BASICAS:

En el lenguaje R se puede trabajar con varias clases de objetos; algunos de


ellos son estándar en cualquier lenguaje de programación y otros son

4
objetos específicos de R, objetos pensados para ser manejados con
propósitos estadísticos.

2.1. VECTORES:

 Un vector es una concatenación de datos


 Todos los datos deben de ser del mismo tipo
 Si los datos son de distintos tipos, R realiza una transformación
automática.
 Cada dato recibe un índice según el orden en el que se concatenó
(comenzando por 1)
 Podemos acceder a cada dato por su índice.
 Para crear un vector usamos la función c()
 Ejemplo:
Datos<- c(2,1,3,-1,10,0,0,1)
 En R existen expresiones para generar sucesiones de números:
1:10
1 2 3 4 5 6 7 8 9 10
15:11
15 14 13 12 11
1:10-1
0123456789
 También podemos usar las funciones seq y rep.

Función seq
>seq(10) #mismo efecto de 1:10
1 2 3 4 5 6 7 8 9 10
> seq(1,10, by=3) #saltando de 3 en 3
1 4 7 10

Función rep
> rep(1:4,2) #repetimos 1:4 dos veces.
12341234
> rep(1:4,each=2) #repetimos 1:4 dos veces,
#intercalando el resultado.
11223344
 Podemos nombrar los elementos de un vector:
> v = c(45,43,56,48,51)
> names(v) <- c(“Lun”,”Mar”,”Mie”,”Jue”,”Vie”)
> v Lun Mar Mie Jue Vie
45 43 56 48 51
> names(v)
[1] “Lun” “Mar” “Mie” “Jue” “Vie”

5
 Podemos utilizar sobre vectores las operaciones aritmético-lógicas
descritas en la sección anterior.
 La operación devolverá otro vector con los resultados tras aplicar la
operación elemento a elemento.
v1 <- c(5,1,5)
v2 <- c(2,1,3)
v1 == v2
FALSE TRUE FALSE
v1 + v2
728
v1 == 5
TRUE FALSE TRUE
 Algunas funciones útiles con vectores:
 length(): Devuelve el tamaño de un vector.
v <- c(5,10,0,0,2) length(v) 5
 min(), max(): Devuelven respectivamente el elemento mínimo y
máximo de un vector.
min(v)
0
max(v)
10
 sum() : Suma todos los elementos de vector.
sum(v)
17
 mean(), median() : Calculan respectivamente la media y la mediana
de los elementos de un vector.
mean(v)
3.4
median(v)
2
 sort() : Ordena los elementos de un vector.
sort(v)
0 0 2 5 10
 unique() : Devuelve un vector sin elementos repetidos.
unique(v)
5 10 0 2
 which(): Recibe una expresión que devuelve un vector lógico y
devuelve los índices true del vector lógico.
v>3
TRUE TRUE FALSE FALSE FALSE
which(v>3)
12

6
 which.max(), which.min(): Devuelven respectivamente los índices
de los elementos mínimo y máximo de un vector.
which.min(v)
3
which.max(v)
2
 Usar la función ‘‘help’’ para más información.

2.2. ARRAYS Y MATRICES:


Las matrices y arrays pueden ser descritas como vectores
multidimensionales. Al igual que un vector, únicamente pueden
contener datos de un sólo tipo, pero además de largo, tienen más
dimensiones.
En un sentido estricto, las matrices son una caso especial de un
array, que se distingue por tener específicamente dos
dimensiones, un “largo”" y un “alto”. Las matrices son, por lo
tanto, una estructura con forma rectangular, con renglones y
columnas.

 Creaciones de matrices.

Creamos matrices en R con la función matrix(). La


función matrix() acepta dos argumentos, nrow y ncol. Con ellos
especificamos el número de filas y columnas que tendrá nuestra
matriz.

# Un vector numérico del uno al doce


1:12
## [1] 1 2 3 4 5 6 7 8 9 10 11 12

# matrix() sin especificar filas ni columnas


matrix(1:12)

## [,1]
## [1,] 1
## [2,] 2

7
## [3,] 3
## [4,] 4
## [5,] 5
## [6,] 6
## [7,] 7
## [8,] 8
## [9,] 9
## [10,] 10
## [11,] 11
## [12,] 12

# Tres filas y cuatro columnas


matrix(1:12, nrow = 3, ncol = 4)

## [,1] [,2] [,3] [,4]


## [1,] 1 4 7 10
## [2,] 2 5 8 11
## [3,] 3 6 9 12

# Cuatro filas y tres columnas


matrix(1:12, nrow = 4, ncol = 3)

## [,1] [,2] [,3]


## [1,] 1 5 9
## [2,] 2 6 10
## [3,] 3 7 11
## [4,] 4 8 12

# Dos renglones y seis columnas


matrix(1:12, nrow = 4, ncol = 3)

## [,1] [,2] [,3]


## [1,] 1 5 9
## [2,] 2 6 10
## [3,] 3 7 11
## [4,] 4 8 12

 No obstante que las matrices y arrays son estructuras que sólo


pueden contener un tipo de datos, no son atómicas. Su clase es igual
a matriz (matrix) o array segun corresponda.
Verificamos esto usando la función class().

mi_matriz <- matrix(1:10)


8
class(mi_matriz)

## [1] "matrix"

 Las matrices y arrays pueden tener más de una dimensión.


Obtenemos el número de dimensiones de una matriz o array con la
función dim(). Esta función nos devolverá varios números, cada uno de
ellos indica la cantidad de elementos que tiene una dimensión.

mi_matriz <- matrix(1:12, nrow = 4, ncol = 3)

dim(mi_matriz)

## [1] 4 3

 Cabe señalar que si usamos dim() con un vector, obtenemos NULL.


Esto ocurre con todos los objetos unidimensionales.

mi_vector <- 1:12

dim(mi_vector)

## NULL

 Finalmente, las operaciones aritméticas también son vectorizadas al


aplicarlas a una matriz. La operación es aplicada a cada uno de los
elementos de la matriz. Creamos una matriz:

mi_matriz <- matrix(1:9, nrow = 3, ncol = 3)

# Resultado
mi_matriz

## [,1] [,2] [,3]


## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9

 sumar, multiplicar y elevar a la tercera potencia.

# Suma
mi_matriz + 1

9
## [,1] [,2] [,3]
## [1,] 2 5 8
## [2,] 3 6 9
## [3,] 4 7 10

# Multiplicación
mi_matriz * 2

## [,1] [,2] [,3]


## [1,] 2 8 14
## [2,] 4 10 16
## [3,] 6 12 18

# Potenciación
mi_matriz ^ 3

## [,1] [,2] [,3]


## [1,] 1 64 343
## [2,] 8 125 512
## [3,] 27 216 729

 Si intentamos vectorizar una operación utilizando una matriz con NA


S, esta se aplicará para los elementos válidos,
devolviendo NA cuando corresponda. Creamos una matriz con NA S.

vector_1 <- c(NA, 2, 3)

vector_2 <- c(4, 5, NA)

matriz <- rbind(vector_1, vector_2)

# Resultado

Matriz

## [,1] [,2] [,3]

## vector_1 NA 2 3

## vector_2 4 5 NA

 Intentamos dividir sus elementos entre dos.

matriz / 2

## [,1] [,2] [,3]


## vector_1 NA 1.0 1.5
## vector_2 2 2.5 NA

10
 Finalmente, podemos usar la función t() para transponer una matriz,
es decir, rotarla 90°.Creamos una matriz con tres renglones y dos
columnas.

matriz <- matrix(1:6, nrow = 3)

# Resultado
Matriz

## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6

 Usamos t() para transponer.


matriz_t <- t(matriz)

# Resultado

matriz_t

## [,1] [,2] [,3]


## [1,] 1 2 3
## [2,] 4 5 6
 Obtenemos una matriz con dos renglones y dos columnas.

2.3. LAS FUNCIONES APPLY Y TAPPLY:

Las funciones apply y tapply son muy importantes a la hora de


programar códigos eficientes para el manejo de grandes conjuntos
de datos. Permiten ahorrarse el uso de muchos bucles, lo cual lleva
a un código más legible y, en muchos casos, más eficiente. La
función apply permite realizar la misma operación en todas las filas,
columnas. . . de un array simultáneamente. Solo hay que indicarle la
operación a realizar y el ´índice/´índices sobre los ha de realizarla:

[,1] [,2] [,3]

[1,] 1 4 7

[2,] -2 -5 -8
[3,] -3 -6 -9

11
Suma de los elementos de cada una de las filas de A:

apply(A,1,sum)

[1] 12 -15 -18

Suma de los elementos de cada una de las columnas de A:


apply(A,2,sum)

-4 -7 -10

También se puede usar apply con funciones más generales:


apply(A,1, is.vector )

TRUE TRUE TRUE

Pasemos ahora a la función tapply. Su función y su sintaxis es


similar a la de apply. Mientras que apply permite hacer fácilmente
operaciones sobre elementos agrupados por filas, columnas. . . la
función tapply se usa cuando los elementos están po en factores.
Como ejemplo, tomemos el factor provf definido anteriormente, en el
que hemos agrupado unos individuos seg´un su provincia de
procedencia. Tomemos ahora un vector con el número de hijos de
cada individuo, digamos hijos<-c(1,3,2,2,3,5,3,2,1,2,3,1,2,4,1,0)

La función tapply nos permite calcular, por ejemplo, el número medio


de hijos en cada provincia. A tapply le damos primero el vector hijo,
después el factor provf, que describe como queremos agrupar el
vector hijos, y, finalmente, le decimos la función a aplicar sobre cada
grupo, mean:

tapply(hijos,provf,mean)

co lu or po
3.000000 1.400000 3.000000 1.333333

Al igual que la función apply, la función tapply se puede usar con


funciones mucho más generales que la función mean.

2.4. Data Frame:

Los data frames son estructuras de datos de dos dimensiones


(rectangulares) que pueden contener datos de diferentes tipos, por
lo tanto, son heterogéneas. Esta estructura de datos es la más
usada para realizar análisis de datos y seguro te resultará familiar
si has trabajado con otros paquetes estadísticos.
Podemos entender a los data frames como una versión más
flexible de una matriz. Mientras que en una matriz todas las celdas
12
deben contener datos del mismo tipo, los renglones de un data
frame admiten datos de distintos tipos, pero sus columnas
conservan la restricción de contener datos de un sólo tipo.

En términos generales, los renglones en un data frame representan


casos, individuos u observaciones, mientras que las columnas
representan atributos, rasgos o variables. Por ejemplo, así lucen
los primeros cinco renglones del objeto iris, el famoso conjunto de
datos Iris de Ronald Fisher, que está incluido en todas las
instalaciones de R.

2.5. Listas:

Las listas, al igual que los vectores, son estructuras de datos


unidimensionales, sólo tienen largo, pero a diferencia de los
vectores cada uno de sus elementos puede ser de diferente tipo o
incluso de diferente clase, por lo que son estructuras
heterogéneas.

Podemos tener listas que contengan datos atómicos, vectores,


matrices, arrays, data frames u otras listas. Esta última
característica es la razón por la que una lista puede ser
considerada un vector recursivo, pues es un objeto que puede
contener objetos de su misma clase.

Para crear una lista usamos la función list(), que nos pedirá los
elementos que deseamos incluir en nuestra lista. Para esta
estructura, no importan las dimensiones o largo de los elementos
que queramos incluir en ella.

Al igual que con un data frame, tenemos la opción de poner


nombre a cada elemento de una lista.

Por último, no es posible vectorizar operaciones aritméticas usando


una lista, se nos devuelve un error como resultado.

2.6. Procedimientos gráficos

Estas funciones se dividen en dos grandes grupos:

Gráficos de alto nivel:

Crean un nuevo gráfico en la ventana de gráficos.


Parámetros más importantes comunes a la mayoría de gráficos de alto nivel:

13
add=TRUE Fuerza a la función a actuar como si fuese de bajo nivel (intenta
superponerse a un grafico ya existente). Hay que tener cuidado, no sirve para
todas las funciones.

type Indica el tipo de grafico a realizar, cabe destacar type="p" para


representar puntos (opción por defecto), type="l" para representar líneas,
type="b" para representar los puntos unidos por líneas.

Gráficos de bajo nivel:

Los comandos de bajo nivel sirven para añadir información extra a los gráficos que
producen los comandos de alto nivel. Por ejemplo, podríamos querer añadir texto
a un gráfico, puntos extras, líneas. Entre los más importantes podemos destacar:
points(x,y) Añade puntos o líneas conectadas al gráfico actual
lines(x,y)
text(x,y,etiquetas) Añade texto al gráfico actual en la posición x,y.
abline(a,b) Añade una línea de pendiente a y que corta al origen en b
abline(h=y) Añade línea horizontal que corta al eje y en h=y
abline(v=x) Lo análogo para línea vertical.
polygon(x,y) Dibuja un polígono.
title(main,sub) Añade título y subtítulo al gráfico actual
axis(side) Añade ejes al gráfico actual (de 1 a 4).

Varios gráficos en una misma ventana

Para conseguir esto se usa el comando par, con la opción mfrow.

Ejemplos:

par(mfrow=c(1,1)) # un solo gráfico por ventana: la opción por defecto


par(mfrow=c(2,1)) # Dibuja una matriz de gráficos 2x1: un gráfico debajo de
otro
par(mfrow=c(2,3)) # Matriz de gráficos 2 x 3 : dos filas por tres columnas

Un ejemplo:

> x = rnorm(200) # Se generan 200 valores de una normal estandarizada


> par(mfrow=c(2,2)) # Se crea una matriz de gráficos 2 x 2
> plot(x) # Dibujo de x frente al índice 1 a 200
> hist(x) # Histograma de x

14
> boxplot(x) # Diagrama de caja de x
> qqnorm(x) # Gráfico cuantil-cuantil de x frente a la distribución normal

2.7. Programando en R

La principal ventaja de R (y S-plus) sobre la mayoría del software estadístico es


que permite combinar sus librerías especializadas con un lenguaje de
programación propio.. A continuación veremos las principales características de
la programación en R.

 Agrupando comandos: R permite escribir varios comandos en la misma


línea. Esto se hace poniendo un marcador de final de comando antes de
empezar el siguiente. El marcador utilizado en R es “;”.

 Expresiones: Una serie de comandos escritos entre llaves forman una


expresión, el resultado de la misma será el de su ultimo comando; la
estructura general de una expresión es {cmd_1; cmd_2; ... cmd_n}.
Puede haber expresiones anidadas, que evalúan de dentro hacia fuera.
Son el componente principal de funciones, bucles...

 Ejecución condicional: Como en todos los lenguajes de programación,


esto se hace con las sentencias if. Estas sentencias en R tienen la
siguiente sintaxis:

if (expr_1) {expr_2}

else if (expr_3) {expr_4}

else {expr_5}

donde expr_1 y expr_3 deben devolver un valor lógico. En R también se pueden


construir sentencias if anidadas (no es más que anidar expresiones). La
sentencia condicional switch también está definida en R.

 Bucles: R admite los bucles for, repeat y while.

-for:la sintaxis para un bucle que mueva un índice i desde 1 hasta


n: for (i in 1:n) {expr}

-repeat: repeat expr. En este caso hay que asegurarse de que en


algún momento de expr se llega a un break/return que nos saca del
bucle.

-while: while(cond) expr. Depurando el código: Las funciones print()


y cat() nos permiten imprimir datos en pantalla durante la
ejecuci´on de un programa. Útil tanto para presentar la salida de
resultados como para depurar el código.

15
 Depurando el código: Las funciones print() y cat() nos permiten imprimir
datos en pantalla durante la ejecución de un programa.

2.8. Funciones:

A diferencia de otros lenguajes de programación procedurales, como C, Java, y


PHP, en R las funciones constituyen una clase. Por ejemplo, los objetos de esa
clase pueden ser asignados a variables; podría darse el caso, incluso, de armar
una lista cuyos elementos fueran funciones.

Aunque la escritura de funciones es parte de la programación que se verá más


adelante, se indicará aquí la forma de crear funciones como una herramienta
para agrupar varias operaciones.

La sintaxis para la creación de una función es como sigue:

variable <- function(arg_1, arg_2, ..., arg_n) expresio

2.9. Librerías:

Lista de librerías para usar a lo largo de la asignatura:

Librerías básicas (se cargan por defecto)

 base: Contiene las bases de R.

 ctest: Librería para realizar test estadísticos clásicos.

 methods: Librería para trabajar en R con métodos y clases (no la


usaremos).

 modreg: Trae implementadas técnicas para regresiones.

 nls: Librería para llevar a cabo regresiones no lineales.

 mva: Análisis multivariante.

 ts: Series de tiempo.


Librerías específicas

 MASS: Librería bastante variada, tiene desde funciones avanzadas para


la realización de histogramas, hasta transformaciones box-cox y
funciones para el análisis discriminante.

 lattice: Librería con gran cantidad de funciones graficas implementadas.

 scatterplot3D: Librería para hacer gráficos de dispersión en 3D.

16
 KernSmooth: Funciones para inferencia no paramétrica a través de
estimadores tipo núcleo.

 foreign: Librería para importar datos, principalmente de SPSS. RODBC:


Importar datos de bases usando ODBC. stepfun: Librería para
representar funciones escalonadas (funciones de distribución empíricas).

 gregmisc: Herramientas estadísticas varias.

 DAAG: Herramientas para el análisis grafico de datos.


2.10. Importando datos

Como importar datos de SPSS, Excel y archivos de texto:

 Teclado: Edemas de las formas vistas hasta ahora para introducir datos
por teclado existen otras dos. La primera es la función scan(); después de
ejecutar la función hay que introducir los valores del vector separados por
espacios. La segunda , consiste en crear un vector, matriz... inicializado a
0 y después aplicarle la función data.entry() para abrir una hoja que nos
permite editar fácilmente el conjunto de datos.

 R: El programa R trae con su instalación múltiples conjuntos de datos.


Para ver un listado de los mismos basta teclear data(), para cargar uno
concreto se ha de usar el comando data(name).

 Excel: Hay que cargar la librería RODBC, se guarda el archivo excel en el


directorio de trabajo de R y se abre la conexión a la base de datos:
conex<-odbcConnectExcel("archivo.xls") Esto almacena en conex las
referencias a las hojas del archivo excel. El comando sqlTables(conex)
nos proporcionaría las tablas disponibles, para cargar una de ellas
bastaría escribir el comando tabla <-sqlFetch(conex, "Nombre_tabla")

 SPSS: Se necesita cargar la librería foreign. Después obtenemos una


lista con los datos del archivo spss con la ayuda del comando
read.spss("archivo.sav") . El argumento to.data.frame=TRUE nos
permitiría obtener un data.frame en vez de una lista. .txt: Si un conjunto
de datos viene guardado en un archivo .

17
Ejemplo 01

Para empezar crearemos una matriz en R se utilizando la función

> A<-matrix(c(5, 7, 13, 4, 1, 7, 14, 3, 11), nrow=3, ncol=3)


>A
[,1] [,2] [,3]
[1,] 5 4 14
[2,] 7 1 3
[3,] 13 7 11

# Para asignar nombres a las filas de una matriz, vamos a utilizar la función

> rownames(A) <- c("Blanco", "Negro", "Rojo")


>A
[,1] [,2] [,3]
Blanco 5 4 14
Negro 7 1 3
Rojo 13 7 11

> colnames(A) <- c("Toyota", "Audi", "Nissan")


>A
Toyota Audi Nissan
Blanco 5 4 14
Negro 7 1 3
Rojo 13 7 11

AGREGANDO FILAS Y COLUMNAS A UNA MATRIZ: FUNCIONES RBIND Y C


BIND

> A<-rbind(A, Azul)


> Azul<-c(8,5,7)
> A<-rbind(A, Azul)
>A
Toyota Audi Nissan
Blanco 5 4 14
Negro 7 1 3
Rojo 13 7 11
Azul 8 5 7

18
> Hyundai<-c(2,7,3,5)
> A<-cbind(A,Hyundai)
>A
Toyota Audi Nissan Hyundai
Blanco 5 4 14 2
Negro 7 1 3 7
Rojo 13 7 11 3
Azul 8 5 7 5

SELECCIONANDO ELEMENTOS DE UNA MATRIZ.

> A["Blanco", "Audi"]


[1] 4
> A[1,2]
[1] 4

> A[1,]
Toyota Audi Nissan Hyundai
5 4 14 2
> A["Blanco",]
Toyota Audi Nissan Hyundai
5 4 14 2

A manera de ejercicios haremos lo siguiente:

 Seleccionar todos los vehículos negros y rojos

>A[2:3,]

Toyota Audi Nissan Hyundai


Negro 7 1 3 7
Rojo 13 7 11 3

 Seleccionar todos los vehículos marca Toyota y Audi

>A[,1:2]

Toyota Audi
Blanco 5 4
Negro 7 1
Rojo 13 7
Azul 8 5

19
 Seleccionar sólo los Nissan y Hyundai azules

>A[4,3:4]

Nissan Hyundai
7 5

 Agregar una nueva marca: Kia con valores 7, 1, 9, 12

> Kia<-c(7, 1, 9, 12)


> A<-cbind(A,Kia)
>A
Toyota Audi Nissan Hyundai Kia
Blanco 5 4 14 2 7
Negro 7 1 3 7 1
Rojo 13 7 11 3 9
Azul 8 5 7 5 12

 Agregar una nueva fila llamada Verde con los siguientes valores 4,5,2,1, 0

> Verde<-cbind(4, 5, 2, 1, 0)
> A<-rbind(A, Verde)
>A

Toyota Audi Nissan Hyundai Kia


Blanco 5 4 14 2 7
Negro 7 1 3 7 1
Rojo 13 7 11 3 9
Azul 8 5 7 5 12
Verde 4 5 2 1 0

 Seleccionar los Hyundai y Kia azules y verdes

>A[4:5,4:5]

Hyundai Kia
Azul 5 12
Verde 1 0

ELIMINANDO FILAS Y COLUMNAS

 Eliminando la columna Kia

> A<-A[ ,-5]


>A

20
Toyota Audi Nissan Hyundai
Blanco 5 4 14 2
Negro 7 1 3 7
Rojo 13 7 11 3
Azul 8 5 7 5
Verde 4 5 2 1

 Eliminando la fila Verde

> A<-A[-5,]
>A

Toyota Audi Nissan Hyundai


Blanco 5 4 14 2
Negro 7 1 3 7
Rojo 13 7 11 3
Azul 8 5 7 5

TRANSPONER UNA MATRIZ

 Matriz A

> print(A)

Toyota Audi Nissan Hyundai


Blanco 5 4 14 2
Negro 7 1 3 7
Rojo 13 7 11 3
Azul 8 5 7 5

 Transpuesta de A

> t(A)

Blanco Negro Rojo Azul


Toyota 5 7 13 8
Audi 4 1 7 5
Nissan 14 3 11 7
Hyundai 2 7 3 5

SUMA Y RESTA DE MATRICES

 A + t(A)

21
> A+t(A)

Toyota Audi Nissan Hyundai


Blanco 10 11 27 10
Negro 11 2 10 12
Rojo 27 10 22 10
Azul 10 12 10 10

 A - t(A)

> A-t(A)

Toyota Audi Nissan Hyundai


Blanco 0 -3 1 -6
Negro 3 0 -4 2
Rojo -1 4 0 -4
Azul 6 -2 4 0

MULTIPLICACIÓN DE MATRICES

 Multiplicación elemento a elemento

> A*t(A)
Toyota Audi Nissan Hyundai
Blanco 25 28 182 16
Negro 28 1 21 35
Rojo 182 21 121 21
Azul 16 35 21 25

 Multiplicación matricial

> A%*%t(A)
Blanco Negro Rojo Azul
Blanco 241 95 253 168
Negro 95 108 152 117
Rojo 253 152 348 231
Azul 168 117 231 163

Determinante de una matriz

> det(A)
[1] 1420

22
Inversa de una matriz

> solve(A)
Blanco Negro Rojo Azul
Toyota -0.04788732 0.10985915 0.188732394 -0.24788732
Audi -0.09577465 -0.28028169 -0.122535211 0.50422535
Nissan 0.11408451 0.03239437 -0.008450704 -0.08591549
Hyundai 0.01267606 0.05915493 -0.167605634 0.21267606

Extrayendo la diagonal principal de una matriz

 Diagonal de A

> diag(A)
[1] 5 1 11 5

 Diagonal de la inversa de A

> diag(solve(A))
[1] -0.047887324 -0.280281690 -0.008450704 0.212676056

23
EJEMPLO 02

ESTADISTICA DESCRIPTIVA APLICADA A LA SALUD


El establecimiento de salud clínica BELEN reúne un conjunto de datos, tomando
como variables " Peso, Altura, Edad, Sexo, Nombres" de lo cual desea llevar a
cabo un trabajo estadístico descriptivo, y así facilitar la interpretación de dichas
variables mediante gráficas y medidas de posición y dispersión con el fin obtener
resultados que se puedan utilizar para el caso que se crea conveniente.
INGRESO DE DATOS
peso<-c(77,58,89,55,47,60,54,58,75,65,82,85,75,65)
altura<-c(1.63,1.63,1.85,1.62,1.60,1.63,1.70,1.65,1.78,1.70,1.77,1.83,1.74,1.65)
edad<-c(23,23,26,23,26,26,22,23,26,24,28,42,25,26)
sexo<-c(1,2,1,1,2,2,1,2,2,1,1,1,2,2)
nombres<-
c("Pepe","Ana","Manolo","Rafa","Maria","Auxi","German","Celia","Carmen","Juan"
,"Dani" ,"Antonio","Belinda","Sara")
datos
Peso Altura Edad Sexo Nombres
1 77 1.63 23 1 Pepe
2 58 1.63 23 2 Ana
3 89 1.85 26 1 Manolo
4 55 1.62 23 1 Rafa
5 47 1.60 26 2 Maria
6 60 1.63 26 2 Auxi
7 54 1.70 22 1 German
8 58 1.65 23 2 Celia
9 75 1.78 26 2 Carmen
10 65 1.70 24 1 Juan
11 82 1.77 28 1 Dani
12 85 1.83 42 1 Antonio
13 75 1.74 25 2 Belinda
14 65 1.65 26 2 Sara

Calculamos las frecuencias absolutas y relativas de la variable peso

> tabla_peso <- table(Peso)


> tabla_peso

24
47 54 55 58 60 65 75 77 82 85 89
1 1 1 2 1 2 2 1 1 1 1

> prop.table(tabla_peso)
47 54 55 58 60 65 75
0.07142857 0.07142857 0.07142857 0.14285714 0.07142857 0.14285714 0.1428
5714

77 82 85 89

0.07142857 0.07142857 0.07142857 0.07142857

> > tabla_nombre <- table(nombres)


> tabla_nombre

Ana Antonio Auxi Belinda Carmen Celia Dani German Juan


1 1 1 1 1 1 1 1 Manolo Maria Pepe Rafa
Sara
1 1 1 1 1

> prop.table(tabla_nombre)

Ana Antonio Auxi Belinda Carmen Celia


0.07142857 0.07142857 0.07142857 0.07142857 0.07142857 0.07142857
Dani German Juan Manolo Maria
0.07142857 0.07142857 0.07142857 0.07142857 0.07142857
Pepe Rafa Sara
0.07142857 0.07142857 0.07142857

Representaciones graficas

GRAFICO CIRCULAR

> pie(table(edad),col = c("yellow","white","green","orange","purple","red","pink"),mai


n = "sector circular para la variable edad")

25
GRAFICO DE BARRAS

> barplot(table(edad),col=c("yellow","white","green","orange","purple","red","pink"),
xlab="edad",ylab="frecuencias absolutas",main="diagrama de barras para la variab
le edad")

graficos de barras para la variable sexo y edad


> barplot(table(Sexo,edad),col=c(2,3))

26
Histograma

> hist(table(edad),col = "purple",main = "histograma para la variable edad",xlab = "


edad", ylab = "frecuencia")

> grafico de cajas y bigotes


> boxplot(edad,xlab="Edad",main="cajas y bigotes para la variable edad")

27
MEDIDAS DE POSICION
> mean(peso)
[1] 67.5
> median(peso)
[1] 65

Entre las medidas de posición de tendencia no central, los cuantiles figuran entre l
as más utilizadas.

> quantile(peso, probs = c(0.25, 0.75))


25% 75%
58.0 76.5

minimo y maximo para la variable peso


> min(peso)
[1] 47
> max(peso)[1] 89

ORDENADO LOS DATOS


> sort(peso)
[1] 47 54 55 58 58 60 65 65 75 75 77 82 85 89
> sort(peso, decreasing = FALSE)#ordenamiento decresiente(falso)
[1] 47 54 55 58 58 60 65 65 75 75 77 82 85 89
> sort(peso, decreasing = TRUE)#ordenamiento decresiente(verdadero)
[1] 89 85 82 77 75 75 65 65 60 58 58 55 54 47

> ## funcion resumen


> summary(peso)
Min. 1st Qu. Median Mean 3rd Qu. Max.
47.0 58.0 65.0 67.5 76.5 89.0

28
DATA.FRAMES(TENIENDO EN CUENTA LOS DATOS ANTERIORES)
Teniendo en cuenta los datos del ejemplo anterior

> #accedo como los elementos de una matriz o de una lista


> datos<-matrix(c(77,1.63,23,1,58,1.63,23,2,89,1.85,26,1,55,1.62,23,1,47,1.60,26,
2,60,1.63,26,2,54,1.70,22,1,58,1.65,23,2,75,1.78,26,2,65,1.70,24,1,
+ 82,1.77,28,1,85,1.83,42,1,75,1.74,25,2,65,1.65,26,2),nrow=14,byrow=T)
> datos
[,1] [,2] [,3] [,4]
[1,] 77 1.63 23 1
[2,] 58 1.63 23 2
[3,] 89 1.85 26 1
[4,] 55 1.62 23 1
[5,] 47 1.60 26 2
[6,] 60 1.63 26 2
[7,] 54 1.70 22 1
[8,] 58 1.65 23 2
[9,] 75 1.78 26 2
[10,] 65 1.70 24 1
[11,] 82 1.77 28 1
[12,] 85 1.83 42 1
[13,] 75 1.74 25 2
[14,] 65 1.65 26 2

agrego un nombre a cada fila y a cada columna

> dimnames(datos)<-list(c("Pepe","Ana","Manolo","Rafa","Maria","Aury","German",
"Celia","Carmen","Juan","Dani","Antonio","Belinda","Sara"),c("peso"

,"altura","edad","sexo")

> datos
peso altura edad sexo
Pepe 77 1.63 23 1
Ana 58 1.63 23 2
Manolo 89 1.85 26 1
Rafa 55 1.62 23 1
Maria 47 1.60 26 2
Aury 60 1.63 26 2
German 54 1.70 22 1
Celia 58 1.65 23 2
Carmen 75 1.78 26 2
Juan 65 1.70 24 1
Dani 82 1.77 28 1
29
Antonio 85 1.83 42 1
Belinda 75 1.74 25 2
Sara 65 1.65 26 2

#se añade una columna a la matriz datos, pero todos los datos quedan en caracte
res

> origen=c("talara","sullana","piura","tambo grande","ayabaca","paita","Talara","chu


lucanas","morropon","Huancabamba","castilla","las lomas","frias","catacaos")

> datos2=cbind(datos,origen)
> datos2

peso altura edad sexo origen

Pepe "77" "1.63" "23" "1" "talara"


Ana "58" "1.63" "23" "2" "sullana"
Manolo "89" "1.85" "26" "1" "piura"
Rafa "55" "1.62" "23" "1" "tambo grande"
Maria "47" "1.6" "26" "2" "ayabaca"
Aury "60" "1.63" "26" "2" "paita"
German "54" "1.7" "22" "1" "Talara"
Celia "58" "1.65" "23" "2" "chulucanas"
Carmen "75" "1.78" "26" "2" "morropon"
Juan "65" "1.7" "24" "1" "Huancabamba"
Dani "82" "1.77" "28" "1" "castilla"
Antonio "85" "1.83" "42" "1" "las lomas"
Belinda "75" "1.74" "25" "2" "frias"
Sara "65" "1.65" "26" "2" "catacaos"

> datos3=data.frame(datos,origen) #quitando los caracteres


> datos

peso altura edad sexo origen


Pepe 77 1.63 23 1 talara
Ana 58 1.63 23 2 sullana
Manolo 89 1.85 26 1 piura
Rafa 55 1.62 23 1 tambo grande
Maria 47 1.60 26 2 ayabaca
Aury 60 1.63 26 2 paita
German 54 1.70 22 1 Talara
Celia 58 1.65 23 2 chulucanas
Carmen 75 1.78 26 2 morropon
Juan 65 1.70 24 1 Huancabamba
Dani 82 1.77 28 1 castilla
30
Antonio 85 1.83 42 1 las lomas
Belinda 75 1.74 25 2 frias
Sara 65 1.65 26 2 catacaos

> #media de la variable edad


> mean(datos[,"edad"])
[1] 25.92857

31

También podría gustarte