




























































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Fonaments de computadors, Profesor: xavier Roca, Carrera: Enginyeria Informàtica, Universidad: UAB
Tipo: Apuntes
1 / 106
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





























































































Notas sobre R: Un entorno de programaci´on para An´alisis de Datos y Gr´aficos Versi´on 1.0.1 (2000-05-16)
Copyright ©c 1990, 1992 W. Venables Copyright ©c 1997, R. Gentleman & R. Ihaka Copyright ©c 1997, 1998 M. M¨achler Copyright ©c 2000, Andr´es Gonz´alez y Silvia Gonz´alez Copyright ©c 1999, 2000 R Development Core Team
Se autoriza la realizaci´on y distribuci´on de copias literales de este manual, siempre y cuando las advertencias del copyright y de este permiso se conserven en todas las copias.
Se autoriza la realizaci^^f3n y distribuci´on de copias modificadas de este manual, en las mis- mas condiciones de las copias literales, siempre y cuando la totalidad del trabajo resultante se distribuya bajo los t´erminos de una advertencia de permiso id^^e9ntica a esta.
Se autoriza la realizaci^^f3n y distribuci´on de traducciones de este manual a otros idiomas, en las mismas condiciones de las copias modificadas, siempre y cuando la traducci´on de la advertencia de este permiso sea aprobada por el Equipo Central de Desarrollo de R.
5.7.3 Descomposici´on en valores singulares. Determinantes
................................................ 25 5.7.4 Ajuste por m´ınimos cuadrados. Descomposici´on QR
5.9 La funci´on de concatenaci´on, c(), con variables indexadas
11.3 Funciones gen´ericas de extracci´on de informaci´on del modelo
Pr´ologo 1
Estas notas sobre R est´an escritas a partir de un conjunto de notas que describ´ıan los entornos S y S-Plus escritas por Bill Venables y Dave Smith. Hemos realizado un peque˜no n´umero de cambios para reflejar las diferencias entre R y S.
R es un proyecto vivo y sus capacidades no coinciden totalmente con las de S. En estas notas hemos adoptado la convenci´on de que cualquier caracter´ıstica que se vaya a implementar se especifica como tal en el comienzo de la secci´on en que la caracter´ıstica es descrita. Los usuarios pueden contribuir al proyecto implementando cualquiera de ellas.
Deseamos dar las gracias m´as efusivas a Bill Venables por permitir la distribuci´on de esta versi´on modificada de las notas y por ser un defensor de R desde su inicio.
Cualquier comentario o correcci´on ser´an siempre bienvenidos. Dirija cualquier correspon- dencia a [email protected].
La primera relaci´on con R deber´ıa ser la sesi´on inicial del Apendice A [Ejemplo de sesion], p´agina 84. Est´a escrita para que se pueda conseguir cierta familiaridad con el estilo de las sesiones de R y para comprobar que coincide con la versi´on actual.
Muchos usuarios eligen R fundamentalmente por sus capacidades gr´aficas. Si ese es su caso, deber´ıa leer antes o despu´es el Cap´ıtulo 12 [Graficos], p´agina 69, sobre capacidades gr´aficas y para ello no es necesario esperar a haber asimilado totalmente las secciones precedentes.
Cap´ıtulo 1: Introducci´on y Preliminares 2
1.1 El entorno R
R es un conjunto integrado de programas para manipulaci´on de datos, c´alculo y gr´aficos. Entre otras caracter´ısticas dispone de:
R es en gran parte un veh´ıculo para el desarrollo de nuevos m´etodos de an´alisis interactivo de datos. Como tal es muy din´amico y las diferentes versiones no siempre son totalmente compatibles con las anteriores. Algunos usuarios prefieren los cambios debido a los nuevos m´etodos y tecnolog´ıa que los acompa˜nan, a otros sin embargo les molesta ya que alg´un c´odigo anterior deja de funcionar. Aunque R puede entenderse como un lenguaje de programaci´on, los programas escritos en R deben considerarse esencialmente ef´ımeros.
1.2 Programas relacionados. Documentaci´on
R puede definirse como una nueva implementaci´on del lenguaje S desarrollado en AT&T por Rick Becker, John Chambers y Allan Wilks. Muchos de los libros y manuales sobre S son ´utiles para R.
La referencia b´asica es The New S Language: A Programming Environment for Data Analysis and Graphics de Richard A. Becker, John M. Chambers and Allan R. Wilks. Las caracter´ısticas de la versi´on de agosto de 1991 de S est´an recogidas en Statistical Models in S editado por John M. Chambers y Trevor J. Hastie. V´ease Apendice F [Referencias], p´agina 100, para referencias concretas.
1.3 Estad´ıstica con R
En la introducci´on a R no se ha mencionado la palabra estad´ıstica, sin embargo muchas personas utilizan R como un sistema estad´ıstico. Nosotros preferimos describirlo como un entorno en el que se han implementado muchas t´ecnicas estad´ısticas, tanto cl´asicas como modernas. Algunas est´an incluidas en el entorno base de R y otras se acompa˜nan en forma de bibliotecas (packages). El hecho de distinguir entre ambos conceptos es funda- mentalmente una cuesti´on hist´orica. Junto con R se incluyen ocho bibliotecas (llamadas
Cap´ıtulo 1: Introducci´on y Preliminares 4
R preguntar´a si desea salvar los datos de esta sesi´on de trabajo. Puede responder yes (Si), no (No) o cancel (cancelar) pulsando respectivamente las letras y, n o c, en cada uno de cuyos casos, respectivamente, salvar´a los datos antes de terminar, terminar´a sin salvar, o volver´a a la sesi´on de R. Los datos que se salvan estar´an disponibles en la siguiente sesi´on de R. Volver a trabajar con R es sencillo:
Para continuar con este an´alisis posteriormente basta con pulsar en el icono de la imagen salvada, o bien puede ejecutar R y utilizar la opci´on Open dentro del men´u File para seleccionar y abrir la imagen salvada.
1.6 Una sesi´on inicial
Se recomienda a los lectores que deseen ver c´omo funciona R que realicen la sesi´on inicial dada en el Apendice A [Ejemplo de sesion], p´agina 84.
1.7 Ayuda sobre funciones y capacidades
R contiene una ayuda similar a la orden man de UNIX. Para obtener informaci´on sobre una funci´on concreta, por ejemplo solve, la orden es
help(solve) Una forma alternativa es ?solve Con las funciones especificadas por caracteres especiales, el argumento deber´a ir entre comillas, para transformarlo en una ”cadena de caracteres”:
help("[[") Podr´a utilizar tanto comillas simples como dobles, y cada una de ellas puede utilizarse dentro de la otra, como en la frase "Dijo ’Hola y adi´os’ y se march´o". En estas notas utilizaremos dobles comillas.
En muchas versiones de R puede acceder a la ayuda escrita en formato html, escribiendo
help.start()
que ejecuta un lector Web (Netscape en UNIX) para leer estas p´aginas como hipertextos. En UNIX, las peticiones de ayuda posteriores se envir´an al sistema de ayuda basado en html.
Cap´ıtulo 1: Introducci´on y Preliminares 5
Las versiones de Microsoft Windows de R poseen otros sistemas de ayuda opcionales. Utilice
?help
para obtener detalles adicionales.
1.8 Ordenes de R. May´´ usculas y min´usculas
T´ecnicamente hablando, R es un lenguaje de expresiones con una sintaxis muy simple. Consecuente con sus or´ıgenes en UNIX, distingue entre may´usculas y min´usculas, de tal modo que A y a son s´ımbolos distintos y se referir´an, por tanto, a objetos distintos.
Las ´ordenes elementales consisten en expresiones o en asignaciones. Si una orden consiste en una expresi´on, se eval´ua, se imprime y su valor se pierde. Una asignaci´on, por el contrario, eval´ua una expresi´on, no la imprime y guarda su valor en una variable.
Las ´ordenes se separan mediante punto y coma, (‘;’), o mediante un cambio de l´ınea. Si al terminar la l´ınea, la orden no est´a sint´acticamente completa, R mostrar´a un signo de continuaci´on, por ejemplo
en la l´ınea siguiente y las sucesivas y continuar´a leyendo hasta que la orden est´e sint´acticamente completa. El signo de continuaci´on puede ser modificado f´acilmente. En estas notas omitiremos generalmente el s´ımbolo de continuaci´on y lo indicaremos mediante un sangrado.
1.9 Recuperaci´on y correcci´on de ´ordenes previas
Bajo muchas versiones de UNIX, R permite recuperar y ejecutar ´ordenes previas. Las flechas verticales del teclado puede utilizarse para recorrer el historial de ´ordenes. Cuando haya recuperado una orden con este procedimiento, puede utilizar las flechas horizontales para desplazarse por ella, puede eliminar caracteres con la tecla 〈DEL〉, o a˜nadir nuevos ca- racteres. M´as adelante se dar´an mayores detalles, v´ease Apendice C [El editor de ordenes], p´agina 93.
La recuperaci´on y edici´on en UNIX pueden ser f´acilmente adaptadas. Para ello debe buscar en el manual de UNIX la informaci´on sobre readline.
Tambi´en puede utilizar el editor de textos emacs para trabajar m´as c´omodamente de modo interactivo con R, mediante ESS.^1
1.10 Ejecuci´on de ´ordenes desde un archivo y redirecci´on de
la salida
Si tiene ´ordenes almacenadas en un archivo del sistema operativo, por ejemplo ´ordenes.R, en el directorio de trabajo, trabajo, puede ejecutarlas dentro de una sesi´on de R con la orden
source("´ordenes.R") En la versi´on de Microsoft Windows, Source tambi´en est´a disponible dentro del men´u File. Por otra parte, la orden sink, como por ejemplo en
(^1) Acr´onimo en ingl´es de Emacs Speaks Statistics.
Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 7
2.1 Vectores (num´ericos). Asignaci´on
R utiliza diferentes estructuras de datos. La estructura m´as simple es el vector, que es una colecci´on ordenada de n´umeros. Para crear un vector, por ejemplo x, consistente en cinco n´umeros, por ejemplo 10.4, 5.6, 3.1, 6.4 y 21.7, use la orden
x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
Esta es una asignaci´on en la que se utiliza la funci´on c() que, en este contexto, puede tener un n´umero arbitrario de vectores como argumento y cuyo valor es el vector obtenido mediante la concatenaci´on de todos ellos.^1
Un n´umero, por s´ı mismo, se considera un vector de longitud uno.
Advierta que el operador de asignaci´on, (‘<-’), no es el operador habitual, ‘=’, que se reserva para otro prop´osito, sino que consiste en dos caracteres, ‘<’ (‘menor que’) y ‘-’ (‘gui´on’), que obligatoriamente deben ir unidos y ’apuntan’ hacia el objeto que recibe el valor de la expresi´on.^2
La asignaci´on puede realizarse tambi´en mediante la funci´on assign(). Una forma equi- valente de realizar la asignaci´on anterior es
assign("x", c(10.4, 5.6, 3.1, 6.4, 21.7))
El operador usual, <-, puede interpretarse como una abreviatura de la funci´on assign().
Las asignaciones pueden realizarse tambi´en con una flecha apuntando a la derecha, rea- lizando el cambio obvio en la asignaci´on. Por tanto, tambi´en podr´ıa escribirse
c(10.4, 5.6, 3.1, 6.4, 21.7) -> x
Si una expresi´on se utiliza como una orden por s´ı misma, su valor se imprime y se pierde^3. As´ı pues, la orden
1/x
simplemente imprime los inversos de los cinco valores anteriores en la pantalla (por supuesto, el valor de x no se modifica).
Si a continuaci´on hace la asignaci´on
y <- c(x, 0, x)
crear´a un vector, y, con 11 elementos, consistentes en dos copias de x con un cero entre ambas.
(^1) Con argumentos diferentes, por ejemplo listas, la acci´on de c() puede ser diferente. Vea Secci´on 6.2. [Concatenacion de listas], p´agina 29. (^2) El s´ımbolo de subrayado, ‘_’, es un sin´onimo del operador de asignaci´on, pero no aconsejamos su uti- lizaci´on ya que produce un c´odigo menos legible. (^3) Aunque, de hecho, se almacena en .Last.value hasta que se ejecute otra orden.
Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 8
2.2 Aritm´etica vectorial
Los vectores pueden usarse en expresiones aritm´eticas, en cuyo caso las operaciones se realizan elemento a elemento. Dos vectores que se utilizan en la misma expresi´on no tienen por qu´e ser de la misma longitud. Si no lo son, el resultado ser´a un vector de la longitud del m´as largo, y el m´as corto ser´a reciclado, repiti´endolo tantas veces como sea necesario (puede que no un n´umero exacto de veces) hasta que coincida con el m´as largo. En particular, cualquier constante ser´a simplemente repetida. De este modo, y siendo x e y los vectores antes definidos, la orden
v <- 2*x + y + 1
genera un nuevo vector, v, de longitud 11, construido sumando, elemento a elemento, el vector 2*x repetido 2.2 veces, el vector y, y el n´umero 1 repetido 11 veces.
Los operadores aritm´eticos elementales son los habituales +, - , *, / y ^ para elevar a una potencia. Adem´as est´an disponibles las funciones log, exp, sin, cos, tan, sqrt, bien conocidas. Existen muchas m´as funciones, entre otras, las siguientes: max y min que seleccionan respectivamente el mayor y el menor elemento de un vector; range cuyo valor es el vector de longitud dos, c(min(x), max(x)); length(x) que es el n´umero de elementos o longitud de x; sum(x) que es la suma de todos los elementos de x; y prod(x) que es el producto de todos ellos.
Dos funciones estad´ısticas son mean(x), que calcula la media, esto es, sum(x)/length(x) y var(x) que calcula la cuasi-varianza, esto es, sum((x-mean(x))^2)/(length(x)-1) Si el argumento de var() es una matriz n × p, el resultado es la matriz de cuasi- covarianzas p×p correspondiente a interpretar las filas como vectores muestrales p-variantes.
Para ordenar un vector dispone de la funci´on sort(x) que devuelve un vector del mismo tama˜no que x con los elementos ordenados en orden creciente. Tambi´en dispone de order() y de sort.list(), que produce la permutaci´on del vector que corresponde a la ordenaci´on.
Advierta que max y min seleccionan el mayor y el menor valor de sus argumentos, incluso aunque estos sean varios vectores. Las funciones paralelas pmax y pmin devuelven un vector (de la misma longitud del argumento m´as largo) que contiene en cada elemento el mayor y menor elemento de dicha posici´on de entre todos los vectores de entrada.
En la mayor´ıa de los casos, el usuario no debe preocuparse de si los “n´umeros” de un vec- tor num´erico son enteros, reales o incluso complejos. Los c´alculos se realizan internamente como n´umeros de doble precisi´on, reales o complejos seg´un el caso.
Para trabajar con n´umeros complejos, debe indicar expl´ıcitamente la parte compleja. As´ı
sqrt(-17)
devuelve el resultado NaN y un mensaje de advertencia, pero
sqrt(-17+0i)
realiza correctamente el c´alculo de la ra´ız cuadrada de este n´umero complejo.
Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 10
Los operadores l´ogicos son < (menor), <= (menor o igual), > (mayor), >= (mayor o igual), == (igual), y != (distinto). Adem´as, si c1 y c2 son expresiones l´ogicas, entonces c1&c2 es su intersecci´on (“conjunci´on”), c1|c2 es su uni´on (“disyunci´on”) y !c1 es la negaci´on de c1.
Los vectores l´ogicos pueden utilizarse en expresiones aritm´eticas, en cuyo caso se trans- forman primero en vectores num´ericos, de tal modo que F se transforma en 0 y T en 1. Sin embargo hay casos en que un vector l´ogico y su correspondiente num´erico no son equiva- lentes, como puede ver a continuaci´on.
2.5 Valores faltantes
En ocasiones puede que no todas las componentes de un vector sean conocidas. Cuando falta un elemento, lo que se denomina ’valor faltante’^4 , se le asigna un valor especial, NA^5. En general, casi cualquier operaci´on donde intervenga un valor NA da por resultado NA. La justificaci´on es sencilla: Si no se puede especificar completamente la operaci´on, el resultado no podr´a ser conocido, y por tanto no estar´a disponible.
La funci´on is.na(x) crea un vector l´ogico del tama˜no de x cuyos elementos s´olo valdr´an T si el elemento correspondiente de x es NA, y F en caso contrario.
z <- c(1:3,NA); ind <- is.na(z) N´otese que la expresi´on l´ogica x == NA es distinta de is.na(x) puesto que NA no es realmente un valor, sino un indicador de una cantidad que no est´a disponible. Por tanto x == NA es un vector de la misma longitud de x con todos sus elementos NA puesto que la expresi´on l´ogica es incompleta.
Adem´as hay una segunda clase de valores “faltantes”, producidos por el c´alculo. Son los llamados valores NaN 6. Este tipo de dato no existe en S, y por tanto se confunden con NA en S-Plus. Ejemplos de NaN son
0/
o
Inf - Inf En resumen, is.na(xx) es TRUE tanto para los valores NA como para los NaN. Para diferenciar estos ´ultimos existe la funci´on is.nan(xx) que s´olo toma el valor TRUE para valores NaN.
2.6 Vectores de caracteres
Las cadenas de caracteres, o frases, tambi´en son utilizadas en R, por ejemplo, para etiquetar gr´aficos. Una cadena de caracteres se construye escribiendo entre comillas la sucesi´on de caracteres que la define, por ejemplo, "Altura" o "Resultados de la tercera iteraci´on".
Los vectores de caracteres pueden concatenarse en un vector mediante la funci´on c().
(^4) En la literatura estad´ıstica inglesa, “missing value” (^5) Acr´onimo en ingl´es de “Not Available”, no disponible. (^6) Acr´onimo en ingl´es de “Not a Number”, esto es, “No es un n´umero”.
Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 11
Por otra parte, la funci´on paste() une todos los vectores de caracteres que se le sumi- nistran y construye una sola cadena de caracteres. Tambi´en admite argumentos num´ericos, que convierte inmediatamente en cadenas de caracteres. En su forma predeterminada, en la cadena final, cada argumento original se separa del siguiente por un espacio en blanco, aunque ello puede cambiarse utilizando el argumento sep="cadena", que sustituye el espacio en blanco por cadena, la cual podr´ıa ser incluso vac´ıa.
Por ejemplo,
labs <- paste(c("X","Y"), 1:10, sep="")
almacena, en labs, el vector de caracteres
c("X1", "Y2", "X3", "Y4", "X5", "Y6", "X7", "Y8", "X9", "Y10") Recuerde que al tener c("X", "Y") solo dos elementos, deber´a repetirse 5 veces para obtener la longitud del vector 1:10.^7
2.7 Vectores de ´ındices. Selecci´on y modificaci´on de
subvectores
Puede seleccionar un subvector de un vector a˜nadiendo al nombre del mismo un vector de ´ındices entre corchetes, [ y ]. En general podr´a obtener un subvector de cualquier expresi´on cuyo resultado sea un vector, sin m´as que a˜nadirle un vector de ´ındices entre corchetes.
Los vectores de ´ındices pueden ser de cuatro tipos distintos:
(^7) paste(..., collapse=ss) permite colapsar los argumentos en una sola cadena de caracteres separ´andolos mediante ss. Adem´as existen otras ´ordenes de manipulaci´on de caracteres. como sub y substring. Puede encontrar su descripci´on en la ayuda del programa.
Cap´ıtulo 2: C´alculos sencillos. N´umeros y vectores 13
Cap´ıtulo 3: Objetos: Modos y atributos 14
3.1 Atributos intr´ınsecos: modo y longitud
Las entidades que manipula R se conocen con el nombre de objetos. Por ejemplo, los vectores de n´umeros, reales o complejos, los vectores l´ogicos o los vectores de caracteres. Este tipo de objetos se denominan estructuras ‘at´omicas’ puesto que todos sus elementos son del mismo tipo o modo, bien sea numeric^1 (num´erico), complex (complejo), logical (l´ogico) o character (car´acter).
Los elementos de un vector deben ser todos del mismo modo y ´este ser´a el modo del vector. Esto es, un vector ser´a, en su totalidad, de modo logical, numeric, complex o character. La ´unica excepci´on a esta regla es que cualquiera de ellos puede contener el valor NA. Debe tener en cuenta que un vector puede ser vac´ıo, pero pese a ello tendr´a un modo. As´ı, el vector de caracteres vac´ıo aparece como character(0) y el vector num´erico vac´ıo aparece como numeric(0).
R tambi´en maneja objetos denominados listas que son del modo list (lista) y que con- sisten en sucesiones de objetos, cada uno de los cuales puede ser de un modo distinto. Las listas se denominan estructuras ‘recursivas’ puesto que sus componentes pueden ser asimismo listas.
Existen otras estructuras recursivas que corresponden a los modos function (funci´on) y expression (expresi´on). El modo function est´a formado por las funciones que constituyen R, unidas a las funciones escritas por cada usuario, y que discutiremos m´as adelante. El modo expression corresponde a una parte avanzada de R que no trataremos aqu´ı, excepto en lo m´ınimo necesario para el tratamiento de f´ormulas en la descripci´on de modelos estad´ısticos.
Con el modo de un objeto designamos el tipo b´asico de sus constituyentes fundamentales. Es un caso especial de un atributo de un objeto. Los atributos de un objeto suministran informaci´on espec´ıfica sobre el propio objeto. Otro atributo de un objeto es su longitud. Las funciones mode(objeto) y length(objeto) se pueden utilizar para obtener el modo y longitud de cualquier estructura.
Por ejemplo, si z es un vector complejo de longitud 100, entonces mode(z) es la cadena "complex", y length(z) es 100.
R realiza cambios de modo cada vez que se le indica o es necesario (y tambi´en en algunas ocasiones en que no parece que no lo es). Por ejemplo, si escribe
z <- 0:
y a continuaci´on escribe
digitos <- as.character(z)
el vector digitos ser´a el vector de caracteres ("0", "1", "2", ..., "9"). Si a continua- ci´on aplica un nuevo cambio de modo
d <- as.integer(digitos)
R reconstruir´a el vector num´erico de nuevo y, en este caso, d y z coinciden.^2 Existe una colecci´on completa de funciones de la forma as.lo-que-sea(), tanto para forzar el cambio de
(^1) El modo num´erico consiste realmente en dos modos distintos, integer (entero) y double (doble precisi´on). (^2) En general, al forzar el cambio de num´erico a car´acter y de nuevo a num´erico, no se obtienen los mismos resultados, debido, entre otros, a los errores de redondeo.