R Language
Distributiefuncties
Zoeken…
Invoering
?Distributions
.
Opmerkingen
Er zijn over het algemeen vier voorvoegsels:
- d -De dichtheidsfunctie voor de gegeven verdeling
- p -De cumulatieve verdelingsfunctie
- q - Haal de kwantiel geassocieerd met de gegeven waarschijnlijkheid
- r - Neem een willekeurig monster
Zie ?Distributions
voor de distributies die in de basisinstallatie van R zijn ingebouwd.
Normale verdeling
Laten we *norm
als voorbeeld gebruiken. Uit de documentatie:
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)
Dus als ik de waarde van een standaard normale verdeling op 0 wilde weten, zou ik dat doen
dnorm(0)
Dat geeft ons 0.3989423
, een redelijk antwoord.
Op dezelfde manier geeft pnorm(0)
.5
. Nogmaals, dit is logisch, omdat de helft van de verdeling links van 0 is.
qnorm
zal in wezen het tegenovergestelde doen van pnorm
. qnorm(.5)
geeft 0
.
Ten slotte is er de rnorm
functie:
rnorm(10)
Genereert 10 monsters van standaard normaal.
Als u de parameters van een bepaalde distributie wilt wijzigen, kunt u ze eenvoudig als volgt wijzigen
rnorm(10, mean=4, sd= 3)
Binomiale verdeling
We illustreren nu de functies dbinom
, pbinom
, qbinom
en rbinom
gedefinieerd voor binomiale verdeling .
De functie dbinom()
geeft de kansen voor verschillende waarden van de binomiale variabele. Minimaal vereist het drie argumenten. Het eerste argument voor deze functie moet een vector van kwantielen zijn (de mogelijke waarden van de willekeurige variabele X
). De tweede en derde argumenten zijn de defining parameters
van de verdeling, namelijk n
(het aantal onafhankelijke proeven) en p
(de kans op succes in elke proef). Voor een binomiale verdeling met n = 5
, p = 0.5
zijn de mogelijke waarden voor X 0,1,2,3,4,5
. Dat wil zeggen dat de functie dbinom(x,n,p)
de waarschijnlijkheidswaarden P( X = x )
voor 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
>
De binomiale kansverdelingsplot kan worden weergegeven zoals in de volgende afbeelding:
> 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)")
Merk op dat de binomiale verdeling symmetrisch is wanneer p = 0.5
. Overweeg het volgende voorbeeld om aan te tonen dat de binomiale verdeling negatief scheef is wanneer p
groter is dan 0.5
:
> 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")
Wanneer p
kleiner is dan 0.5
de binomiale verdeling positief scheef zoals hieronder getoond.
> 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")
We zullen nu het gebruik van de cumulatieve verdelingsfunctie pbinom()
. Deze functie kan worden gebruikt om kansen te berekenen zoals P( X <= x )
. Het eerste argument voor deze functie is een vector van kwantielen (waarden van x).
# Calculating Probabilities
# P(X <= 2) in a Bin(n=5,p=0.5) distribution
> pbinom(2,5,0.5)
[1] 0.5
De bovenstaande waarschijnlijkheid kan ook als volgt worden verkregen:
# P(X <= 2) = P(X=0) + P(X=1) + P(X=2)
> sum(dbinom(0:2,5,0.5))
[1] 0.5
Om te berekenen, waarschijnlijkheden van het type: 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
>
De binomiale verdeling presenteren in de vorm van een tabel:
> 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
>
De rbinom()
wordt gebruikt om willekeurige steekproeven van gespecificeerde grootte met een gegeven parameterwaarden te genereren.
# 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)")