home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _16d50a157a0ef6fb1e84f9ed6b6101f1 < prev    next >
Text File  |  2000-03-23  |  5KB  |  141 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>C<Statistics::ChiSquare> - How random is your data?</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> C<Statistics::ChiSquare> - How random is your data?</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#examples">EXAMPLES</A></LI>
  26.     <LI><A HREF="#author">AUTHOR</A></LI>
  27. </UL>
  28. <!-- INDEX END -->
  29.  
  30. <HR>
  31. <P>
  32. <H1><A NAME="name">NAME</A></H1>
  33. <P><CODE>Statistics::ChiSquare</CODE> - How random is your data?</P>
  34. <P>
  35. <HR>
  36. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  37. <UL>
  38. <LI>Linux</LI>
  39. <LI>Solaris</LI>
  40. <LI>Windows</LI>
  41. </UL>
  42. <HR>
  43. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  44. <PRE>
  45.     use Statistics::Chisquare;</PRE>
  46. <PRE>
  47.     print chisquare(@array_of_numbers);</PRE>
  48. <P>Statistics::ChiSquare is available at a CPAN site near you.</P>
  49. <P>
  50. <HR>
  51. <H1><A NAME="description">DESCRIPTION</A></H1>
  52. <P>Suppose you flip a coin 100 times, and it turns up heads 70 times.
  53. <EM>Is the coin fair?</EM></P>
  54. <P>Suppose you roll a die 100 times, and it shows 30 sixes.  
  55. <EM>Is the die loaded?</EM></P>
  56. <P>In statistics, the <STRONG>chi-square</STRONG> test calculates ``how random'' a series
  57. of numbers is.  But it doesn't simply say ``yes'' or ``no''.  Instead, it
  58. gives you a <EM>confidence interval</EM>, which sets upper and lower bounds
  59. on the likelihood that the variation in your data is due to chance.
  60. See the examples below.</P>
  61. <P>If you've ever studied elementary genetics, you've probably heard
  62. about Georg Mendel.  He was a wacky Austrian botanist who discovered
  63. (in 1865) that traits could be inherited in a predictable fashion.  He
  64. did lots of experiments with cross breeding peas: green peas, yellow
  65. peas, smooth peas, wrinkled peas.  A veritable Brave New World of legumes.</P>
  66. <P>But Mendel faked his data.  A statistician by the name of R. A. Fisher used
  67. the chi-square test to prove it.</P>
  68. <P>There's just one function in this module: chisquare().  Instead of
  69. returning the bounds on the confidence interval in a tidy little
  70. two-element array, it returns an English string.  This was a deliberate
  71. design choice---many people misinterpret chi-square results, and the
  72. string helps clarify the meaning.</P>
  73. <P>The string returned by <CODE>chisquare()</CODE> will always match one of these patterns:</P>
  74. <PRE>
  75.   "There's a >\d+% chance, and a <\d+% chance, that this data is random."</PRE>
  76. <P>or</P>
  77. <PRE>
  78.   "There's a <\d+% chance that this data is random."</PRE>
  79. <P>or</P>
  80. <PRE>
  81.   "I can't handle \d+ choices without a better table."</PRE>
  82. <P>That last one deserves a bit more explanation.  The ``modern''
  83. chi-square test uses a table of values (based on Pearson's
  84. approximation) to avoid expensive calculations.  Thanks to the table,
  85. the <CODE>chisquare()</CODE> calculation is very fast, but there are some
  86. collections of data it can't handle, including any collection with more
  87. than 21 slots.  So you can't calculate the randomness of a 30-sided
  88. die.</P>
  89. <P>
  90. <HR>
  91. <H1><A NAME="examples">EXAMPLES</A></H1>
  92. <P>Imagine a coin flipped 1000 times.  The most likely outcome is 
  93. 500 heads and 500 tails:</P>
  94. <PRE>
  95.   @coin = (500, 500);
  96.   print chisquare(@coin);</PRE>
  97. <P>prints ``There's a >90% chance, and a <100% chance, that this data is random.</P>
  98. <P>Imagine a die rolled 60 times that shows sixes just a wee bit too often.</P>
  99. <PRE>
  100.   @die1  = (8, 7, 9, 8, 8, 20);
  101.   print chisquare(@die1);</PRE>
  102. <P>prints ``There's a >1% chance, and a <5% chance, that this data is random.</P>
  103. <P>Imagine a die rolled 600 times that shows sixes <STRONG>way</STRONG> too often.</P>
  104. <PRE>
  105.   @die2  = (80, 70, 90, 80, 80, 200);
  106.   print chisquare(@die2);</PRE>
  107. <P>prints ``There's a <1% chance that this data is random.''</P>
  108. <P>How random is rand()?</P>
  109. <PRE>
  110.   srand(time ^ $$);
  111.   @rands = ();
  112.   for ($i = 0; $i < 60000; $i++) {
  113.       $slot = int(rand(6));
  114.       $rands[$slot]++;
  115.   }
  116.   print "@rands\n";
  117.   print chisquare(@rands);</PRE>
  118. <P></P>
  119. <PRE>
  120.  
  121. prints (on my machine)</PRE>
  122. <PRE>
  123.   10156 10041 9991 9868 10034 9910
  124.   There's a >10% chance, and a <50% chance, that this data is random.</PRE>
  125. <P>So much for pseudorandom number generation.</P>
  126. <P>
  127. <HR>
  128. <H1><A NAME="author">AUTHOR</A></H1>
  129. <P>Jon Orwant</P>
  130. <P>MIT Media Laboratory</P>
  131. <P><A HREF="mailto:orwant@media.mit.edu">orwant@media.mit.edu</A></P>
  132. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  133. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  134. <STRONG><P CLASS=block> C<Statistics::ChiSquare> - How random is your data?</P></STRONG>
  135. </TD></TR>
  136. </TABLE>
  137.  
  138. </BODY>
  139.  
  140. </HTML>
  141.