Curso de bioestadística aplicada en R
Esta es la primera entrada que forma parte de un curso que he diseñado sobre el análisis de datos biológico en R-project. El curso es mas extenso y completo de lo que detallo en las entradas, pero me parecía interesante reunir en este blog una especie de formulario con los principales tipos de análisis de cualquier curso básico de estadística. Iré creando entradas con los códigos (scripts) de cada clase, y cierta información básica de cada tema. Si alguien desea profundizar puede solicitarme información más detallada o realizar el curso online.
Saludos y espero que lo disfruten.
CursoR Clase1
Aquí les dejo los códigos que corresponden a una primera clase de introducción a R-project.
################################################### # Análisis de datos estadísticos con R # # MANEJO DE DATOS # # 2012 # # Rosana Ferrero #
# Ph.D. student #
# # ###################################################
########################################################################### # 1. R como calculadora: Aritm?tica y Funciones b?sicas # ########################################################################### # operaciones aritm?ticas b?sicas 2 + 3 # suma 2 - 3 # resta 2*3 # multiplicaci?n 2/3 # divisi?n 2^3 # potenciaci?n exp(3) #exponencial sqrt(2) # ra?z cuadrada log(1) # logaritmo sin(1); cos(1); tan(1) # trigonom?tricas max; min; range; mean, sum, diff, cumsum, sd, quantile # otras #operadores l?gicos <, >, <=, =>, ==, != !, &, |, xor() &&, || if() # precedencia de operaciones 4^2 - 3*2 1 - 6 + 4 2^-3 (4^2) - (3*2) # usar par?ntisis para agrupar, clarifica # Funciones, argumentos en las funciones log(100) log(100, base=10) log10(100) # equivalente log(100, b=10) # argumentos abreviados log(100, 10) # argumentos por posici?n x=log(100, 10) # generaci?n de objetos ########################################################################### # 2. R como lenguaje: objetos en R # ########################################################################### # Creaci?n de objetos y funciones b?sicas rnorm(5) x=rnorm(5) x # equivalente a print(x) plot(x) summary(x) # Ayuda detro del programa ?rnorm help("rnorm") help.start() ?help.search help.search("normal") ?apropos apropos("normal") ?demo demo(graphics) demo(persp) demo(lm.glm) # Listado y remoci?n de objetos en memoria ls() # para saber los objetos que tenemos en el espacio de trabajo x # escribir el nombre de un objeto muestra su contenido save(<objetos>,file="nombre.RData") # para guardar el contenido del espacio de trabajo. Tambi?n se puede usar: save.image() , si queremos que guarde todo. attach("misdatos.RData") # para acceder a los objetos de la carpeta de trabajo detach("misdatos.RData") # para deshacer la selecci?n rm("x") # borra el objeto "x", y rm() todo el escritorio de trabajo # Tipos de objetos: x=1:10; str(x) # Vector: colecci?n ordenada de elementos del mismo tipo x=c(1,2,3) ; y=c("a", "b", "c") z=c(TRUE, TRUE, FALSE) is.vector(x); is.vector(y); is.vector(z) x[1] ; y[2]; z[3] #c?mo acceder a los elementos del vector # Matrices y Array: generalizaci?n multidimensional del vector. Elementos del mismo tipo. Varias columnas (o filas) de vectores is.array(x) a=array(9,dim=c(5,4)); a; a[1,]; a[1,,drop=FALSE] b=matrix(1:20,nrow=5); b; b[1,2] # Data frame: similar al array, pero con columnas de diferentes tipos. dates=data.frame(ID=c("gen0","genB","genZ"),subj1=c(10,25,33),subj2=c(NA,34,15),oncogen=c(TRUE, TRUE, FALSE),loc=c(1,30,125)) # Factor: tipo de vector para datos cualitativos (o categ?ricos) x=factor(c(1,2,2,1,1,2,1,2,1)) # List: vector generalizado. Sus componentes pueden ser tambi?n listas, o pueden ser de distinto tipo. No tienen estructura. una.lista=c(un.vector=1:10,una.palabra="hola",una.matriz=matrix(rnorm(20),ncol=5),lista2=c(1=5,b=factor(c("a","b")))) #Funciones: c?digo f1=function(x) {return(2*x)} ; is.function(f1) # Atributos de los objetos x=1:15; y=matrix(5,3,4); z=c(TRUE, FALSE) attributes(x); attributes(y); attributes(z) w=list(a=1:3,b=5); attributes(w) f1=function(x) {return(2*x)} ; attributes(f1); is.function(f1) # Modo (mode): l?gico, entero, real, car?cter, etc. mode(x); mode(y); mode(z) # Tipo (typeof): double, character... x1=1:5, x2=c(1,2,3,4,5); x3="patata" typeof(x1); typeof(x2); typeof(x3) # Nombres (names): etiquetas. #Poner un nombre en min?scula no es lo mismo que ponerlo en may?scula (R es "case-sensitive": x!=X) #Hay nombres reservados, por lo que hay que evitarlos. Ej: "function", "if" z = list(a=1, b="c", c=1:3) names(z) # Dimensiones (dim): n?mero de filas y columnas (puede ser cero) length(x) dim(y) # Nombres de las dimensiones de los arrays (dimnames) y=matrix(5,3,4) dimnames(y)[[1]]=c("8am","9am","10am") # [[1]] para filas y [[2]] para columnas colnames(y)=c("lunes", "martes", "mi?rcoles", "jueves") # alternativa # Clase (class): lista de las clases del objeto (vector alfa-num?rico) x = 10 class(x) # "numeric" # Otros: por ejemplo, para series temporales. ### Generaci?n de secuencias # Secuencias aleatorias sample(5) sample(5,3) x=1:10;sample(x); sample(x,replace=TRUE) probs=x/sum(x);sample(x,prob=probs) # Secuencias discretas y continuas x=c(1,2,3,4,5) x=1:5 x=seq(from=1,to=5,by=1) # Secuencias con repeticiones rep(1,5) x=1:4; rep(x,2) gl(3,5) #como rep(1:3, rep(5,3)) expand.grid(1:3,4:6,7:10) ### Indexaci?n de vectores x=1:5; x[1] x[x>3] y=x>3; x[y] names(x)=c("a","b","c","d","e"); x["c"] ### Valores ausentes: NA (not available); NaN (not a number); Inf (infinito) x=c(1:3,NA); is.na(x); which(is.na(x)) x[is.na(x)]=0 #sustituir NA por 0 is.na(5/0) is.nan(0/0) is.infinite(-5/0) mean(x,na.rm=TRUE) #quitar NA al evaluar la media x=c(1:3,NA); y=na.omit(x); y #para funciones de modelado como lm es mejor usar "na.omit" o "na.exclude", que eliminan los NA ### Orden de vectores x=c(5,1,8,3) order(x); order(x,decreasing=TRUE) sort(x) rank(x) x[order(x)] x[order(x,decreasing=TRUE)] ### Vector de caracteres pegar=paste(c("A","B"),2:3,sep=""); pegar substr("abcdef",2,4) y=factor(1:5); y x = c(as = "asfef", qu = "qwerty", "yuiop[", "b", "stuff.blah.yech") # split x on the letter e strsplit(x, "e") ### Discretizar v=1:9 cut1=cut(v,3); cut1 cut2=cut(v,quantile(v,c(0, 1/3, 2/3, 1)),include.lowest=TRUE); cut2 cut3=cut(v,quantile(v,c(0, 1/3, 2/3, 1)),include.lowest=TRUE); cut3 ### Combinar vectores o matrices rbind(1:5,1:10) cbind(1:5,1:10) a=matrix(rnorm(20),ncol=5) mediai=media=NULL;for(i in 1:4){mediai=mean(a[i,]); media=c(media,mediai)} # loop apply(a,1,mean,na.rm=TRUE) # aplica una funci?n a filas, columnas o ambas. Hay que especificar el "margin" sapply(a,mean,na.rm=TRUE) # simplifica el resultado a un vector o una matriz lapply(a,mean,na.rm=TRUE) # devuelve una lista require(stats); groups = as.factor(rbinom(32, n = 5, prob = 0.4)) tapply(groups, groups, length) aggregate(state.x77, list(Region = state.region), mean) ### Programaci?n en R #Definici?n de funciones funcion1=function(A,B,C) {x1=A*B/C; x1} #Argumentos args(funcion1) funcion1(1,2,3) #Control de ejecuci?n: condicionales, loops f = factor(sample(letters[1:5], 10, replace=TRUE)) for( i in unique(f) ) print(i) x=1:5; if(x==5) {x=x+1} else {x=x+2}; x x=1:5; ifelse(x %% 2 == 1, "Odd", "Even") while(length(x)<=10) {x=c(x,1)} require(stats) centre = function(x, type) { switch(type, mean = mean(x), median = median(x), trimmed = mean(x, trim = .1)) } x = rcauchy(10); centre(x, "mean") #Control de errores: traceback, browser, debug debug(centre) undebug() #Control de la duraci?n de la operaci?n: unix.time(centre(rnorm(10),"mean")) #unix.time, Rprof traceback()
Inicio muy didáctico para los nuevos usuarios de R
ResponderEliminar