Mostrando entradas con la etiqueta estadística. Mostrar todas las entradas
Mostrando entradas con la etiqueta estadística. Mostrar todas las entradas

19 de octubre de 2018

"Modern Statistics for Modern Biology" (libro)

Hola,
esta es mi primera entrada escrita desde el EMBL-EBI y en ella solamente quiero compartir un libro de libre acceso que se llama Modern Statistics for Modern Biology, escrito por Susan Holmes y Wolfgang Huber, que se puede visitar en https://www.huber.embl.de/msmb


Tiene una prosa sencilla y describe aproximaciones para enfrentarse a los problemas reales de la biología en general, incluyendo los que de manera habitual describimos en este blog. Además de explicar los fundamentos, el texto tiene muchos ejemplos y soluciones completas en lenguaje R. De hecho se puede descargar en http://web.stanford.edu/class/bios221/book/Rfiles el código fuente de todos los capítulos.

Un saludo,
Bruno

31 de octubre de 2016

Correlaciones y regresiones en R

Hola,
al analizar datos es frecuente que recurrir al cálculo de correlaciones, que permiten establecer si dos variables covarían, y de regresiones, que permiten modelar de qué manera conociendo una variable podemos estimar la otra. De hecho ya habíamos tocado este tema en este blog.

Hoy quisiera compartir el estupendo material sobre estas materias que ha preparado nuestro colega Pablo Vinuesa, que podéis explorar en línea y con ayuda de Rstudio, por ejemplo, para probar todo el código de los ejemplos:

Un saludo,
Bruno

15 de junio de 2010

Algunos comandos de R útiles en ciencia e investigación

Inspirado en:

http://www.personality-project.net/r/r.commands.html

http://www.statmethods.net/graphs/scatterplot.html

http://www.ats.ucla.edu/stat/R/notes/


Básicos
  • Ver el directorio de trabajo:
getwd()
  • Cambiar el directorio de trabajo:
setwd("path")
  • Salir de R:
q()
  • Obtener ayuda de un comando (las comillas son importantes):
help("command")
?"command"
  • Ver los objetos y variables del espacio de trabajo:
ls()
  • Borrar un objeto del espacio de trabajo:
rm(x)
rm(list=ls()) Borrar todos los objetos
  • Guardar el espacio de trabajo:
save.image() # en el archivo .RData en el directorio de trabajo
save(object list,file="myfile.RData") # los objetos deseados en el archivo elegido
  • Cargar un espacio de trabajo:
load("myfile.RData")
  • Salir de R:
q()

Vectores y matrices
  • Crear un vector:
x=c(1,2,4,8,16)
y=c(1:10)
z=c(rnorm(n))
  • Operaciones con vectores:
x=c(x)+n # suma 'n' a cada elemento
z=c(x,y) # combina 2 vectores creando un vector lineal
z=cbind(x,y) # combina 2 vectores creando una matriz de 2 columnas
z=rbind(x,y) # combina 2 vectores creando una matriz de 2 filas
replace(x,x==0,NA) # sustituye los ceros por NA
  • Operaciones con matrices:
mat[4,2] # muestra la 4ª fila y la 2ª columna
mat[3,] # muestra la 3ª fila
mat[,2] # muestra la 2ª columna
mat[,-3] # borra la 3ª columna
mat[-2,] # borra la 2ª fila
mat[1:3,3:5] # muestra las filas 1 a 3 y las columnas 3 a 5

Frames
  • Crear un frame a partir de vectores (cada vector una columna del frame):
data.fr=data.frame(x1,x2,x3 …)
  • Crear un frame a partir de una matriz:
as.data.frame(mat)
  • Conocer si un objeto es un frame:
is.data.frame(mat)
  • Convertir un frame en matriz:
as.matrix(data.frame)
  • Leer un fichero de datos separados por tabuladores con los nombres de sus columnas (1ª línea) y guardarlo en un frame:
data.fr<-read.table("ruta fichero",header=T,sep="\t")
  • Obtener los nombres de las columnas de un frame:
names(data.fr)
  • Obtener los nombres de las filas de un frame:
row.names(data.fr)
  • Obtener el número de filas de un frame:
nrow(data.fr)
  • Ver las primeras filas del frame:
head(data.fr, n=10) # las 10 primeras líneas
  • Crear vectores con el nombre de cada columna del frame (y sus datos)
attach(data.fr)
detach(data.fr) # borrar los vectores
  • Añadir una fila a un frame:
data.fr <- rbind(data.fr,data.frame(colA=1,colB="abc",colC=rnorm(1)))
  • Añadir una columna a un frame:
data.fr$colC <- data.fr$colA + 5 * data.fr$colB
  • Filtrar un frame para obtener un subconjunto de datos y guardarlo en otro frame:
