inferencia - primera PL

Índice

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
    1. pulsa simultáneamete las teclas Ctrl Alt T
    2. escribe R y pulsa Intro
  • RStudio
    1. pulsa el icono con nueve cuadritos que está a la izquierda, abajo
    2. 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

3.1.3 con tamaño muestral n=25

3.2 con la distribución Exponencial ( \(\lambda\) = 0,1 )

3.2.1 con tamaño muestral n=25

3.2.2 con tamaño muestral n=100

3.3 con la distribución Poisson ( \(\lambda\) = 0,1 )

3.3.1 con tamaño muestral n=100

3.3.2 con tamaño muestral n=500

Autor: Carlos Enrique Carleos Artime

Created: 2019-10-01 mar 10:42

Emacs 25.2.2 (Org mode 8.2.10)

Validate