Gå till innehåll

Klykas studiedagbok - Multipla normaldistributioner och annat sexigt


Klyka

Recommended Posts

Jobbar på en grej och har kommit in på lite statistikmojs som jag inte är jättehaj på. Handlar om att jämföra flera olika normaldistribuerade variabler med varandra och räkna ut sannolikheten att den ena eller den andra normaldistributionen ger ett utfall som är högre än de andra:

 

http://forumserver.twoplustwo.com/25/probability/problem-muliple-normal-distributions-1040760/#post26702161

 

Nån som är haj på det där?

Du måste standardisera variablerna först sen kan du räkna på det som om fördelningarna var lika. Jag har varken tid eller ork nu mitt i morgonkaffet att gå in närmare på det men det står om det i wikiartikeln om normalfördelning. Det är ganska enkelt med instruktioner så det ska nog gå bra ändå.

 

Edit: det borde finnas övningsuppgifter på exakt det här runt om på nätet om du söker på "probability density function" eller något åt det hållet.

Länk till kommentar
Dela på andra webbplatser

  • Svars 185
  • Created
  • Senaste svar

Top Posters In This Topic

Korspost från tråden på 2+2:

 

After a response on another forum I realize that I need to standardize all of the distributions. This is what I know:

 

If a random variable X is normal with mean = m and StdDev = s, then it can be normalized to the standard normal variable Z by this formula:

 

Z = (X - m) / s

 

Random variable X(1) is greater than random variable X(2) if:

 

s(1) * (Z(1) + m(1)) > s(2) * (Z(2) + m(2))

 

Right? That's a first step, but how do I calculate it?

 

From there, I need to calculate the cummulative probability of a given variable being greater than all the others, but that should not be a problem once I get the first step right, I guess, since each variable is independent.

Länk till kommentar
Dela på andra webbplatser

Jobbar på en grej och har kommit in på lite statistikmojs som jag inte är jättehaj på. Handlar om att jämföra flera olika normaldistribuerade variabler med varandra och räkna ut sannolikheten att den ena eller den andra normaldistributionen ger ett utfall som är högre än de andra:

 

http://forumserver.twoplustwo.com/25/probability/problem-muliple-normal-distributions-1040760/#post26702161

 

Nån som är haj på det där?

 

.

Länk till kommentar
Dela på andra webbplatser

DocLame, nu tror jag mig ha satt mig in i din lösning hyffsat, men jag förstår inte riktigt vad som händer när Z komer in i bilden. Jag tror att du gör något i stil med att ta ett värde från the cummulative distribution function vid A=0 respektive B=0 (jag saknar facktermer).

 

Hur som helst, om jag inte missförstått dig så räknar du ut dels P(X2>X1) och dels P(X2>X3) och tar sedan den kumulativa sannolikheten genom att multiplicera dem. Det kan man emellertid inte göra, eftersom trots att X1, X2 och X3 är oberoende av varandra på är A och B inte oberoende av varandra.

 

Exempel: X3 (som har lägst medel) har större chans att "vinna" när X2<X1, eftersom detta innefattar många fall då X2 antar ett onormalt lågt värde och det alltså i många av dessa fall är så att både X1 och X2 antar relativt låga värden som X3 har en realistisk chans att slå. Se även Pyromanthas post i 2+2-tråden.

 

Jag har skrivit ett script i R som simulerar 10 miljoner trials, och där får jag fram att P(X2>X1 AND X2>X3) ~ 60,6%.

 

Mer exakt 60,62852% enligt senaste simuleringen, orkar inte riktigt fundera på hur många siffror som är gällande. Så här ser min fulkod ut iaf:

 

# ****************************************
# ************* Manual input *************
# ****************************************


Sims = 10000000
Distribution <- c(	# An array containing all the distributions
1, 2, 0.5,		# List of means
2, 3, 1)		# List of SdtDevs


# ****************************************
# ************ / Manual input ************
# ****************************************


NoOfDists = length(Distribution)/2		# Counts the number of distributions entered into the variable Distributions
dim(Distribution) <- c(NoOfDists,2)		# Means in column 1 and StdDevs in column 2

Trial <- rep(0, times = NoOfDists * Sims)	# An array containing the trials
dim(Trial) <- c (Sims, NoOfDists)		# A column per distribution and a row per simulation
for(a in 1:NoOfDists)
{
Trial[1:Sims,a] = rnorm(Sims,Distribution[a,1],sqrt(Distribution[a,2]))	# Fill each column with random variables drawn from the distribution that corresponds to that column
}

Winner <- rep(0, times = Sims)			# Create an array for the greatest ("winning") number of each trial
for(a in 1:Sims) Winner[a] = max(Trial[a,1:NoOfDists])

Output <- array(1:(NoOfDists*2), dim = c(NoOfDists, 2))	# An array for output. Numbered columns just or layout purposes. The numbering of column 2 is just an ugly shortcut - it will be overwritten in the following.
for(a in 1:NoOfDists)
{
Output[a,2] = sum(Trial[1:Sims,a] == Winner) / Sims	# Calculate the win% of each distribution and put in column 2
}
Output							# Print output

 

Output-kommandot i slutet (som gör att arrayen Output skrivs ut) resulterar i följande output:

 

> Output
    [,1]      [,2]
[1,]    1 0.2715784
[2,]    2 0.6062852
[3,]    3 0.1221364

 

Nedan följer en exekuvering av scriptet med endast ett fåtal trials och utskrift av relevanta variabler för att tydliggöra scriptets funktion:

 

Sims = 25	# I stället för 10 miljoner
> Distribution <- c(
+  1, 2, 0.5,
+  2, 3, 1)
> NoOfDists = length(Distribution)/2

> NoOfDists	# Skriver ut variabeln NoOfDists