subset.frame<-subset(data.fr,colA>=5 & !is.na(colB) | ColC='V')
subset.frame<-subset(data.fr,complete.cases(data.fr)) # Obtener únicamente las filas con datos en todas sus columnas
  • Ordenar un frame:
data.fr[order(data.fr$colB),] # Ordena el frame con los valores de O la columna B
data.fr[rev(order(data.fr$colB)),] # Orden inverso

Estadística
  • Calcular varios parámetros estadísticos de un conjunto de datos:
max(x)
min(x)
mean(x)
median(x)
sum(x)
var(x) # produces the variance covariance matrix
sd(x) # standard deviation
mad(x) # median absolute deviation
fivenum(x) # Tukey fivenumbers min, lowerhinge, median, upper hinge, max
Table(x) # Matriz de frecuencias
scale(x,scale=T) # centers around the mean and scales by the sd
cumsum(x) # cumulative sum
cumprod(x)
cummax(x)
cummin(x)
rev(x) # reverse the order of values in x
  • Matriz de correlación:
cor(x,y,use="pair") #correlation matrix for pairwise complete data, use="complete" for complete cases
  • Test de correlación:
cor.test(x,y,method=c('pearson'))
  • ANOVA (Análisis de la varianza):
aov.1 <- aov(colA~colB,data.fr) # one way analysis of variance (colA contains values and colB contains classes)
aov.2 = aov(colA~colB*colC,data.fr) #do a two way analysis of variance
summary(aov.1) #show the summary table
print(model.tables(aov.1,"means"),digits=3) #report the means and the number of values/class
boxplot(colA~colB,data.fr) #graphical summary appears in graphics window
  • Regresión lineal:
fit<-lm(colB~colA,data.fr) #basic linear model where x and y can be matrices (see plot.lm for plotting options)
summary(fit)
plot(data.fr$colA,data.fr$colB)
abline(fit)
  • Student's t-Test:
t.test(x,g)
pairwise.t.test(x,g)
power.anova.test(groups = NULL, n = NULL, between.var = NULL,
within.var = NULL, sig.level = 0.05, power = NULL)
power.t.test(n = NULL, delta = NULL, sd = 1, sig.level = 0.05,
power = NULL, type = c("two.sample", "one.sample", "paired"),
alternative = c("two.sided", "one.sided"),strict = FALSE)

Gráficas
  • Lista de colores disponibles en R:
colors()
  • Parámetros gráficos:
help(par)
  • Gráfico sencillo:
plot(x,y,type="p") # types: “p”: points, “l”: line, …
plot(x,y,col="red",lwd=2,type="l")
  • Dibujar un punto:
points(2,5,pch=16,col="blue",cex=3) # Dibuja el punto (2,5) en azul y con un tamaño relativo de 3
  • Etiquetar un punto:
text(2,5,label="Punto",pos=4,offset=-0.5,font=3,cex=0.75)
  • Gráfico de puntos:
plot(data.fr$colA, data.fr$colB,
main="Column A vs. Column B", xlab="Column A", ylab="Column B",
cex.main=2, cex.lab=1.5, pch=1)
  • Superponer gráfica:
lines(1-spec, sens, type='b', col=39, pch=7, lty=2)
plot(data.fr$colA, data.fr$colB,
main="Column A vs. Column C",
cex.main=2, cex.lab=1.5, pch=1, add=TRUE)
  • Ejemplo de gráfica pequeña dentro de otra mayor:
year <- 1900:2000
dollars <- (year-1899)^2
plot.within.aplot <- function()
{
    par(pin=c(1.5,1.5)) ### set the plot region size in inches
    par(mai=c(2.8,1.2,1,2.6)) ### set the 4 margin sizes in inches
    par(ps=6) ### set the font size to 6 point
    plot(year,dollars,col="blue",type="l",xlab="",ylab="") ### no axis labels
    par(new=T) ### the next plot will plot over the previous one
    par(ps=12) ### set the font size to 12 point
    par(pin=c(4.14,3.57)) ### set the plot region size back to the default
    par(mai=c(.956,.769,.769,.394)) ### set the margins back to the default
    plot(year,dollars,col="green",type="l") ### plot
}
plot.within.aplot()

Salida de datos
  • Opciones de ventanas gráficas:
X11() # abrir ventana en Linux
windows() # abrir ventana en Windows
dev.list() # mostrar ventanas abiertas
dev.cur() # mostrar ventana actual de trabajo
dev.off() # cerrar ventana actual de trabajo
dev.set(3) # seleccionar la ventana 3 como ventana de trabajo
dev.off(3) # cerrar la ventana 3
graphics.off() # cerrar todas las ventanas
  • Abrir fichero PDF para salida de datos:
pdf(file=”outfile.pdf”)