Staahla Postad 21 Maj , 2011 Rapport Postad 21 Maj , 2011 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. Citera
Klyka Postad 21 Maj , 2011 Författare Rapport Postad 21 Maj , 2011 Ty, hade helt glömt av standard normal distribution. Det borde ju fixa biffen. Smakligt kaffe, my good sir! Citera
Klyka Postad 21 Maj , 2011 Författare Rapport Postad 21 Maj , 2011 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. Citera
DocLame Postad 21 Maj , 2011 Rapport Postad 21 Maj , 2011 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? . Citera
Klyka Postad 21 Maj , 2011 Författare Rapport Postad 21 Maj , 2011 Doclame, hinner inte kolla närmare precis nu, men det där ser mycket lovande ut. Tack ska du ha! Citera
Klyka Postad 23 Maj , 2011 Författare Rapport Postad 23 Maj , 2011 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 Citera
Klyka Postad 23 Maj , 2011 Författare Rapport Postad 23 Maj , 2011 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. Citera
DocLame Postad 23 Maj , 2011 Rapport Postad 23 Maj , 2011 Fast det var ju lite kul att BruceZ gjorde exakt samma tankevurpa som jag genom att glömma covariansen i sin första post. Citera
Klyka Postad 23 Maj , 2011 Författare Rapport Postad 23 Maj , 2011 Japps, tycker alls inte att du ska skämmas. =) Citera
Klyka Postad 27 Maj , 2011 Författare Rapport Postad 27 Maj , 2011 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/ Citera
Klyka Postad 27 Februari , 2013 Författare Rapport Postad 27 Februari , 2013 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? Citera
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.