[1] 3


> dim(Distribution) <- c(NoOfDists,2)
> 
> Trial <- rep(0, times = NoOfDists * Sims)
> dim(Trial) <- c (Sims, NoOfDists)
> for(a in 1:NoOfDists)
+ {
+  Trial[1:Sims,a] = rnorm(Sims,Distribution[a,1],sqrt(Distribution[a,2]))
+ }

> Trial		# Skriver ut arrayen Trial


            [,1]       [,2]        [,3]
[1,] -1.75104225  1.9597162 -0.03518911
[2,]  2.30724097 -0.1897364  0.13767098
[3,]  1.01356313  2.6046584 -0.50611289
[4,]  0.66324623  3.0516121  0.07936945
[5,]  0.54739235  0.9442152  0.84936344
[6,]  1.39096617  5.1628873  0.39430541
[7,]  3.30100652  2.4470658 -0.58345613
[8,]  1.87945227  2.7329568  1.96545875
[9,]  2.81916645  3.7797880  0.27896100
[10,]  1.54482706  1.5009297  2.34529076
[11,] -0.29866984  2.3269024  0.30295240
[12,] -0.08351543  3.2712352 -2.24333546
[13,]  0.07901963  1.0428702 -0.08046396
[14,]  0.32875191 -0.9040326  1.40958082
[15,]  2.90548853  2.8976342  0.03779773
[16,]  0.17649169  4.9080823  0.10616612
[17,]  1.95285701  4.8446506 -0.01306146
[18,]  2.47436816  1.9448834 -0.53637796
[19,] -1.13814870  4.6517821 -0.36826106
[20,] -0.15183791  2.0734799  0.99636561
[21,]  3.60747391 -0.3862565  0.14346876
[22,] -0.98270985  3.0332578  1.24237794
[23,]  0.24872684 -0.7224733  1.83497137
[24,]  2.06300117  6.7654894  0.62272939
[25,]  4.72702833  0.9497868  1.74211073


> Winner <- rep(0, times = Sims)
> for(a in 1:Sims) Winner[a] = max(Trial[a,1:NoOfDists])

> Winner	# Skriver ut arrayen Winner


[1] 1.9597162 2.3072410 2.6046584 3.0516121 0.9442152 5.1628873 3.3010065
[8] 2.7329568 3.7797880 2.3452908 2.3269024 3.2712352 1.0428702 1.4095808
[15] 2.9054885 4.9080823 4.8446506 2.4743682 4.6517821 2.0734799 3.6074739
[22] 3.0332578 1.8349714 6.7654894 4.7270283


> Output <- array(1:(NoOfDists*2), dim = c(NoOfDists, 2))
> for(a in 1:NoOfDists)
+ {
+  Output[a,2] = sum(Trial[1:Sims,a] == Winner) / Sims
+ }

> Output	# Skriver ut arrayen Output


    [,1] [,2]
[1,]    1 0.24
[2,]    2 0.64
[3,]    3 0.12

Länk till kommentar
Dela på andra webbplatser

BTW, BruceZ på 2+2 har löst problemet med en multivariate normal distribution. Har inte kollat närmare på hans lösning än, men det verkar logiskt att använda en sån. Hur som helst avser hans lösning endast tre distributioner, tror jag, och jag vill kunna lösa det för godtyckligt antal distributioner. Mitt script ovan är skalbart, men det är ju varken elegant eller praktiskt att simulera fram lösningar.

Länk till kommentar
Dela på andra webbplatser

Postade ett relaterat problem på 2+2:

 

A problem with multiple uniformly distributed random variables

 

Let's say we have n random variabes t that are drawn from uniform distributions. The lower boundary of all those distributions is 0, but each distribution has its own upper boundary B(n). That is: t(n) is drawn from the uniform distribution [0, B(n)].

 

1) What is the probability that in one trial t(1) is the smallest of all t?

1) What is the probability that in one trial t(1) is the greatest of all t?

 

Jag försökte lösa fråga (1) genom att tänka mig ett mångdimensionellt ekvationssystem där varje t representeras av en dimension i planet. Varje trial pekar således ut en punkt. Försökte mig på att dela upp planet i de linjer där två variabler är lika och således räkna ut volymen i de mångdimensionella triangel där t(1) < t(2) OCH t(1) < t(3) OCH [...] OCH t(1) < t(n), men föll på att den avgränsningen ser olika ut beroende på om B för den ena variabeln t är större eller mindre än B för den andra.

 

Wow, om nån lyckas förstå min lösningstanke så är jag förvånad, men hinner inte förklara bättre just nu. Nåja, problemet (engelsk text) kvarstår - nån som har nån tanke om hur det kan lösas?

 

http://forumserver.twoplustwo.com/25/probability/problem-multiple-uniformly-distributed-random-variables-1043801/

Länk till kommentar
Dela på andra webbplatser

  • 1 year later...

Hej, studiedagboken!

 

Jag har avslutat mina studier (juridik), klippt mig och skaffat ett jobb! Som jurist är det kanske något otippat att jag får användning av den nördighet som jag gett uttryck för här i dagboken.

 

Jag har den perfekta tjänsten, där jag får kombinera juridik, nationalekonomi, statistik, termodynamik, mm. Men mest juridik.

 

Är det nån av mina gamla diskutanter som finns kvar här på forumet?

Länk till kommentar
Dela på andra webbplatser

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gäst
Svara i detta ämne...

×   Du har klistrat in innehåll med formatering.   Ta bort formatering

  Endast 75 max uttryckssymboler är tillåtna.

×   Din länk har automatiskt bäddats in.   Visa som länk istället

×   Ditt tidigare innehåll har återställts.   Rensa redigerare

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Skapa nytt...