# Introducción al R # 1. Tipos de datos. # - Valores numéricos: x<-10 # - Vectores: utilizaremos la función c(). x<-c(1,2,3,4,5,6) x+100 x^2 sin(x) y<-c(x,9,10,11) z<-c(7,4,x,2*x,x^2) # - Matrices: # a) A partir de vectores filas o columnas: funciones rbind() y cbind() c1<-c(10,20,30,40); c2<-c(1,2,3,4); z1<-rbind(c1,c2); z1 z2<-cbind(c1,c2); z2 # b) Directamente: función matrix(valor ó vector de valores, nº filas, nº columnas) matrix(1,2,3) x<-c(1,2,3,4,5,6); mat<-matrix(x,2,3) # c) Selección de datos: mat[1,3] mat[1,] mat[,2] # Otra manera de editar, introducir y modificar los datos en la pantalla. # Usaremos la función data.entry (variables separadas por comas). variable1<-numeric() # Creamos la variable data.entry(variable1) data.entry(mat) # Edita los datos almacenados en la matriz mat. data.entry(variable1,mat) # 2. Algunas herramientas del R. # - valor inicial : valor final. x<-1:20 # valor final : valor inicial. x<-20:1 # - Función rep(valor(es) a ser repetido(s), nº de repeticiones). y<-rep(1,10) y<-rep(x^2 , 5) y<-rep(c(1,2,3),c(2,3,1)) # - Función seq(valor inicial, valor final, by=paso ó length=longitud) y<-seq(1,50,by=5) y<-seq(1,50,length=100) y<-seq(50,1,by=-2) # - Vectores lógicos: # Vectores con dos posibles elementos, T (verdadero) y F (falso). # Se generan mediante condiciones. t<-x>13 # a) Operadores lógicos: <, >, <=, >=, ==, != # b) Si C1 y C2 son operaciones lógicas, entonces C1 & C2 es la intersección, # C1 | C2 la unión y !C1 la negación. # c) Operaciones aritméticas: T se considera 1 y F se considera 0. # - Selección y modificación de un conjunto de datos: vectores índices. # a) Selección: z[vector índice]. # Vectores índices: z<-31:50; x<-20:1 # -- Vector lógico: vector de la misma longitud que el vector del # que se seleccionan elementos. Se seleccionan los correspondientes # a T y no los correspondientes a F. y<-z[x>15] y<-(z^2)[x>15|x<7] # -- Vector de enteros positivos: Se seleccionan los elementos # correspondientes a las posiciones que indica el vector. x[1:5] x[c(2,3,6,9)] # -- Vector de enteros negativos: Se eliminan los elementos # correspondientes a las posiciones que indica el vector. x[-(1:5)] x[-c(2,3,6,9)] # b) Modificación: z[vector índice]<-vector z[x>10]<-0 z[c(1,4,9)]<-1 # - Valores perdidos: NA # - Función length(vector) # - Otras funciones de interés: prod(x) # Nos proporciona x1 x2 ... xn. cumsum(x) # Nos proporciona (x1,x1+x2,...,x1+...+xn). sum(x) # Nos proporciona x1+x2+...+xn. abs(x) # Nos proporciona |x|. exp(x) # Nos proporciona e^x. log(x) sqrt(x) # Nos proporciona la raíz cuadrada de x. gamma(x) sin(x) cos(x) tan(x) # 3. Algunas herramientas estadísticas del R. mean(x) # Nos proporciona la media muestral del vector x. median(x) # Nos proporciona la mediana muestral del vector x. var(x) # Nos proporciona la varianza muestral del vector x. sd(x) # Nos proporciona la desviación típica muestral del vector x. min(x) # Nos proporciona el valor mínimo del vector x. max(x) # Nos proporciona el valor máximo del vector x. range(x) # Nos proporciona un vector con el mínimo y el máximo del vector x. # quantile(vector de datos, posiciones correspondientes a los cuantiles). quantile(x,c(0.25,0.5,0.75)) # Nos proporciona los cuartiles del vector x. cor(x1,x2) # Nos proporciona el coeficiente de correlación muestral de los # vectores x1 y x2. cor(matriz) # Nos proporciona la matriz de correlación considerando como # vectores las columnas. var(matriz) # Nos proporciona la matriz de covarianzas considerando como # vectores las columnas. # 4. Distribuciones de probabilidad en R. # - Probabilidad asociada a cierto cuantil x: P[X<= x] # pnorm() (para distribuciones normales). # pchisq() (para distribuciones chi^2). # - Cuantil asociado a cierta probabilidad alpha: P[X<=x_alpha]=alpha. # qnorm() (para distribuciones normales). # qchisq() (para distribuciones chi^2). # - Función de probabilidad ó densidad valorada en un valor concreto x: P[X=x] ó # f(x). # dnorm() (para distribuciones normales). # dchisq() (para distribuciones chi^2). # - Obtención de números aleatorios. # rnorm() (para distribuciones normales). # rchisq() (para distribuciones chi^2). pnorm(1.96) qnorm(.975) x<-seq(-3,3,0.01) plot(x,dnorm(x),type="l",col=2, main="Densidad N[0,1]", xlab="x", ylab="y") plot(x<-seq(0,20,0.01), dchisq(x,5), type="l",col=4, main="Densidades chi-cuadrado", xlab="x", ylab="y") lines(x,dchisq(x,7), col=2) plot(x<-seq(0,25,0.01),y<-dchisq(x,5),type="l",col=4, main="Densidades chi-cuadrado no central", xlab="x", ylab="y") lines(x,dchisq(x,5,1),col=2) lines(x,dchisq(x,5,2),col=5) # Distribución normal bivariante. x<-seq(-3,3,length=100) y<-seq(-6,6,length=100) funcion<-function(x,y){dnorm(x)*dnorm(y,0,2)} z<-outer(x,y,funcion) persp(x,y,z,theta = 30, phi = 15, expand = 0.5, col = "lightblue", ticktype = "detailed", xlab = "X", ylab = "Y", zlab = "Z") title(main = "Normal bivariante", font.main = 4) # 5. Otras herramientas del R. # Se pueden implementar nuevas funciones: # nombre función<-function(argumentos){sentencias ejecutables (separadas por ;)} media<-function(x){sum(x)/length(x)} media(1:20) # 6. Datos en R. # Se pueden leer datos procedentes de archivos de texto utilizando la funcion: # read.table(archivo, separador, cabecera) dat<-read.table("datos.dat",head=T) # Si los datos están separados por comas(,) habría que escribir: dat<-read.table("datos.dat",sep=",",head=T) # Recíprocamente, si tenemos un data.frame y queremos guardarlo en un fichero hay que # utilizar la función write.table(data.frame,archivo,sep) write.table(dat,"nuevo.dat",sep="\t", quote=F,dec=".") # También se pueden leer archivos en formato R utilizando la función: # source(archivo) source("datos.R")