Re: Re: can Mathematica be useful for this?
- To: mathgroup at smc.vnet.net
- Subject: [mg56537] Re: [mg56505] Re: [mg56457] can Mathematica be useful for this?
- From: DrBob <drbob at bigfoot.com>
- Date: Thu, 28 Apr 2005 02:40:37 -0400 (EDT)
- References: <200504260533.BAA14385@smc.vnet.net> <200504270154.VAA01802@smc.vnet.net>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
Rules can do a bit more of the work: initialize[p_] := ( Clear@p; p[True] = 1; p[False] = 0; p[Or[A_, B_]] := p[A] + p[B] - p[LogicalExpand[And[A, B]]]; p[Not[A_]] := 1 - p[A]; p[HoldPattern[And[X__]]] /; Not[OrderedQ[{X}]] := p[And @@ (Sort[{X}])]; p[f_ && g_ && Not[s_]] /; FreeQ[{f, g}, _Not | s] := p[f && g] - p[f && g && s]) initialize@p p[S]=1/3;p[F]=26/100;p[G]=2/10;p[F&&S]=15/100;p[F&&G]=5/100; p[G&&S]=1/10;p[F&&G&&S]=2/100; p[S || F || G] 77/150 p[! (F || S || G)] 73/150 p /@ {F || G || S, F && S && !G, F && !S && G, !F && S && G, F && G && S} % . {1, -1, -1, -1, -1} {77/150, 13/100, 3/100, 2/25, 1/50} 19/75 Bobby On Tue, 26 Apr 2005 21:54:02 -0400 (EDT), Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > > On 26 Apr 2005, at 14:33, pedrito6 at softhome.net wrote: > >> Hi there! >> >> I need to check the answer of many probability problems. >> Most of them are quite simple but calculating them by hand is tedious. >> >> They are like this: >> "It's necessary to choose a person for a mission overseas. If you >> choose >> him randomly the probability that he speaks a foreign languague is: >> S=Spanish; F=French; G=German >> P(S)=0.33; P(F)=0,26; P(G)=0.2; >> P(S and F)=0.15; P(F and G)=0.05; P(S and G)=0.1 >> P(S and F and G)=0.02 >> >> -What is the probability that he just speaks one foreign language? >> -What is the probability that he doesn't speak any?" >> >> Could be Mathematica useful for solving this kind of problems? >> >> Thanks for your help! > > > It can certainly be useful, e.g. in the sense that it will do your > arithmetic for you. You can also automate some computations but how > effective this will be will depend on how much prior programming you do > and on the type of problem. Here is a very simple example of what might > be done. > We implement a simple probability measure p. We use the logical > functions Or and And for the Union and Intersection of events. Our > probability function p satisfies the following rules: > > p[True] = 1; p[False] = 0; > > p[Or[A_,B_]]:=p[A]+p[B]-p[LogicalExpand[And[A,B]]]; > > > p[Not[A_]]:=1-p[A]; > > > p[HoldPattern[And[X__]]]/;Not[OrderedQ[{X}]]:=p[And@@(Sort[{X}])] > > We also use the data which you provided, where I rationalised the > probabilities to make Mathematica use exact arithmetic. > > p[S] = 1/3; p[F] = 26/100; p[G] = 2/10; p[F && S] = 15/100; p[F && G] = > 5/100; > p[G && S] = 1/10; p[F && G && S] = 2/100; > > > Now some probabilities can be computed automatically. The event that > the chosen person speaks at least one language is Or[S,F,G] and this is > > > p[S || F || G] > > 77/150 > > This means that we know the answer to the second question; the > probability that he speaks no foreign languages is: > > p[ !(F || S || G)] > > > 73/150 > > The first question is slightly more difficult. The probability that a > person speaks at least one language is the disjoint union of the events > that he speaks exactly one language, exactly two languages and exactly > three languages. We are given the probability that he speaks exactly > three p[F && G && S]. Let's first compute the probability that he > speaks exactly two. This event is the disjoint union of three events F > && S && !G , F && G && !S and G && S && !F. We know that the even > F && S is the disjoint union of F && S && G and F && S && !G , etc. So > using the equalities: > F && S == (F && G && S) || (F && S && !G)], F && G == (F && G && S) || > (F && G && !S) and G && S = (G && S && F) || (G &&S && !F) we get > > > Simplify[Simplify[p[F && S] == > p[(F && G && S) || (F && S && !G)]]] > > > 100*p[F && S && !G] == 13 > > > Simplify[p[F && G] == p[(F && G && S) || (F && G && !S)]] > > > 100*p[F && G && !S] == 3 > > > Simplify[p[G && S] == p[(G && S && F) || (G && S && !F)]] > > > 25*p[G && S && !F] == 2 > > So the probability that he speaks exactly one language is: > > 77/150 - 2/100 - 13/100 - 3/100 - 2/25 > > 19/75 > > One could try to automate these computations further, possibly by > introducing conditional probability p[A,B] and maybe using backtracking > but this is too complicated and time consuming to consider here. > > > > > > Andrzej Kozlowski > Chiba, Japan > http://www.akikoz.net/andrzej/index.html > http://www.mimuw.edu.pl/~akoz/ > > > > -- DrBob at bigfoot.com
- References:
- can Mathematica be useful for this?
- From: pedrito6@softhome.net
- Re: can Mathematica be useful for this?
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
- can Mathematica be useful for this?