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.3301
Link to Java source.