The Innokodakademija Medical Industries are developing a new drug, the Innokodakademijain™, which will (hopefully) increase the programming skills of patients. Various tests are carried out on different programmers: for a week some are given the Innokodakademijain™, while others are supplied simple generic Tutorial powder. After a week, the number of programmers able to solve ten exercises of an average level in half an hour and the number of those that instead take two hours is recorded for both control groups.
You are asked to establish if Innokodakademijain™ has a statistical influence over performances with a Chi-Squared Test.
Look at the table below:
| Treatment | 2 Hours | ½ Hour |
|---|---|---|
| Innokodakademijain | 207 | 282 |
| Tutorial | 231 | 242 |
The first thing to do is to calculate the total population of programmers involved in the test, so you have to sum all the four cells' values. Then you must calculate the totals of the rows: the Innokodakademijain™ total treatments and the Tutorial total treatments. Calculate the totals also for the columns: normal programmers that spent 2 hours solving the exercises and improved programmers that spent just 1/2 hour. The new table now is:
| Treatment | 2 Hours | ½ Hour | Row Tot |
|---|---|---|---|
| Innokodakademijain | 207 | 282 | 489 |
| Tutorial | 231 | 242 | 473 |
| Col Tot | 438 | 524 | 962 |
The value in the lower-right corner is the overall total. Each cell now has to be transformed into the corresponding expected result: multiply the row total for the column total (crossing them), and divide the result by the overall total. The table now is:
| Treatment | 2 Hours | ½ Hour | Row Tot |
|---|---|---|---|
| Innokodakademijain | (489 * 438) / 962 | (489 * 524) / 962 | 489 |
| Tutorial | (473 * 438) / 962 | (473 * 524) / 962 | 473 |
| Col Tot | 438 | 524 | 962 |
Now for each cell you have to subtract the obtained expected value from the original cell value, square the result, and divide it by the expected value: The table now is:
| Treatment | 2 Hours | ½ Hour | |---|---|---|---| | Innokodakademijain | (207 - 222.64)² / 222.64 | (282 - 266.36)² / 266.36 | Tutorial | (231 - 215.36)² / 215.36 | (242 - 257.64)² / 257.64
Finally, you can sum all cell values and get the Chi-Squared value (χ²) rounded to the nearest tenth:
χ² = 1.099 + 0.918 + 1.136 + 0.949 = 4.1
To establish if the effect of Innokodakademijain is statistically significant, you must confront the Chi-Squared value with two different alpha values (or levels of confidence): alpha1 and alpha5.
If the Chi-Squared value is greater than 6.635 (alpha1), than there is the 1% of possibilities that the Innokodakademijain™ effect is a false positive, but the 99% of possibilities that it actually works; if it is lower than alpha1 but greater than 3.841 (alpha5), then the possibilities of an effective improvement are equals to the 95% (with the 5% of false positives possibilities). If the Chi-Squared value is lower than alpha5 than the effect of Innokodakademijain™ is not statistically relevant for the programming performances.
For the example table above, the Chi-Squared value is lower than alpha1 and greater than alpha5, so we can assert that: improvements in programmers treated with Innokodakademijain™ are caused by 95% by the drug effectiveness.
Given an object data being the table containing the results to analyze ("E" is the Innokodakademijain's row, "T" is the Tutorial's row, with the two columns being the "2 hours passed" and "1/2 hour passed" registered cases, as in the tables above) implement a function that returns an array containing two elements:
"Innokodakademijain effectiveness = 99%" if the Chi-Squared value is greater than alpha1."Built-in effectiveness = 95%" if the Chi-Squared value is lower than alpha1 and greater than alpha5."Innokodakademijain is ininfluent" if the Chi-Squared value is lower than alpha5.chiSquaredTest({"E": [207, 282], "T": [231, 242]}) ➞ [4.1, "Built-in effectiveness = 95%"]
chiSquaredTest({"E": [100, 50], "T": [100, 20]}) ➞ [9.6, "Innokodakademijain effectiveness = 99%"]
chiSquaredTest({"E": [90, 50], "T": [80, 40]}) ➞ [0.2, "Innokodakademijain is ininfluent"]