Sök…


Introduktion

R har många inbyggda funktioner för att arbeta med sannolikhetsfördelningar, med officiella dokument som börjar på ?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)")

Binomial Prob Dist

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")

Negativt skev Binomial

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")

Positivt skev Binomial

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)")

Simulerad binomial



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow