Subject: Pascal's Triangle (fwd) Date: Fri, 19 Jun 1998 051902 -0500 (CDT) From: "Roy L. Beavers" <rbeavers@llion.org> To: emfguru@hotmail.com -------------------------------------------------- Hi everybody: In his message below, Ed Maxey is still in pursuit of a better mathematical explanation for epidemiology studies which claim to explain the "real world." This is my last transmission for about one week... I am on my way to Minnesota.... Cheerio.... Roy Beavers (EMFguru) rbeavers@llion.org..............http://www.feb.se/EMF-L/EMF-L.html ................................It is better to light a single candle ... than to curse the darkness............................................... ---------- Forwarded message ---------- Date: Thu, 18 Jun 1998 21:26:57 -0500 From: Edward MaxeyTo: Christoph Reuss , "Roy L. Beavers" Subject: Pascal's Triangle Subject: Re: C++ "Linet" study probabilities...... Date: Sun, 14 Jun 1998 05:10:00 +0200 From: creuss@bluewin.ch (Christoph Reuss) To: "Roy L. Beavers" >>Edward Maxey wrote: > >Several months ago results from a BASIC study showing that the > >probability of 60 Hz EMFs being causal to childhood leukemia (the Linet > >study) was 200,000 to one. Recently questions have come up about the > i>ntegrity of the random number function in MICROSOFT's BASIC. > >Accordingly the program was written in C++ using the "rand" function. > >This function "uses a multiplicative congruential random number generator" > >with a period of 2^32. It is available on UNIX and is defined in ANSI C. >[snip] >> ***This run showed a 5,408 to one probability that EMFs are causal >> to childhood acute lymphoblastic leukemia.*** >Computation Theory tells us that no discrete algorithm run on a finite >state machine (without external true random sources) can provide _true_ >random numbers, but only pseudo-random numbers (whether in BASIC or in >C++). And even if the numbers produced by the BASIC or C++ 'random'- >generator were truly random, one instance (one 'run') of your program >would only provide one possible outcome of the random experiment, and to >calculate the true probability would require an infinite number of runs. >Thus, these programs can only provide approximations of the true probability. > >That's why we prefer theoretical calculation in simple statistical problems >such as your "heads and baskets" example: >The probability of 267 or less heads appearing after a basket of 624 coins >was overturned is: > > P [H<=267] = 1/2^624 * SUM(k=0..267) ( 624! / (624-k)! / k! ) > = 0.0001795451715 > = 1 / 5569.629033 > >Thus, the actual odds are 5,570 to one. Your C++ program came pretty close >with 5,408. :-) > >But the problem with epidemiological studies like the Linet study is not >to calculate probabilities according to known simple statistical models, but >to find those complex statistical models that 'model' (fit) the even more >complex reality best. (And to model this reality ***correctly***, not >misleadingly like the Linet study did !!). In other words, the problem >is not to find the correct mapping "model-->result" (that's easy), but >to find the correct mapping "reality-->model". No BASIC and no C++ program >can do this for us either... Hello Chris & Roy, John Clark, now retired, taught computers for many years. He wrote the following program to solve the above equation. It is written in PASCAL. Some of your followers and all computer buffs will find it interesting. Warm regards, Ed - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {Program to solve P [H<=267] = 1/2^624 * SUM(K=0..267) (624! / (624-k)! / k! ) by John Clark @ NORTHWEST ARKANSAS PC USER GROUP www.pcgroup.nwark.com or jclark@comp.uark.com } {$E+,N+} PROGRAM PTRINGLE; USES CRT; VAR I,J:INTEGER; NUMS : ARRAY [0..624] OF EXTENDED; QUOT, RECIP, SUM,DENOMINATOR : EXTENDED; BEGIN {main} CLRSCR; {Initialize variables} SUM := 0.0; DENOMINATOR := 1.0; FOR I := 0 TO 624 DO NUMS[I] := 1.0; {Build Pascal's triangle} FOR J:= 1 TO 623 DO BEGIN FOR I:= J DOWNTO 1 DO NUMS[I] := NUMS[I-1]+NUMS[I] END; {Get the SUM} FOR I := 0 TO 267 DO SUM := SUM + NUMS[I]; {Get the DEMONINATOR} FOR I := 1 TO 624 DO DENOMINATOR := DENOMINATOR * 2.0; QUOT := SUM/DENOMINATOR; RECIP := DENOMINATOR/SUM; WRITELN ('NUMERATOR ', SUM :12:8); WRITELN ('DENOMINATOR ', DENOMINATOR :12:8); WRITELN ('QUOTIENT ', QUOT :12:8); WRITELN ('RECRIPROCAL ', RECIP :12:8); END. . Archive provided courtesy of WaveGuide, http://www.wave-guide.org Reprinted with permission of Roy Beavers, http://www.feb.se/EMF-L/EMF-L.html