R Language
Distributionsfunktioner
Sök…
Introduktion
?Distributions
.
Anmärkningar
Det finns i allmänhet fyra prefix:
- d -Den täthetsfunktionen för den givna fördelningen
- p -Kumulativ fördelningsfunktion
- q -Få kvantilen associerad med den givna sannolikheten
- r - Få ett slumpmässigt prov
För distributioner inbyggda i R: s basinstallation, se ?Distributions
.
Normal distribution
Låt oss använda *norm
som ett exempel. Från dokumentationen:
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)
Så om jag ville veta värdet på en vanlig normalfördelning vid 0 skulle jag göra det
dnorm(0)
Vilket ger oss 0.3989423
, ett rimligt svar.
På samma sätt ger pnorm(0)
.5
. Återigen är det meningsfullt, eftersom hälften av distributionen är till vänster om 0.
qnorm
kommer i huvudsak att göra motsatsen till pnorm
. qnorm(.5)
ger 0
.
Slutligen finns det rnorm
funktionen:
rnorm(10)
Kommer att generera 10 prover från standardnorm.
Om du vill ändra parametrarna för en given distribution ska du bara ändra dem så
rnorm(10, mean=4, sd= 3)
Binomial distribution
Vi illustrerar nu funktionerna dbinom
, pbinom
, qbinom
och rbinom
definierade för Binomial distribution .
dbinom()
ger sannolikheten för olika värden på binomialvariabeln. Minimalt kräver det tre argument. Det första argumentet för denna funktion måste vara en vektor av kvantiler (de möjliga värdena för den slumpmässiga variabeln X
). Det andra och tredje argumentet är de defining parameters
för distributionen, nämligen n
(antalet oberoende försök) och p
(sannolikheten för framgång i varje försök). Till exempel, för en binomfördelning med n = 5
, p = 0.5
, är de möjliga värdena för X 0,1,2,3,4,5
. Det vill säga dbinom(x,n,p)
-funktionen ger sannolikhetsvärdena P( X = x )
för 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
>
Den binomiella sannolikhetsfördelningsplottet kan visas som i följande figur:
> 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)")
Observera att binomialfördelningen är symmetrisk när p = 0.5
. För att visa att binomialfördelningen är negativt skev när p
är större än 0.5
, överväg följande exempel:
> 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")
När p
är mindre än 0.5
är binomialfördelningen positivt skev såsom visas nedan.
> 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")
Vi kommer nu att illustrera användningen av den kumulativa distributionsfunktionen pbinom()
. Denna funktion kan användas för att beräkna sannolikheter som P( X <= x )
. Det första argumentet till denna funktion är en vektor av kvantiler (värden på x).
# Calculating Probabilities
# P(X <= 2) in a Bin(n=5,p=0.5) distribution
> pbinom(2,5,0.5)
[1] 0.5
Ovanstående sannolikhet kan också erhållas enligt följande:
# P(X <= 2) = P(X=0) + P(X=1) + P(X=2)
> sum(dbinom(0:2,5,0.5))
[1] 0.5
För att beräkna, sannolikheter av typen: 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
>
Presentera binomialfördelningen i form av en tabell:
> 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
>
rbinom()
används för att generera slumpmässiga prover av specificerade storlekar med en given parametervärde.
# 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)")