inferencia - primera PL
Índice
- 1. programa R
- 2. lenguaje R
- 3. ejercicio
1 programa R
Los ordenadores pueden usarse
- o bien con el sistema operativo Windows
- o bien con el sistema operativo Ubuntu
1.1 en Windows
Si estás en Windows, puedes usar R mediante uno de estos dos iconos
- R GUI
- RStudio
1.2 en Ubuntu
Si estás en Ubuntu, puedes usar R de una de estas dos formas
- terminal
- pulsa simultáneamete las teclas Ctrl Alt T
- escribe R y pulsa Intro
- RStudio
- pulsa el icono con nueve cuadritos que está a la izquierda, abajo
- escribe R S … y enseguida aparece RStudio
2 lenguaje R
2.1 obtener resultados
# esto es un comentario # los comentarios no se ejecutan # comienzan por el símbolo almohadilla: # # lo siguiente devuelve los resultados de las operaciones 1 + 2 * 3 - 4 / 5 1 + (2 * 3) - (4 / 5) (1 + 2) * (3 - 4) / 5 # lo siguiente hace lo mismo que la última operación print ((1 + 2) * (3 - 4) / 5) # veremos que a veces es necesario escribir la orden print
2.2 definir variables
La sintaxis más habitual para asignar "valor" a una etiqueta "variable" es la siguiente:
variable <- valor
Los valores pueden ser numéricos o textos (llamados también "cadenas"):
longitud <- 28 nombre <- "Gustavo Adolfo"
Para ver el valor de la variable, se puede escribir su nombre solo, o bien usar "print" con la asignación:
anchura <- 15.5 anchura # ver el valor de "anchura" print (grosor <- 0.23) # ver el valor a la vez que se asigna
2.3 trabajar con vectores
v1 <- 1:9 v1 # números del 1 al 9 v2 <- 10 * v1 v2 # decenas de 10 a 90 v3 <- v1 + v2 v3 # 11 22 33 ... 99 class(v3) # vector de clase "numeric" length(v3) # longitud del vector
2.4 manejo de distribuciones de probabilidad
2.4.1 generar aleatorios
a1 <- runif (10, 8, 12) # 10 valores uniformes entre 8 y 12 a2 <- rexp (100, 0.1) # 100 valores exponenciales con lambda=0.1 a3 <- rpois (50, 0.1) # 50 valores Poisson con lambda=0.1 a4 <- rnorm (50, 170, 5) # 50 valores gausianos con media 170 y desviación típica 5 a5 <- rnorm (50) # 50 valores de una gausiana típica N(0;1)
2.4.2 función de densidad
dnorm (175, 170, 5) # densidad en 175 de una curva gausiana con media 170 y desviación típica 5 dpois (0, 0.1) # probabilidad de que usa distribución Poisson(0,1) tome el valor 0
2.4.3 función de distribución
pnorm (180, 170, 5) # función de distribución en 180 de una distribución N(170;5) = # = Pr [N(170;5) ≤ 180] = integrate (dnorm, -Inf, 180, 170, 5) $ value ppois (2, 0.1) # = Pr [P(0,1) ≤ 3] = Pr [P(0,1) = 0] + Pr [P(0,1) = 1] + Pr [P(0,1) = 2] = # = sum (dpois (0:2, 0.1))
2.4.4 función cuantil
# estaturas en cm ~ N (170, 10) # ¿altura de una puerta para que se agache sólo el 0,1%? qnorm (0.999, 170, 10) # casi 201 cm
2.5 descriptivos de un vector
muestra <- rnorm (1000, 170, 15) # 1000 valores gausianos con media=170 y sigma=15 mean(muestra) # media del vector var(muestra) # cuasivarianza del vector sd(muestra) # cuasi desviación típica
2.6 gráficos
muestra <- rnorm (10000, 170, 15) # 10000 valores gausianos con media=170 y sigma=15 hist (muestra) # histograma de frecuencias absolutas hist (muestra, prob=TRUE) # histograma de densidades (frecuencias relativas) hist (muestra, col=2) # con las barras coloreadas de rojo hist (muestra, col=2, breaks=100) # con más barras x <- c(140, 170, 200) # abscisas y <- c( 0, 250, 0) # ordenadas lines (x, y) # añadir líneas finas al gráfico lines (x, y, col=3, lwd=10) # añadir líneas verdes (col=3) y gordas (lwd=10) abscisas <- 1:50 ordenadas <- rnorm (50) plot (abscisas, ordenadas) plot (ordenadas ~ abscisas) plot (ordenadas ~ abscisas, type = "p") # lo mismo plot (ordenadas ~ abscisas, type = "l") # líneas plot (ordenadas ~ abscisas, type = "h") # "histograma" plot (ordenadas ~ abscisas, type = "s") # "step" (escalones)
2.7 trabajar con matrices
secuencia <- 1:10 class (secuencia) # "numeric": es un vector numérico matriz1 <- matrix (secuencia, 5, 2) # empaqueta el vector en 5 filas y 2 columnas class (matriz1) # "matrix": es una matriz dim (matriz1) # 5 filas y 2 columnas
2.8 aplicar una función a filas o columnas de una matriz
secuencia <- 1:10 sum (secuencia) # la función "sum" suma los valores de un vector apply (matriz1, 1, sum) # el 1 significa aplicar por filas apply (matriz1, 2, sum) # el 2 significa aplicar por columnas
3 ejercicio
Comprobar empíricamente el Teorema Central del Límite.
3.1 con la distribución Uniforme (8; 12)
3.1.1 introito
x1 <- runif (1e5) x2 <- runif (1e5) x3 <- runif (1e5) x4 <- runif (1e5) x5 <- runif (1e5) hist (x1, col=2) hist (x2, col=2) hist (x1+x2, col=2) hist (x1+x2+x3, col=2) hist (x1+x2+x3+x4, col=2) hist (x1+x2+x3+x4+x5, col=2) x1 <- x2 <- x3 <- x4 <- x5 <- runif (1e5) hist (x1, col=2) hist (x2, col=2) hist (x1+x2, col=2)
3.1.2 con tamaño muestral n=5
## simular 10000 muestras de tamaño 5 de una Uniforme (8; 12) m <- 10000 # número de muestras n <- 5 # tamaño muestral valores <- runif (m * n, 8, 12) # generar los valores muestras <- matrix (valores, m, n) # empaquetarlos con una muestra por fila class(valores) # numeric = vector de números length(valores) # m × n class(muestras) # matrix dim(muestras) # m filas y n columnas ## distribución de medias muestrales medias <- apply (muestras, 1, mean) # aplicar media por filas class(medias) # comprobar que es un vector... length(medias) # ...de tamaño «m» ## comprobar la convergencia ## comparando densidades mediaT <- (8+12)/2 # media teórica = 10 desviT <- sqrt ((12-8)^2 / 12 / n) # desviación típica teórica = 0,516.397.8 mean(medias) # ha de ser similar a mediaT sd(medias) # ha de ser similar a desviT hist (medias, col=2, prob=TRUE) # histograma de densidades con color 2 (rojo) medias <- sort(medias) # las ordenamos para facilitar el gráfico lines (medias, dnorm(medias,mediaT,desviT), lwd=10) # curva gausiana ## comparar funciones de distribución x <- medias # abscisas y.emp <- (1:m)/m # ordenadas de la función de distribucion empírica y.teo <- pnorm (x, mediaT, desviT) # ordenadas de la función de distribución teórica plot (x, y.emp, type='s') # s = step = peldaño, escalón lines (x, y.teo, col=3) # color verde distancias <- abs (y.emp - y.teo) # distancias verticales entre las distribuciones max (distancias) # distancia máxima entre las distribuciones xmax <- x [which.max (distancias)] # abscisa de la distancia máxima abline (v = xmax, col = 2) # color rojo; indica distancia máxima