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

• April 1, 2005 - Added solution 1.
© 2004-18 robson | cc unless stated