Vamos a ver algunas funciones útiles para el análisis
exploratorio de datos, que permiten calcular
estadísticas simples de un modo efectivo y rápido.
Funciones para estadísticas
simples
Funciones para distribuciones
de probabilidad
Otras funciones de utilidad
Funciones
para estadísticas simples Arriba
cor | Correlación (admite uno o dos argumentos) |
cumsum | Suma cumulativa de un vector |
mean | Media aritmética |
median | El percentil 0.5: la mediana |
min | El mínimo de una serie de números |
max | El máximo de una serie de números |
prod | El producto de los elementos de un vector |
quantile | Los percentiles de una distribución |
range | Mínimo y máximo de un vector |
sample | Muestreo aleatorio (y permutaciones) |
sum | Suma aritmética |
var | Varianza y covarianza |
summary | Resumen de estadísticas de una serie de datos |
Veamos algunos ejemplos:
Estadísticas simples:
> x<-seq(1:10)
> x
[1]
1 2 3 4 5 6 7 8 9 10
> cumsum(x)
[1]
1 3 6 10 15 21 28 36 45 55
> median(x)
[1] 5.5
Generación de 100 datos de una normal estandar, y un sumario de los mismos:
> x<-rnorm(100)
> summary(x)
Min. 1st Qu. Median Mean
3rd Qu. Max.
-2.18000
-0.71000 -0.01041 0.05584 0.73730 2.76500
Generación de dos muestras correladas, y cálculo de la correlación:
> x<-seq(1:10)
> y<-2*x+rnorm(10)
> cor(x,y)
[1] 0.9817436
Creación de permutaciones:
> sample(10)
[1]
5 6 1 4 9 2 8 10 7 3
> sample(10)
[1]
9 1 3 10 7 2 5 4 8 6
Muestreo sin repetición:
> sample(1:10,5)
[1] 7 8 2
4 6
Muestreo con repetición:
> sample(1:10,5,rep=T)
[1]
6 10 6 1 6
Simulación de 10 tiradas de un dado equilibrado:
> sample(1:6,10,rep=T)
Cálculo de algunos percentiles de un conjunto de datos:
> x<-rnorm(200)
> quantile(x,probs=c(0.1,0.4,0.9))
10% 40%
90%
-1.3194786
-0.3663511 1.0824184
Funciones
para distribuciones de probabilidad Arriba
Densidad de probabilidad (d) | Densidad de probabilidad de la distribución seleccionada |
Probabilidades (p) | Probablidades |
Quantiles (q) | Percentiles |
Muestras aleatorias (r) | Generación de muestras aleatorias |
Distribuciones disponibles:
Ejemplo con la distribución normal:
> rnorm(1)
# Generación de un dato de la normal
estandar
[1] -0.4120618
> rnorm(5)
[1] -0.3220499
-0.5556478 -0.1899898 -0.3450181 -2.5807986
> rnorm(5,mean=1,sd=3)
# Generación de un dato de una normal no estandar
[1] -0.4035896
-0.8089832 3.2513373 4.9641722 -1.8603231
> dnorm(0)
# Evaluación de la función
de densidad normal en el punto 0
[1] 0.3989423
> dnorm(1)
[1] 0.2419707
> dnorm(3)
[1] 0.004431848
> pnorm(0)
# Probabilidad acumulada bajo la normal en
el punto 0
[1] 0.5
> pnorm(3)
[1] 0.9986501
> qnorm(0.5)
# El cuantil 50% de la normal es el 0
[1] 0
> qnorm(0.9986501)
[1] 3.000000
> x<-seq(-4,4,length=200)
# Dibujo del gráfico de la distribución
normal
> plot(x,dnorm(x),type="l")
Otras funciones de utilidad Arriba
Una tarea relativamente frecuente es la elaboración de tablas
a partir de variables dadas.
En un ejemplo simple, podríamos tener el color de ojos de 8
personas y el color de pelo de
las mismas guardados en dos variables, y podríamos querer crear
una tabla de contingencia
a partir de estas dos características:
> color.pelo<-c("negro","rubio","negro","rojo","oscuro","oscuro","rubio","negro")
> color.ojos<-c("negro","azul","marron","azul","negro","negro","azul","marron")
> table(color.pelo,color.ojos)
azul marron negro
negro
0 2 1
oscuro
0 0 2
rojo
1 0 0
rubio
2 0 0
Otras funciones de utilidad son las que trabajan sobre matrices:
Funciones sobre matrices
Por ejemplo, supongamos que queremos resolver el sistema:
2 x + 3 y = 8
5 x + 2 y = 9
Plantaremos el sistema en la forma Ax = b y resolveremos:
> A<-matrix(c(2,3,5,2),ncol=2,byrow=T)
> b<-c(8,9)
> solve(A,b)
[1] 1 2
La solución viene dada por x = 1 , y = 2
Si queremos invertir una matriz:
> x<-matrix(c(1,2,3,4),nrow=2)
# Creamos una matriz
> x
[,1] [,2]
[1,]
1 3
[2,]
2 4
> y<-solve(x)
# Calculamos la inversa
> y%*%x
# Multiplicamos la matriz por su inversa
[,1] [,2]
[1,]
1 4.440892e-16
[2,]
010.000000e-01
> round(y%*%x,2)
# Redondeamos a dos decimales
significativos
[,1] [,2]
[1,]
1 0
[2,]
0 1
Atrás Adelante |