| /* ----------------------------------------------------------------------------- |
| * Test ANOVA. |
| * |
| * Example taken from: |
| * http://www.itl.nist.gov/div898/handbook/prc/section4/prc433.htm |
| * -------------------------------------------------------------------------- */ |
| |
| CREATE TABLE nist_anova_test ( |
| id SERIAL, |
| resistance FLOAT8[] |
| ); |
| |
| COPY nist_anova_test(resistance) FROM stdin; |
| {6.9,8.3,8.0} |
| {5.4,6.8,10.5} |
| {5.8,7.8,8.1} |
| {4.6,9.2,6.9} |
| {4.0,6.5,9.3} |
| \. |
| |
| CREATE TABLE one_way_anova_nist AS |
| SELECT (one_way_anova(level, value)).* FROM ( |
| SELECT level, resistance[level] AS value |
| FROM |
| nist_anova_test, ( |
| SELECT * FROM generate_series(1,3) level |
| ) q |
| ) q; |
| |
| SELECT * FROM one_way_anova_nist; |
| SELECT assert( |
| relative_error(statistic, 9.59) < 0.001 AND |
| relative_error(sum_squares_between, 27.897) < 0.001 AND |
| relative_error(sum_squares_within, 17.452) < 0.001 AND |
| df_between = 2 AND |
| df_within = 12 AND |
| relative_error(mean_squares_between, 13.949) < 0.001 AND |
| relative_error(mean_squares_within, 1.454) < 0.001, |
| 'One-way ANOVA: Wrong results' |
| ) FROM one_way_anova_nist; |