Autores: Amparo Baíllo y José R. Berrendero
Cada distribución se nombra mediante una palabra clave o alias.
Una lista completa de las distribuciones: help(Distributions)
A cada distribución se le antepone un prefijo que determina una función relacionada
Funciones | Prefijos |
---|---|
Función de distribución | p |
Función cuantílica | q |
Función de densidad (continuas) o de probabilidad (discretas) | d |
Generación de números aleatorios | r |
Algunas cuestiones:
Para obtener n
valores sin reemplazamiento del vector x
:
x <- 1:5
sample(x, 3)
## [1] 2 5 4
Para obtener n
valores con reemplazamiento del vector x
:
sample(x, 8, rep=TRUE)
## [1] 2 2 3 4 3 3 4 2
¿Cómo se obtiene una permutación?
x = seq(-4,4,0.1)
dN = dnorm(x,mean=0,sd=1)
XN = rnorm(200,mean=0,sd=1)
hist(XN,freq=FALSE)
lines(x,dN,type='l')
x <- rnorm(50*1000)
x <- matrix(x, nrow=50, ncol=1000)
medianas <- apply(x, 2, median)
replicate
medianas <- replicate(1000, median(rnorm(50)))
X = rnorm(1000,3,0.5) # Generamos 1000 datos de una normal de media 3 y desviación típica 0.5.
Histograma de X
:
hist(X)
H = hist(X,freq=FALSE) # H es un objeto histograma, con información sobre intervalos y frecuencias
H$breaks
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
boxplot(X)
mean(X)
## [1] 2.966825
quantile(X,c(0.25,0.75))
## 25% 75%
## 2.619882 3.282909
sd(X)
## [1] 0.5113741
var(X)
## [1] 0.2615034
Constrastes para medias: t.test
Contrastes para proporciones: prop.test
Contrastes para varianzas: var.test
En una encuesta a 200 personas, 130 se han mostrado contrarias a las reformas económicas del gobierno. ¿Podemos decir (a nivel \(\alpha=0.05\)) que más de la mitad de la población es contraria a las reformas?
alternative = c("two.sided", "less", "greater")
p=NULL
conf.level = 0.95
correct = TRUE
prop.test(130, 200, alternative='greater')
##
## 1-sample proportions test with continuity correction
##
## data: 130 out of 200, null probability 0.5
## X-squared = 17.405, df = 1, p-value = 1.51e-05
## alternative hypothesis: true p is greater than 0.5
## 95 percent confidence interval:
## 0.5903019 1.0000000
## sample estimates:
## p
## 0.65
prop.test(13, 20, alternative='greater')
prop.test(130, 200, p=0.6, alternative='greater')
Los siguientes datos corresponden al consumo de carne (libras por persona consumidas en un año) en una muestra de 16 personas elegidas al azar en barrios de clase media de pequeñas ciudades norteamericanas:
118, 110, 117, 120, 119, 126, 115, 112, 112, 113, 122, 125, 130, 115, 118, 123
Con estos datos, ¿se puede afirmar con un nivel de significación de \(\alpha=0.05\), que el consumo medio de carne es superior a 115 libras por persona?
x <- c(118, 110, 117, 120, 119, 126, 115, 112, 112, 113, 122, 125, 130, 115, 118, 123)
mean(x)
## [1] 118.4375
sd(x)/sqrt(16)
## [1] 1.414121
Hay que comprobar si \[ \frac{\bar{x}-115}{s/\sqrt{n}} = \frac{118.4-115}{1.414}=2.431 \] es suficientemente grande para hacer la afirmación.
alternative = c("two.sided", "less", "greater")
mu=0
var.equal = FALSE
y = NULL
paired = FALSE
conf.level = 0.95
t.test(x, mu=115, alternative='greater')
##
## One Sample t-test
##
## data: x
## t = 2.4308, df = 15, p-value = 0.01404
## alternative hypothesis: true mean is greater than 115
## 95 percent confidence interval:
## 115.9585 Inf
## sample estimates:
## mean of x
## 118.4375
alternative = c("two.sided", "less", "greater")
ratio=1
conf.level = 0.95
El comando lm
se utliza para calcular la recta que ajusta por mínimos cuadrados una nube de puntos
x <- -5:5
epsilon <- rnorm(10, sd=2)
y <- 2 + 3*x + epsilon
## Warning in 2 + 3 * x + epsilon: longitud de objeto mayor no es múltiplo de
## la longitud de uno menor
lm(y~x)
##
## Call:
## lm(formula = y ~ x)
##
## Coefficients:
## (Intercept) x
## 2.843 2.822
plot(x,y, pch=16, cex=1.5, bty='l')
abline(lm(y~x), lwd=2, col='red')
abline(a=2, b=3, lty=2)
Comandos de alto nivel: Son comandos con los que se puede crear un gráfico nuevo.
Comandos de bajo nivel: Son comandos que permiten añadir elementos (puntos, líneas, texto, etc.) a un gráfico ya existente
Parámetros: Permiten modificar el aspecto de los gráficos
Paquetes especializados: Un paquete de gráficos muy utilizado es ggplot2
Ya han ido apareciendo los más importantes: plot
, hist
, boxplot
, etc
Los argumentos que más se usan son:
Uso | Argumento |
---|---|
Tipo de gráfico (puntos, líneas) | type='l' |
Leyendas de los ejes | xlab= , ylab= |
Rango de los ejes | xlim=c(min,max) , ylim=c(min,max) |
Título | main= |
Subtítulo | sub= |
Los que más se usan son:
Uso | Commando |
---|---|
Añadir puntos \((x_i,y_i)\) | points(x,y) |
Añadir líneas | lines(x,y) |
Dibuja una recta \(y=a+bx\) | abline(a,b) |
Dibuja una recta \(y=c\) | abline(h=c) |
Dibuja la recta de regresion | abline(lm(y~x)) |
Añade título | title() |
Añade una leyenda en \((x,y)\) | legend(x,y,legend) |
Los gráficos se pueden personalizar a través de más de 60 parámetros
La mayoría de los parámetros (pero no todos) se pueden usar como argumentos en los comandos de alto y bajo nivel. En este caso tienen efecto en el gráfico que estamos dibujando en este momento
También pueden fijarse valores mediante el comando par
. Los valores tendrán efecto para todos los gráficos
Algunos de los parámetros más usados
Parámetro | Uso |
---|---|
bg |
Color del fondo (véase colors() ) |
bty |
Tipo de ejes (‘o’,‘l’,‘c’,‘7’,‘u’,‘]’ |
cex |
Tamaño de los símbolos y texto |
col |
Color de los símbolos y texto |
lty |
Tipo de líneas (1, continua; 2, discontinua; 3, puntos;…) |
lwd |
Ancho de líneas (por defecto, lwd=1 ) |
pch |
Tipo de símbolo |
x <- rnorm(50)
y <- x + rnorm(50, sd=0.5)
plot(x,y,cex=1.1,pch=16,col='blue',bty='l')
abline(lm(y~x), lwd=2,col='red',lty=2)
Función seno entre 0 y \(2\pi\) (en color azul, línea el doble de gruesa)
Función coseno entre 0 y \(2\pi\) (en color rojo, línea discontinua)
Cambiamos el tipo de ejes y añadimos línea vertical gruesa en \(\pi\)
Añadimos un punto en \((4,0)\)
Añadimos título y leyenda:
x <- seq(0, 2*pi, 0.01)
y <- sin(x)
plot(x,y, t='l', col='blue', lwd=2, bty='l')
lines(x, cos(x), col='red', lty=2)
abline(v=pi, lwd=3)
points(4,0,pch=16)
legend('bottomleft', c('seno','coseno'),lty=c(1,2),lwd=c(2,1),col=c('blue','red'))
title('Funciones seno y coseno')
x <- rnorm(50)
y <- x + rnorm(50, sd=0.5)
layout(matrix(1:4, 2))
hist(x)
boxplot(x)
plot(x,y)
plot(x,y)
abline(lm(y~x))
colores <-c(rep('red', 50), rep('green', 50), rep('blue', 50))
pchn = 21
pairs(iris, bg=colores, pch=pchn)
nombre <- function(arg1=val1,arg2=val2,...){
...
expresiones de R
...
}
Los valores por defecto de los argumentos no son obligatorios
Una función puede no tener argumentos
La función devuelve como resultado el valor de la última expresión evaluada, o aquello que aparezca en el comando return
Antes de utilizar una función hay que cargarla en el área de trabajo. Para ello, hay varias alternativas:
source(fichero)
Con RStudio no es difícil crear documentos que incluyen tanto texto como cálculos estadísticos llevados a cabo con R
Se combina la sintaxis de markdown con código de R cuyos resultados forman parte del documento.
Tiene la ventaja de actualizar los informes con nuevos datos de forma sencilla.
Formatos de salida: html, pdf, word
Tenemos que seguir los pasos siguientes:
Argumento | Opción por defecto | Efecto |
---|---|---|
eval | TRUE | Ejecuta el código e incluye los resultados |
echo | TRUE | Se incluye el código junto con los resultados |
warning | TRUE | Incluir los avisos |
fig.width | 7 | Anchura (en pulgadas) de los gráficos |
fig.height | 7 | Altura (en pulgadas) de los gráficos |
En este fichero tenéis los resultados (años 2009 y 2010) de las pruebas de nivel que la Comunidad de Madrid realizó en los colegios de primaria.
El fichero contiene tres variables: tipo (colegio público, concertado o privado), nota09 (el resultado medio de cada colegio en 2009) y nota10 (el resultado medio de cada colegio en 2010).
Escribir un breve informe dinámico que incluya una descripción gráfica de estos datos.