R Language
Funciones de distribución
Buscar..
Introducción
?Distributions
.
Observaciones
Generalmente hay cuatro prefijos:
- d -La función de densidad para la distribución dada.
- p -La función de distribución acumulativa
- q -Obtener el cuantil asociado con la probabilidad dada
- r-obtener una muestra aleatoria
Para las distribuciones integradas en la instalación básica de R, consulte ?Distributions
.
Distribución normal
Usemos *norm
como ejemplo. De la documentación:
dnorm(x, mean = 0, sd = 1, log = FALSE)
pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
rnorm(n, mean = 0, sd = 1)
Así que si quisiera saber el valor de una distribución normal estándar en 0, lo haría
dnorm(0)
Lo que nos da 0.3989423
, una respuesta razonable.
De la misma manera pnorm(0)
da .5
. Nuevamente, esto tiene sentido, porque la mitad de la distribución está a la izquierda de 0.
qnorm
hará esencialmente lo contrario de pnorm
. qnorm(.5)
da 0
.
Finalmente, está la función rnorm
:
rnorm(10)
Se generarán 10 muestras del estándar normal.
Si desea cambiar los parámetros de una distribución dada, simplemente cámbielos como se indica.
rnorm(10, mean=4, sd= 3)
Distribución binomial
Ahora ilustramos las funciones dbinom
, pbinom
, qbinom
y rbinom
definidas para la distribución binomial .
La función dbinom()
da las probabilidades para varios valores de la variable binomial. Mínimamente requiere tres argumentos. El primer argumento para esta función debe ser un vector de cuantiles (los valores posibles de la variable aleatoria X
). El segundo y tercer argumento son los defining parameters
de la distribución, a saber, n
(el número de ensayos independientes) y p
(la probabilidad de éxito en cada ensayo). Por ejemplo, para una distribución binomial con n = 5
, p = 0.5
, los valores posibles para X son 0,1,2,3,4,5
. Es decir, la función dbinom(x,n,p)
da los valores de probabilidad P( X = x )
para x = 0, 1, 2, 3, 4, 5
.
#Binom(n = 5, p = 0.5) probabilities
> n <- 5; p<- 0.5; x <- 0:n
> dbinom(x,n,p)
[1] 0.03125 0.15625 0.31250 0.31250 0.15625 0.03125
#To verify the total probability is 1
> sum(dbinom(x,n,p))
[1] 1
>
La gráfica de distribución de probabilidad binomial se puede mostrar como en la siguiente figura:
> x <- 0:12
> prob <- dbinom(x,12,.5)
> barplot(prob,col = "red",ylim = c(0,.2),names.arg=x,
main="Binomial Distribution\n(n=12,p=0.5)")
Tenga en cuenta que la distribución binomial es simétrica cuando p = 0.5
. Para demostrar que la distribución binomial está sesgada negativamente cuando p
es mayor que 0.5
, considere el siguiente ejemplo:
> n=9; p=.7; x=0:n; prob=dbinom(x,n,p);
> barplot(prob,names.arg = x,main="Binomial Distribution\n(n=9, p=0.7)",col="lightblue")
Cuando p
es menor que 0.5
la distribución binomial está sesgada positivamente como se muestra a continuación.
> n=9; p=.3; x=0:n; prob=dbinom(x,n,p);
> barplot(prob,names.arg = x,main="Binomial Distribution\n(n=9, p=0.3)",col="cyan")
Ahora ilustraremos el uso de la función de distribución acumulativa pbinom()
. Esta función se puede utilizar para calcular probabilidades como P( X <= x )
. El primer argumento de esta función es un vector de cuantiles (valores de x).
# Calculating Probabilities
# P(X <= 2) in a Bin(n=5,p=0.5) distribution
> pbinom(2,5,0.5)
[1] 0.5
La probabilidad anterior también se puede obtener de la siguiente manera:
# P(X <= 2) = P(X=0) + P(X=1) + P(X=2)
> sum(dbinom(0:2,5,0.5))
[1] 0.5
Para calcular, probabilidades del tipo: P( a <= X <= b )
# P(3<= X <= 5) = P(X=3) + P(X=4) + P(X=5) in a Bin(n=9,p=0.6) dist
> sum(dbinom(c(3,4,5),9,0.6))
[1] 0.4923556
>
Presentando la distribución binomial en forma de tabla:
> n = 10; p = 0.4; x = 0:n;
> prob = dbinom(x,n,p)
> cdf = pbinom(x,n,p)
> distTable = cbind(x,prob,cdf)
> distTable
x prob cdf
[1,] 0 0.0060466176 0.006046618
[2,] 1 0.0403107840 0.046357402
[3,] 2 0.1209323520 0.167289754
[4,] 3 0.2149908480 0.382280602
[5,] 4 0.2508226560 0.633103258
[6,] 5 0.2006581248 0.833761382
[7,] 6 0.1114767360 0.945238118
[8,] 7 0.0424673280 0.987705446
[9,] 8 0.0106168320 0.998322278
[10,] 9 0.0015728640 0.999895142
[11,] 10 0.0001048576 1.000000000
>
El rbinom()
se utiliza para generar muestras aleatorias de tamaños específicos con valores de parámetros dados.
# Simulation
> xVal<-names(table(rbinom(1000,8,.5)))
> barplot(as.vector(table(rbinom(1000,8,.5))),names.arg =xVal,
main="Simulated Binomial Distribution\n (n=8,p=0.5)")