Robson » Little Red Book » Statistics #2

Chapter 8 - Question 2

Given a file of data containing the heights and weights of a sample of students, analyse the data to find the mean, median and modal values.

Solution 1

<?
   // displaying heights and weights is nearly identical
   // so a function is used to avoid repeating code
   // * array is the list of values
   // * type is what the array is based on (like height)
   // * measurement is what to show after the values (like pounds)
   function ic_show_stats($array, $type, $measurement)
   {
       // display the type with the first letter capitalised
       echo ucfirst($type) . ':<br/>';
       
       // add up all the values in the array and divide by the number of values
       echo '- Mean: ' . round(array_sum($array) / count($array), 2) . ' ' . $measurement . ' <br/>';
       
       // sort the values into numerical order
       sort($array);
       // show the middle value        
       echo '- Median: ' . $array[count($array)/2] . ' ' . $measurement . ' <br/>';
       
       // get the frequency of all the values in the array
       $frequency = array_count_values($array);
       // sort into reverse numerical order while maintaining keys
       arsort($frequency);
       // get the keys
       $freq_keys = array_keys($frequency);
       // show the first key (the one with the highest frequency)
       echo '- Mode: ' . $freq_keys[0] . ' ' . $measurement . ' <br/>';
   }
 
   // the file containing all the data
   $height_weight_file = file('littleredbook/8-2-data.txt');
   // run through each line in the file
   foreach ($height_weight_file as $line)
   {
       // separate using the separator char
       $separate = explode(' ', $line);
       // add the values to the arrays
       $heights[] = $separate[0];
       $weights[] = $separate[1];
   }
   
   // display the stats about each set of values
   ic_show_stats($heights, 'heights', 'cm');
   echo '<br/>';
   ic_show_stats($weights, 'weights', 'pounds');    
?>

Which produces for this data file:

Heights:
- Mean: 149.04 cm
- Median: 148 cm
- Mode: 142 cm

Weights:
- Mean: 119.28 pounds
- Median: 130 pounds
- Mode: 138 pounds

Log

© 2004-17 robson | cc unless stated