R Language
Funkcje dystrybucji
Szukaj…
Wprowadzenie
?Distributions
.
Uwagi
Istnieją na ogół cztery prefiksy:
- d - Funkcja gęstości dla danego rozkładu
- p - Funkcja rozkładu skumulowanego
- q - Pobierz kwantyl związany z danym prawdopodobieństwem
- r - Pobierz losową próbkę
Aby zapoznać się z dystrybucjami wbudowanymi w podstawową instalację R., zobacz ?Distributions
.
Normalna dystrybucja
Jako przykład weźmy *norm
. Z dokumentacji:
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)
Więc gdybym chciał poznać wartość standardowego rozkładu normalnego przy 0, zrobiłbym to
dnorm(0)
Co daje nam 0.3989423
, rozsądną odpowiedź.
W ten sam sposób pnorm(0)
daje .5
. Ponownie ma to sens, ponieważ połowa rozkładu znajduje się na lewo od 0.
qnorm
będzie zasadniczo pnorm
odwrotnie niż pnorm
. qnorm(.5)
daje 0
.
Wreszcie jest funkcja rnorm
:
rnorm(10)
Wygeneruje 10 próbek ze standardowej normy.
Jeśli chcesz zmienić parametry danej dystrybucji, po prostu zmień je w ten sposób
rnorm(10, mean=4, sd= 3)
Rozkład dwumianowy
Zilustrujemy teraz funkcje dbinom
, pbinom
, qbinom
i rbinom
zdefiniowane dla rozkładu dwumianowego .
Funkcja dbinom()
podaje prawdopodobieństwa dla różnych wartości zmiennej dwumianowej. Minimalnie wymaga trzech argumentów. Pierwszym argumentem tej funkcji musi być wektor kwantyli (możliwe wartości zmiennej losowej X
). Drugi i trzeci argument to defining parameters
rozkład, a mianowicie n
(liczba niezależnych prób) p
(prawdopodobieństwo sukcesu w każdej próbie). Na przykład dla rozkładu dwumianowego o n = 5
, p = 0.5
, możliwe wartości dla X wynoszą 0,1,2,3,4,5
. Oznacza to, że dbinom(x,n,p)
podaje wartości prawdopodobieństwa P( X = x )
dla 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
>
Dwumianowy wykres rozkładu prawdopodobieństwa można wyświetlić jak na poniższym rysunku:
> 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)")
Zauważ, że rozkład dwumianowy jest symetryczny, gdy p = 0.5
. Aby wykazać, że rozkład dwumianowy jest ujemnie przekrzywiony, gdy p
jest większe niż 0.5
, rozważ następujący przykład:
> 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")
Gdy p
jest mniejsze niż 0.5
rozkład dwumianowy jest dodatnio przekrzywiony, jak pokazano poniżej.
> 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")
Zilustrujemy teraz użycie funkcji skumulowanej dystrybucji pbinom()
. Ta funkcja może być używana do obliczania prawdopodobieństw, takich jak P( X <= x )
. Pierwszym argumentem tej funkcji jest wektor kwantyli (wartości x).
# Calculating Probabilities
# P(X <= 2) in a Bin(n=5,p=0.5) distribution
> pbinom(2,5,0.5)
[1] 0.5
Powyższe prawdopodobieństwo można również uzyskać w następujący sposób:
# P(X <= 2) = P(X=0) + P(X=1) + P(X=2)
> sum(dbinom(0:2,5,0.5))
[1] 0.5
Aby obliczyć, prawdopodobieństwa typu: 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
>
Przedstawienie rozkładu dwumianowego w formie tabeli:
> 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
>
Funkcja rbinom()
służy do generowania losowych próbek o określonych rozmiarach i podanych wartościach parametrów.
# 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)")