The following example, which illustrates the use of Kappa and McNemar tests, uses the same distance vision data as in Example 1.
import java.text.*; import com.imsl.stat.*; import com.imsl.math.*; public class ContingencyTableEx2 { public static void main(String args[]) { double[][] table = { {821.0, 112.0, 85.0, 35.0}, {116.0, 494.0, 145.0, 27.0}, {72.0, 151.0, 583.0, 87.0}, {43.0, 34.0, 106.0, 331.0} }; String[] rlabels = {"Gamma", "Tau B", "Tau C", "D-Row", "D-Column", "Correlation", "Spearman", "GK tau rows", "GK tau cols.", "U - sym.", "U - rows", "U - cols.", "Lambda-sym.", "Lambda-row", "Lambda-col.", "l-star-rows", "l-star-col.", "Lin. trend", "Kruskal row", "Kruskal col.", "Kappa", "McNemar", "McNemar df=1"}; ContingencyTable ct = new ContingencyTable(table); NumberFormat nf = NumberFormat.getInstance(); nf.setMinimumFractionDigits(4); System.out.println("Pearson chi-squared statistic = " + nf.format(ct.getChiSquared())); System.out.println("p-value for Pearson chi-squared = " + nf.format(ct.getP())); System.out.println("degrees of freedom = " + ct.getDegreesOfFreedom()); System.out.println("G-squared statistic = " + nf.format(ct.getGSquared())); System.out.println("p-value for G-squared = " + nf.format(ct.getGSquaredP())); System.out.println("degrees of freedom = " + ct.getDegreesOfFreedom()); nf.setMaximumFractionDigits(2); nf.setMinimumFractionDigits(2); PrintMatrix pm = new PrintMatrix("\n* * * Table Values * * *"); PrintMatrixFormat pmf = new PrintMatrixFormat(); pmf.setNumberFormat(nf); pm.print(pmf, table); pm.setTitle("* * * Expected Values * * *"); pm.print(pmf, ct.getExpectedValues()); nf.setMinimumFractionDigits(4); pmf.setNumberFormat(nf); pm.setTitle("* * * Contributions to Chi-squared* * *"); pm.print(pmf, ct.getContributions()); nf.setMinimumFractionDigits(4); System.out.println("* * * Chi-square Statistics * * *"); System.out.println("Exact mean = " + nf.format(ct.getExactMean())); System.out.println("Exact standard deviation = " + nf.format(ct.getExactStdev())); System.out.println("Phi = " + nf.format(ct.getPhi())); System.out.println("P = " + nf.format(ct.getContingencyCoef())); System.out.println("Cramer's V = " + nf.format(ct.getCramersV())); System.out.println("\n stat. std. err. " + "std. err.(Ho) t-value(Ho) p-value"); double[][] stat = ct.getStatistics(); for (int i = 0; i < stat.length; i++) { StringBuffer sb = new StringBuffer(rlabels[i]); int len = sb.length(); for(int j = 0; j < (13-len); j++) sb.append(' '); sb.append(nf.format(stat[i][0])); len = sb.length(); for(int j = 0; j < (24-len); j++) sb.append(' '); sb.append(nf.format(stat[i][1])); len = sb.length(); for(int j = 0; j < (36-len); j++) sb.append(' '); sb.append(nf.format(stat[i][2])); len = sb.length(); for(int j = 0; j < (50-len); j++) sb.append(' '); sb.append(nf.format(stat[i][3])); len = sb.length(); for(int j = 0; j < (63-len); j++) sb.append(' '); sb.append(nf.format(stat[i][4])); System.out.println(sb.toString()); } } }
Pearson chi-squared statistic = 3,304.3684 p-value for Pearson chi-squared = 0.0000 degrees of freedom = 9 G-squared statistic = 2,781.0190 p-value for G-squared = 0.0000 degrees of freedom = 9 * * * Table Values * * * 0 1 2 3 0 821.00 112.00 85.00 35.00 1 116.00 494.00 145.00 27.00 2 72.00 151.00 583.00 87.00 3 43.00 34.00 106.00 331.00 * * * Expected Values * * * 0 1 2 3 4 0 341.69 256.92 298.49 155.90 1,053.00 1 253.75 190.80 221.67 115.78 782.00 2 289.77 217.88 253.14 132.21 893.00 3 166.79 125.41 145.70 76.10 514.00 4 1,052.00 791.00 919.00 480.00 3,242.00 * * * Contributions to Chi-squared* * * 0 1 2 3 4 0 672.3626 81.7416 152.6959 93.7612 1,000.5613 1 74.7802 481.8351 26.5189 68.0768 651.2109 2 163.6605 20.5287 429.8489 15.4625 629.5006 3 91.8743 66.6263 10.8183 853.7768 1,023.0957 4 1,002.6776 650.7317 619.8819 1,031.0772 3,304.3684 * * * Chi-square Statistics * * * Exact mean = 9.0028 Exact standard deviation = 4.2402 Phi = 1.0096 P = 0.7105 Cramer's V = 0.5829 stat. std. err. std. err.(Ho) t-value(Ho) p-value Gamma 0.7757 0.0123 0.0149 52.1897 0.0000 Tau B 0.6429 0.0122 0.0123 52.1897 0.0000 Tau C 0.6293 0.0121 ? 52.1897 0.0000 D-Row 0.6418 0.0122 0.0123 52.1897 0.0000 D-Column 0.6439 0.0122 0.0123 52.1897 0.0000 Correlation 0.6926 0.0128 0.0172 40.2669 0.0000 Spearman 0.6939 0.0127 0.0127 54.6614 0.0000 GK tau rows 0.3420 0.0123 ? ? ? GK tau cols. 0.3430 0.0122 ? ? ? U - sym. 0.3171 0.0110 ? ? ? U - rows 0.3178 0.0110 ? ? ? U - cols. 0.3164 0.0110 ? ? ? Lambda-sym. 0.5373 0.0124 ? ? ? Lambda-row 0.5374 0.0126 ? ? ? Lambda-col. 0.5372 0.0126 ? ? ? l-star-rows 0.5506 0.0136 ? ? ? l-star-col. 0.5636 0.0127 ? ? ? Lin. trend ? ? ? ? ? Kruskal row 1,561.4859 3.0000 ? ? 0.0000 Kruskal col. 1,563.0303 3.0000 ? ? 0.0000 Kappa 0.5744 0.0111 0.0106 54.3583 0.0000 McNemar 4.7625 6.0000 ? ? 0.5746 McNemar df=1 0.9487 1.0000 ? 0.3459 0.3301Link to Java source.