Академический Документы
Профессиональный Документы
Культура Документы
Angel Udias
Thursday, September 11, 2014
La ayuda en r
Se puede acceder a la ayuda general desde R-studio desde la pestana de ayuda de la ventana inferior derecha.
O tambien con la siguiente instruccion (tanto en R como en R-Studio):
help.start()
help(lm)
?lm
Un listado de todas las funciones que contienen un determinado nombre, por ejemplo lm (modelo de regresion)
apropos("lm")
1
example(lm)
##
## lm> require(graphics)
##
## lm> ## Annette Dobson (1990) "An Introduction to Generalized Linear Models".
## lm> ## Page 9: Plant Weight Data.
## lm> ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
##
## lm> trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
##
## lm> group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
##
## lm> weight <- c(ctl, trt)
##
## lm> lm.D9 <- lm(weight ~ group)
##
## lm> lm.D90 <- lm(weight ~ group - 1) # omitting intercept
##
## lm> ## No test:
## lm> anova(lm.D9)
## Analysis of Variance Table
##
## Response: weight
## Df Sum Sq Mean Sq F value Pr(>F)
## group 1 0.69 0.688 1.42 0.25
## Residuals 18 8.73 0.485
##
## lm> summary(lm.D90)
##
## Call:
## lm(formula = weight ~ group - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.0710 -0.4937 0.0685 0.2462 1.3690
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## groupCtl 5.03 0.22 22.9 9.5e-15 ***
## groupTrt 4.66 0.22 21.2 3.6e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.696 on 18 degrees of freedom
## Multiple R-squared: 0.982, Adjusted R-squared: 0.98
## F-statistic: 485 on 2 and 18 DF, p-value: <2e-16
##
##
## lm> ## End(No test)
## lm> opar <- par(mfrow = c(2,2), oma = c(0, 0, 1.1, 0))
##
## lm> plot(lm.D9, las = 1) # Residuals, Fitted, ...
2
lm(weight ~ group)
Standardized residuals
Residuals vs Fitted Normal QQ
1.5
Residuals
17
15 2 1517
1.0 4 4
0.5 1
0.0 0
0.5 1
1.0
Constant Leverage:
Standardized residuals
ScaleLocation Residuals vs Factor Levels
1.4 17
15 17
1.2 4 2 15 4
1.0 1
0.8 0
0.6
0.4 1
0.2
0.0 2
group :
4.7 4.8 4.9 5.0 Trt Ctl
##
## lm> par(opar)
##
## lm> ## Don't show:
## lm> ## model frame :
## lm> stopifnot(identical(lm(weight ~ group, method = "model.frame"),
## lm+ model.frame(lm.D9)))
##
## lm> ## End Don't show
## lm> ### less simple examples in "See Also" above
## lm>
## lm>
## lm>
Busqueda de ayuda respecto a una funcion en manuales y mailing list (en la nube)
RSiteSearch("lm")
3
vignette("utils")
setwd("D:/DISCO_E/AUDIAS/TRABAJO/URJC/DOCENCIA/ano2014-2015/MasterHidro/Estadistica/CHAP1_PRESENTACI
# getwd()
1300/ (14*1.5)
## [1] 61.9
pi/2
## [1] 1.571
x <- TRUE
class(x)
## [1] "logical"
x <- 2
class(x)
## [1] "numeric"
x <- 2.5
class(x)
## [1] "numeric"
## [1] "character"
Vectores
4
miv<-vector()
miv
## logical(0)
miv[3]<-4
miv
## [1] NA NA 4
miv[3]<-4
miv
## [1] NA NA 4
## [1] 0 0 0 0 0 0 0 0 0 0
Los numeros en r son un tipo de objetos. El infinito es un numero especial (Inf) y se puede emplear para
calculos
5/0
## [1] Inf
1/Inf
## [1] 0
0/0
## [1] NaN
Inf-Inf
## [1] NaN
En muchos casos es lo mismo que un VALOR FALTANTE (NA: Not Available) Veamos algunos ejemplos:
5
x <- c(1,2,3,NA,4,5)
x
## [1] 1 2 3 NA 4 5
Cualquier operacin aritmtica que involucre a un NA da por resultado un NA. Esto se aplica tambin a los
operadores lgicos tales como <, <=, >, >=, = =, != (== es para comprobar si dos objetos son iguales, y
!= comprueba si dos objetos son distintos).
Multiplicacion de todos los numeros de un vector x por 2.
x*2
## [1] 2 4 6 NA 8 10
## [1] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
6
y <- c(1.7, "a") ## character
y
class(y)
## [1] "character"
## [1] 1 2
x <- 0:6
x
## [1] 0 1 2 3 4 5 6
class(x)
## [1] "integer"
as.numeric(x)
## [1] 0 1 2 3 4 5 6
as.logical(x)
as.character(x)
7
as.complex(x)
## [1] NA NA NA
as.logical(x)
## [1] NA NA NA
La letra c significa concatenar en r y es un comando muy util Vamos a crear y a concatenar dos vectores:
## [1] 1 3 5 4 6
x <- c(2,4,6)
y <- c(1,2,3,4,5)
union(x,y) #la union de los vectores
## [1] 2 4 6 1 3 5
## [1] 2 4
## [1] 6
## [1] 1 3 5
8
x = c(7,9,11,13,15,17,19) #con parentesis
x[c(1,3,6)] #extrae los elementos 1, 3 y 6 del vecto
## [1] 7 11 17
x[-2] #Un nmero negativo precediendo al ndice significa excluir ese indice
## [1] 7 11 13 15 17 19
## [1] 9 13 15 17 19
x>10
x[x>10] #este extrae los valores que cumplen la condicion (con corchetes)
## [1] 11 13 15 17 19
En el caso de un vector de variables, utilizamos los nombres de las variables para extraer los elementos:
A = 1
B = 3
C = 5
y = c(A,B,C) #con parentesis
y
## [1] 1 3 5
## [1] 5
estaturas = c(12, 14, 14, 10, 12, 18, 14, 14, 16, 12)
rev(estaturas) #los pone del ultimo al primero
## [1] 12 16 14 14 18 12 10 14 14 12
9
sort(estaturas,decreasing=FALSE) #los ordena de menor a mayor
## [1] 10 12 12 12 14 14 14 14 16 18
## [1] 4 1 5 10 2 3 7 8 9 6
## [1] 10 12 12 12 14 14 14 14 16 18
## [1] 2 5 6 1 3 10 7 8 9 4
## [1] 12 14 14
## [1] 14 16 12
## [1] 18
## [1] 10
## [1] 10 18
## [1] 6
10
estaturas[estaturas>=max(estaturas)] #que da logicamente el mismo resultado
## [1] 18
Muestreo de vectores
## [1] 14 12 12 14 14 18 12
datos = c(2,3,0,3,1,0,0,1)
# es sencillo realizar operaciones con los elementos de un vector
mean(datos) # La media del vector
## [1] 1.25
## [1] 1
hist(datos)
11
Histogram of datos
5
4
Frequency
3
2
1
0
datos
#CREACION DE SECUENCIAS O PATRONES Hay varias rdenes para crear vectores de modo automtico:
* seq permite generar secuencias facilemente
## [1] 1 2 3 4 5
## [1] 1 2 3 4 5 6
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0
## [1] -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5
## [15] 5.0 5.5 6.0 6.5 7.0 7.5 8.0
## [1] 1.000 1.556 2.111 2.667 3.222 3.778 4.333 4.889 5.444 6.000
12
pi/1:4 #secuencia de pi entre 1,2, 3 y 4
## [1] 1 1 1 1 1
## [1] 1 2 1 2 1 2 1 2 1 2
## [1] 1 2 3 4 1 2 3 4
rep(1:3,c(1,4,5)) # la secuencia 1,2,3 ha sido repetida de acuerdo al vector (1,4,5), esto es, 1 vez el
## [1] 1 2 2 2 2 3 3 3 3 3
## [1] TRUE
exists("objeto")
## [1] FALSE
13
x <- pi * (1:4)
y = seq(-2,8,0.5) #tambien se puede asignar asi el valor a un objeto
x #escribe el valor del objeto
## [1] -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5
## [15] 5.0 5.5 6.0 6.5 7.0 7.5 8.0
## [1] "numeric"
## [1] 21
estudiantes.origen = c("getafe","mostoles","madrid","madrid","mostoles",
"leganes","getafe","leganes","madrid","mostoles","parla","alcorcon","mostoles",
"getafe","leganes")
estudiantes.origen
mode(estudiantes.origen)
## [1] "character"
Matrices
Una matriz en R es un conjunto de objetos indizados por filas y columnas. Un array en R es lo mismo,
salvo que puede tener ms de dos dimensiones. La sintaxis general de la orden para crear una matriz es la
siguiente: matrix(data, nrow, ncol, byrow=F) donde: data datos que forman la matriz nrow nmero de filas
de la matriz ncol nmero de columnas de la matriz byrow Los datos se colocan por filas o por columnas segn
se van leyendo. Por defecto se colocan por columnas.
Si queremos generar una matriz vacia
m <- matrix(nrow = 2, ncol = 3) #crea una matriz vacia, de dos filas y tres columnas
m
14
dim(m) #propiedad que nos dice cual es la dimension de la matriz
## [1] 2 3
attributes(m)
## $dim
## [1] 2 3
Otro ejemplos: Creamos una matriz con 6 elementos. Al no especificarse nada, se entiende que se desea crear
un vector columna
(matrix(1:6))
## [,1]
## [1,] 1
## [2,] 2
## [3,] 3
## [4,] 4
## [5,] 5
## [6,] 6
Crea una matriz con 6 elementos y dos filas. Los elementos, que son los nmeros 1,2,3,4,5,6 se van leyendo
por columnas. Crea una matriz con 6 elementos y dos filas. Los elementos, que son los nmeros 1,2,3,4,5,6 se
van leyendo por columnas.
( matrix(1:6,nrow=2) )
Igual que en el caso anterior, pero se lee por filas, al especificar que la lectura por filas est activada.
( matrix(1:6,nrow=2,byrow=T) )
cbind : Aade una columna a una matriz dada. rbind : Aade una fila a una matriz dada.
x <- 1:3
y <- 10:12
cbind(x, y)
## x y
## [1,] 1 10
## [2,] 2 11
## [3,] 3 12
15
rbind(x, y)
Los datos que contiene una matriz deben ser todos del mismo tipo: todos numricos, o de tipo carcter o
lgico, pero no mezclados. Algunas funciones sobre matrices: dim devuelve las dimensiones de una matriz.
dimnames devuelve el nombre de las dimensiones de una matriz. colnames devuelve el nombre de las columnas
de una matriz. rownames devuelve el nombre de las filas de una matriz. mode devuelve el tipo de datos de los
elementos de una matriz. length devuelve el nmero total de elementos de una matriz. is.matrix devuelve
T si el objeto es una matriz, F si no lo es. [ , ] accede a elementos dentro de la matriz. apply Aplica una
funcin sobre las filas o columnas de una matriz.
Veamos algunos ejemplos:
## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
## [1] 6
## [1] "numeric"
## [1] 3 2
## NULL
## NULL
## NULL
16
is.matrix(x) # El objeto x, es una matriz?
## [1] TRUE
## [1] FALSE
## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
## [1] 4
## [1] 1 4
## [1] 4 5 6
## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
## [4,] 0 0
Asignando nombre a las filas y columnas de las matrices Para ello utilizaremos las funciones dimnames,
colnames y rownames, ya comentadas en el prrafo anterior. Por ejemplo, vamos a crear una matriz con tres
personas y su edad, altura y peso como variables:
17
datos = matrix(c(20,65,174,22,70,180,19,68,170),nrow=3,byrow=T) # Se crea una matrix 3x3
datos
datos = matrix(c(20,65,174,22,70,180,19,68,170),nrow=3,byrow=T)
datos
La funcin dimnames funciona asignando a su argumento una lista de dos vectores de caracteres: los nombres
de las filas y de las columnas de la matriz: dimnames(objeto) = list( vector de nombres de las filas, vector de
nombres de las columnas). Ahora podemos acceder tambin a los elementos de la madrid usando los nombres:
18
datos["pepe",] # Variables del individuo "Pepe"
## edad altura
## paco 20 174
## pepe 22 180
## kiko 19 170
## [[1]]
## [1] "paco" "pepe" "kiko"
##
## [[2]]
## [1] "edad" "peso" "altura"
apply(datos,1,mean) #halla la media las filas (los individuos), en este caso se puede porque todas
Listas.
Son un tipo de datos especial que permiten contener elementos de diferentes clases
## [[1]]
## [1] 1
##
## [[2]]
## [1] "a"
##
## [[3]]
## [1] TRUE
##
## [[4]]
## [1] 1+4i
19
Factores.
Se usan para representar datos categricos. Normalmente emplear los factores con etiquetas es mejor que
emplear numeros para describirlos. Por ejemplo es mas claro: hombre, mujer que 1, 2
table(x) #y automaticamente se puede pedir que haga una tabla de las categorias
## x
## no yes
## 2 3
levels(x)
Valores Faltantes
is.nan(x)
## [1] NA 10 3
## [1] 1 2 10 3
20
x <- c(1:4,NA,6:10) #valores no numericos (hay un valor faltante en la secuencia)
x
## [1] 1 2 3 4 NA 6 7 8 9 10
## NULL
names(x)
## col1 col2
## fila1 1 3
## fila2 2 4
Data Frames.
Es el objeto mas empleado. Sirven para guardar datos en forma de tablas En cada columna el numero de
elementos es el mismo pero puede ser de tipos diferentes. El numero de elementos es el numero de filas.
Pueden almacenar diferentes clases de objetos Tienene algunos atributos especiales: row.names: permite dar
nombres a las filas. data.matrix() :permite convertir elementos de una matriz en un data frame.
Un primer ejemplo de creacion de un data frame
## foo bar
## 1 1 TRUE
## 2 2 TRUE
## 3 3 FALSE
## 4 4 FALSE
21
nrow(x)
## [1] 4
ncol(x)
## [1] 2
my_frame <- data.frame(y1=rnorm(12), y2=rnorm(12), y3=rnorm(12), y4=rnorm(12)) # Creates data frame with
rownames(my_frame) <- month.name[1:12] # Assigns row (index) names. These names need to be unique.
names(my_frame) <- c("y4", "y3", "y2", "y1") # Assigns new column titles.
names(my_frame)[c(1,2)] <- c("y3", "y4") # Changes titles of specific columns.
my_frame <- data.frame(IND=row.names(my_frame), my_frame) # Generates new column with title "IND" contai
my_frame[,2:5] # Different possibilities to remove column(s) from a data frame.
## y3 y4 y2 y1
## January -0.3349 -0.07203 -1.9023 0.7956
## February -0.9159 0.25244 -0.8114 -1.1945
## March 1.2599 -1.10100 -1.1675 -1.1305
## April 0.8550 -0.86361 1.1371 -0.1290
## May 0.6666 -1.33772 1.2724 0.1498
## June -0.1685 -1.25000 0.1302 -0.3570
## July 0.2069 0.95344 -0.1029 0.8730
## August 2.0140 -0.98849 1.4141 -0.2983
## September -1.3085 0.33255 0.4128 0.7917
## October -0.3248 0.41720 -0.5296 -0.4422
## November 0.9612 0.87334 -0.5813 -0.8495
## December -1.0439 -0.67903 1.0089 0.7783
## y3 y4 y2 y1
## January -0.3349 -0.07203 -1.9023 0.7956
## February -0.9159 0.25244 -0.8114 -1.1945
## March 1.2599 -1.10100 -1.1675 -1.1305
## April 0.8550 -0.86361 1.1371 -0.1290
## May 0.6666 -1.33772 1.2724 0.1498
## June -0.1685 -1.25000 0.1302 -0.3570
## July 0.2069 0.95344 -0.1029 0.8730
## August 2.0140 -0.98849 1.4141 -0.2983
## September -1.3085 0.33255 0.4128 0.7917
## October -0.3248 0.41720 -0.5296 -0.4422
## November 0.9612 0.87334 -0.5813 -0.8495
## December -1.0439 -0.67903 1.0089 0.7783
22
## IND y3 y4 y2 y1
## February February -0.9159 0.2524 -0.8114 -1.1945
## March March 1.2599 -1.1010 -1.1675 -1.1305
## April April 0.8550 -0.8636 1.1371 -0.1290
## May May 0.6666 -1.3377 1.2724 0.1498
## June June -0.1685 -1.2500 0.1302 -0.3570
## July July 0.2069 0.9534 -0.1029 0.8730
## August August 2.0140 -0.9885 1.4141 -0.2983
## September September -1.3085 0.3325 0.4128 0.7917
my_frame[rows, columns] # Generic syntax to access columns and rows in data frames.
my_frame[4, 5]
## [1] -0.129
## [1] 12 5
## [1] 5
## [1] 12
my_frame[order(my_frame$y2, decreasing=TRUE), ] # Sorts the rows of a data frame by the specified column
## IND y3 y4 y2 y1
## August August 2.0140 -0.98849 1.4141 -0.2983
## May May 0.6666 -1.33772 1.2724 0.1498
## April April 0.8550 -0.86361 1.1371 -0.1290
23
## December December -1.0439 -0.67903 1.0089 0.7783
## September September -1.3085 0.33255 0.4128 0.7917
## June June -0.1685 -1.25000 0.1302 -0.3570
## July July 0.2069 0.95344 -0.1029 0.8730
## October October -0.3248 0.41720 -0.5296 -0.4422
## November November 0.9612 0.87334 -0.5813 -0.8495
## February February -0.9159 0.25244 -0.8114 -1.1945
## March March 1.2599 -1.10100 -1.1675 -1.1305
## January January -0.3349 -0.07203 -1.9023 0.7956
## IND y3 y4 y2 y1
## January January -0.3349 -0.07203 -1.9023 0.7956
## March March 1.2599 -1.10100 -1.1675 -1.1305
## February February -0.9159 0.25244 -0.8114 -1.1945
## November November 0.9612 0.87334 -0.5813 -0.8495
## October October -0.3248 0.41720 -0.5296 -0.4422
## July July 0.2069 0.95344 -0.1029 0.8730
## June June -0.1685 -1.25000 0.1302 -0.3570
## September September -1.3085 0.33255 0.4128 0.7917
## December December -1.0439 -0.67903 1.0089 0.7783
## April April 0.8550 -0.86361 1.1371 -0.1290
## May May 0.6666 -1.33772 1.2724 0.1498
## August August 2.0140 -0.98849 1.4141 -0.2983
v <-my_frame[,4]; v[3] # Notation for returning the value of an individual cell. In this example the cor
## [1] -1.167
# column is first assigned to a vector and then the desired field is accessed by its index number.
my_frame[1:5,] # Notation to view only the first five rows of all columns.
## IND y3 y4 y2 y1
## January January -0.3349 -0.07203 -1.9023 0.7956
## February February -0.9159 0.25244 -0.8114 -1.1945
## March March 1.2599 -1.10100 -1.1675 -1.1305
## April April 0.8550 -0.86361 1.1371 -0.1290
## May May 0.6666 -1.33772 1.2724 0.1498
24
my_frame[, 1:2] # Notation to view all rows of the first two columns.
## IND y3
## January January -0.3349
## February February -0.9159
## March March 1.2599
## April April 0.8550
## May May 0.6666
## June June -0.1685
## July July 0.2069
## August August 2.0140
## September September -1.3085
## October October -0.3248
## November November 0.9612
## December December -1.0439
## IND y4
## January January -0.07203
## February February 0.25244
## March March -1.10100
## April April -0.86361
## May May -1.33772
## June June -1.25000
## July July 0.95344
## August August -0.98849
## September September 0.33255
## October October 0.41720
## November November 0.87334
## December December -0.67903
my_frame[1:5,1:2] # Notation to view only the first five rows of the columns 1-2.
## IND y3
## January January -0.3349
## February February -0.9159
## March March 1.2599
## April April 0.8550
## May May 0.6666
my_frame["August",] # Notation to retrieve row values by their index name (here "August").
## IND y3 y4 y2 y1
## August August 2.014 -0.9885 1.414 -0.2983
## letter Month
## A a January
25
## B b February
## C c March
## D d April
## E e May
## F f June
## G g July
## H h August
## I i September
## J j October
## [1] 3 7
%in%
Devuelve los indices de las posiciones cuyos valores coinciden con otros si se emplea con la funcion match . Si
algun indice esta duplicado solo devuelve el primero en el que se da la coincidencia.
x[x[, 2] %in% month.name[3:7],] # Subsets a data frame with a query vector using the '%in%' function. Th
## letter Month
## C c March
## D d April
## E e May
## F f June
## G g July
#as.data.frame(my_list) # Returns a list object as data frame if the list components can be converted in
## IND y3 y4 y2
## April :1 Min. :-1.3085 Min. :-1.338 Min. :-1.9023
## August :1 1st Qu.:-0.4801 1st Qu.:-1.017 1st Qu.:-0.6389
## December:1 Median : 0.0192 Median :-0.376 Median : 0.0137
## February:1 Mean : 0.1556 Mean :-0.289 Mean : 0.0234
## January :1 3rd Qu.: 0.8815 3rd Qu.: 0.354 3rd Qu.: 1.0409
## July :1 Max. : 2.0140 Max. : 0.953 Max. : 1.4141
## (Other) :6
## y1
## Min. :-1.1945
## 1st Qu.:-0.5440
## Median :-0.2137
## Mean :-0.0844
26
## 3rd Qu.: 0.7816
## Max. : 0.8730
##
## [1] NA
my_frame[, 2:5]
## y3 y4 y2 y1
## January -0.3349 -0.07203 -1.9023 0.7956
## February -0.9159 0.25244 -0.8114 -1.1945
## March 1.2599 -1.10100 -1.1675 -1.1305
## April 0.8550 -0.86361 1.1371 -0.1290
## May 0.6666 -1.33772 1.2724 0.1498
## June -0.1685 -1.25000 0.1302 -0.3570
## July 0.2069 0.95344 -0.1029 0.8730
## August 2.0140 -0.98849 1.4141 -0.2983
## September -1.3085 0.33255 0.4128 0.7917
## October -0.3248 0.41720 -0.5296 -0.4422
## November 0.9612 0.87334 -0.5813 -0.8495
## December -1.0439 -0.67903 1.0089 0.7783
mean(my_frame[, 2:5])
## [1] NA
27