List of usage examples for org.apache.commons.math3.stat.inference ChiSquareTest chiSquare
public double chiSquare(final long[][] counts) throws NullArgumentException, NotPositiveException, DimensionMismatchException
From source file:dp2.Avaliador.java
private static double chi_quad(int TP, int FP) { // S preciso isso para calcular via funo pronta! long[][] n = new long[2][2]; n[0][0] = TP;/*from ww w . ja va2 s. co m*/ n[1][0] = D.numeroExemplosPositivo - n[0][0]; n[0][1] = FP; n[1][1] = D.numeroExemplosNegativo - n[0][1]; ChiSquareTest chiTest = new ChiSquareTest(); double chi_quad = chiTest.chiSquare(n); // System.out.println("Chi_quad: " + chi + "/" + chi_quad); // System.out.println("chi_quad: " + chi_quad); return chi_quad; }
From source file:be.uclouvain.mlg.jForest.importance.external.permutation.ChisqOnTwoConfusionTables.java
@Override public double[] getImportances() { double[] res = new double[nfeat]; ChiSquareTest x = new ChiSquareTest(); for (int i = 0; i < nfeat; i++) { if (returnPval) { res[i] = x.chiSquareTest(sum[i]); } else {/*from w w w .ja va 2s .c o m*/ res[i] = x.chiSquare(sum[i]); } } return res; }
From source file:ChiSquareCalculator.java
ChiSquareCalculator() {
final JFrame jfrm = new JFrame("Chi Square Calculator");
jfrm.setSize(400, 550);// ww w . j a v a 2 s.co m
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jfrm.setResizable(false);
// panel 1
JPanel pn1 = new JPanel();
pn1.setOpaque(true);
pn1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "2 x 2"));
JLabel jlab1 = new JLabel("class 1");
JLabel jlab2 = new JLabel("class 2");
JLabel jlab3 = new JLabel("case");
JLabel jlab4 = new JLabel("control");
jtf1 = new JTextField();
jtf2 = new JTextField();
jtf3 = new JTextField();
jtf4 = new JTextField();
// pn1 layout all
GridBagLayout CalLayout1 = new GridBagLayout();
GridBagConstraints gbc1 = new GridBagConstraints();
pn1.setLayout(CalLayout1);
gbc1.weightx = 1.0; //default 0.0
gbc1.weighty = 1.0; //default 0.0
gbc1.insets = new Insets(4, 4, 4, 4); // Add some space
gbc1.fill = GridBagConstraints.BOTH;
gbc1.gridwidth = 1;
gbc1.gridx = 1;
gbc1.gridy = 0;
CalLayout1.setConstraints(jlab1, gbc1);
gbc1.gridx = 2;
gbc1.gridy = 0;
CalLayout1.setConstraints(jlab2, gbc1);
gbc1.gridx = 0;
gbc1.gridy = 1;
CalLayout1.setConstraints(jlab3, gbc1);
gbc1.gridx = 1;
gbc1.gridy = 1;
CalLayout1.setConstraints(jtf1, gbc1);
gbc1.gridx = 2;
gbc1.gridy = 1;
CalLayout1.setConstraints(jtf2, gbc1);
gbc1.gridx = 0;
gbc1.gridy = 2;
CalLayout1.setConstraints(jlab4, gbc1);
gbc1.gridx = 1;
gbc1.gridy = 2;
CalLayout1.setConstraints(jtf3, gbc1);
gbc1.gridx = 2;
gbc1.gridy = 2;
CalLayout1.setConstraints(jtf4, gbc1);
pn1.add(jlab1);
pn1.add(jlab2);
pn1.add(jlab3);
pn1.add(jlab4);
pn1.add(jtf1);
pn1.add(jtf2);
pn1.add(jtf3);
pn1.add(jtf4);
// panel 2
JPanel pn2 = new JPanel();
pn2.setOpaque(true);
pn2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "2 x 3"));
JLabel jlab5 = new JLabel("class 1");
JLabel jlab6 = new JLabel("class 2");
JLabel jlab7 = new JLabel("class 3");
JLabel jlab8 = new JLabel("case");
JLabel jlab9 = new JLabel("control");
jtf5 = new JTextField();
jtf6 = new JTextField();
jtf7 = new JTextField();
jtf8 = new JTextField();
jtf9 = new JTextField();
jtf10 = new JTextField();
// pn2 layout all
GridBagLayout CalLayout2 = new GridBagLayout();
GridBagConstraints gbc2 = new GridBagConstraints();
pn2.setLayout(CalLayout2);
gbc2.weightx = 1.0; //default 0.0
gbc2.weighty = 1.0; //default 0.0
gbc2.insets = new Insets(4, 4, 4, 4); // Add some space
gbc2.fill = GridBagConstraints.BOTH;
gbc2.gridwidth = 1;
gbc2.gridx = 1;
gbc2.gridy = 0;
CalLayout2.setConstraints(jlab5, gbc2);
gbc2.gridx = 2;
gbc2.gridy = 0;
CalLayout2.setConstraints(jlab6, gbc2);
gbc2.gridx = 3;
gbc2.gridy = 0;
CalLayout2.setConstraints(jlab7, gbc2);
gbc2.gridx = 0;
gbc2.gridy = 1;
CalLayout2.setConstraints(jlab8, gbc2);
gbc2.gridx = 1;
gbc2.gridy = 1;
CalLayout2.setConstraints(jtf5, gbc2);
gbc2.gridx = 2;
gbc2.gridy = 1;
CalLayout2.setConstraints(jtf6, gbc2);
gbc2.gridx = 3;
gbc2.gridy = 1;
CalLayout2.setConstraints(jtf7, gbc2);
gbc2.gridx = 0;
gbc2.gridy = 2;
CalLayout2.setConstraints(jlab9, gbc2);
gbc2.gridx = 1;
gbc2.gridy = 2;
CalLayout2.setConstraints(jtf8, gbc2);
gbc2.gridx = 2;
gbc2.gridy = 2;
CalLayout2.setConstraints(jtf9, gbc2);
gbc2.gridx = 3;
gbc2.gridy = 2;
CalLayout2.setConstraints(jtf10, gbc2);
pn2.add(jlab5);
pn2.add(jlab6);
pn2.add(jlab7);
pn2.add(jlab8);
pn2.add(jlab9);
pn2.add(jtf5);
pn2.add(jtf6);
pn2.add(jtf7);
pn2.add(jtf8);
pn2.add(jtf9);
pn2.add(jtf10);
// panel 3
JPanel pn3 = new JPanel();
pn3.setOpaque(true);
pn3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "statistic"));
JLabel jlab10 = new JLabel("chi-square");
JLabel jlab11 = new JLabel("degree of freedom");
jtf11 = new JTextField();
jtf12 = new JTextField();
GridBagLayout CalLayout3 = new GridBagLayout();
GridBagConstraints gbc3 = new GridBagConstraints();
pn3.setLayout(CalLayout3);
gbc3.weightx = 1.0; //default 0.0
gbc3.weighty = 1.0; //default 0.0
gbc3.insets = new Insets(4, 4, 4, 4); // Add some space
gbc3.fill = GridBagConstraints.BOTH;
gbc3.gridwidth = 1;
gbc3.gridx = 0;
gbc3.gridy = 0;
CalLayout3.setConstraints(jlab10, gbc3);
gbc3.gridwidth = 3;
gbc3.gridx = 1;
gbc3.gridy = 0;
CalLayout3.setConstraints(jtf11, gbc3);
gbc3.gridwidth = 2;
gbc3.gridx = 0;
gbc3.gridy = 1;
CalLayout3.setConstraints(jlab11, gbc3);
gbc3.gridx = 2;
gbc3.gridy = 1;
CalLayout3.setConstraints(jtf12, gbc3);
pn3.add(jlab10);
pn3.add(jlab11);
pn3.add(jtf11);
pn3.add(jtf12);
JPanel pn4 = new JPanel();
pn4.setOpaque(true);
pn4.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "result"));
JLabel jlab12 = new JLabel("p-value");
final JLabel jlab13 = new JLabel("odds ratio");
final JLabel jlab14 = new JLabel("standard error");
final JLabel jlab15 = new JLabel("confidence interval 95%");
jtf13 = new JTextField();
jtf14 = new JTextField();
jtf15 = new JTextField();
jtf16 = new JTextField();
jtf17 = new JTextField();
jlab13.setEnabled(false);
jlab14.setEnabled(false);
jlab15.setEnabled(false);
jtf14.setEnabled(false);
jtf15.setEnabled(false);
jtf16.setEnabled(false);
jtf17.setEnabled(false);
JButton jbtn1 = new JButton("Run 2x2");
jbtn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
long number1, number2, number3, number4;
try {
number1 = Long.parseLong(jtf1.getText());
number2 = Long.parseLong(jtf2.getText());
number3 = Long.parseLong(jtf3.getText());
number4 = Long.parseLong(jtf4.getText());
} catch (Exception ne) {
JOptionPane.showMessageDialog(jfrm, "Error: Bad input, only integer is acceptable!");
return;
}
long[][] obs = new long[2][2];
obs[0][0] = number1;
obs[0][1] = number2;
obs[1][0] = number3;
obs[1][1] = number4;
ChiSquareTest mychiSquare = new ChiSquareTest();
double stats = mychiSquare.chiSquare(obs);
jtf11.setText(String.valueOf(stats));
jtf12.setText(String.valueOf(1));
double pvalue = mychiSquare.chiSquareTest(obs);
jtf13.setText(String.valueOf(pvalue));
jtf5.setText("");
jtf6.setText("");
jtf7.setText("");
jtf8.setText("");
jtf9.setText("");
jtf10.setText("");
jlab13.setEnabled(true);
jlab14.setEnabled(true);
jlab15.setEnabled(true);
jtf14.setEnabled(true);
jtf15.setEnabled(true);
jtf16.setEnabled(true);
jtf17.setEnabled(true);
double or = (double) (number2 * number3) / (number1 * number4);
double se = Math.sqrt(
(double) 1 / number1 + (double) 1 / number2 + (double) 1 / number3 + (double) 1 / number4);
double logOR = Math.log(or);
double logU95 = logOR + 1.96 * se;
double logL95 = logOR - 1.96 * se;
double U95 = Math.exp(logU95);
double L95 = Math.exp(logL95);
final java.text.DecimalFormat mydf = new java.text.DecimalFormat("0.000000");
jtf14.setText(String.valueOf(or));
jtf15.setText(String.valueOf(se));
jtf16.setText(String.valueOf(mydf.format(L95)));
jtf17.setText(String.valueOf(mydf.format(U95)));
}
});
JButton jbtn2 = new JButton("Run 2x3");
jbtn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
long number1, number2, number3, number4, number5, number6;
try {
number1 = Long.parseLong(jtf5.getText());
number2 = Long.parseLong(jtf6.getText());
number3 = Long.parseLong(jtf7.getText());
number4 = Long.parseLong(jtf8.getText());
number5 = Long.parseLong(jtf9.getText());
number6 = Long.parseLong(jtf10.getText());
} catch (Exception ne) {
JOptionPane.showMessageDialog(jfrm, "Error: Bad input, only integer is acceptable!");
return;
}
long[][] obs = new long[2][3];
obs[0][0] = number1;
obs[0][1] = number2;
obs[0][2] = number3;
obs[1][0] = number4;
obs[1][1] = number5;
obs[1][2] = number6;
ChiSquareTest mychiSquare = new ChiSquareTest();
double stats = mychiSquare.chiSquare(obs);
jtf11.setText(String.valueOf(stats));
jtf12.setText(String.valueOf(2));
double pvalue = mychiSquare.chiSquareTest(obs);
jtf13.setText(String.valueOf(pvalue));
jtf1.setText("");
jtf2.setText("");
jtf3.setText("");
jtf4.setText("");
jtf14.setText("");
jtf15.setText("");
jtf16.setText("");
jtf17.setText("");
jlab13.setEnabled(false);
jlab14.setEnabled(false);
jlab15.setEnabled(false);
jtf14.setEnabled(false);
jtf15.setEnabled(false);
jtf16.setEnabled(false);
jtf17.setEnabled(false);
}
});
JButton jbtn3 = new JButton("Run Statistic");
jbtn3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double stat, df;
try {
stat = Double.parseDouble(jtf11.getText());
df = Double.parseDouble(jtf12.getText());
} catch (Exception ne) {
JOptionPane.showMessageDialog(jfrm, "Error: Bad input, only number is acceptable!");
return;
}
ChiSquaredDistribution distribution = new ChiSquaredDistribution(df);
double pvalue = 1 - distribution.cumulativeProbability(stat);
jtf13.setText(String.valueOf(pvalue));
jtf1.setText("");
jtf2.setText("");
jtf3.setText("");
jtf4.setText("");
jtf5.setText("");
jtf6.setText("");
jtf7.setText("");
jtf8.setText("");
jtf9.setText("");
jtf10.setText("");
jtf14.setText("");
jtf15.setText("");
jtf16.setText("");
jtf17.setText("");
jlab13.setEnabled(false);
jlab14.setEnabled(false);
jlab15.setEnabled(false);
jtf14.setEnabled(false);
jtf15.setEnabled(false);
jtf16.setEnabled(false);
jtf17.setEnabled(false);
}
});
JButton jbtn4 = new JButton("clear");
jbtn4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jtf1.setText("");
jtf2.setText("");
jtf3.setText("");
jtf4.setText("");
jtf5.setText("");
jtf6.setText("");
jtf7.setText("");
jtf8.setText("");
jtf9.setText("");
jtf10.setText("");
jtf11.setText("");
jtf12.setText("");
jtf13.setText("");
jtf14.setText("");
jtf15.setText("");
jtf16.setText("");
jtf17.setText("");
jlab13.setEnabled(false);
jlab14.setEnabled(false);
jlab15.setEnabled(false);
jtf14.setEnabled(false);
jtf15.setEnabled(false);
jtf16.setEnabled(false);
jtf17.setEnabled(false);
}
});
GridBagLayout CalLayout4 = new GridBagLayout();
GridBagConstraints gbc4 = new GridBagConstraints();
pn4.setLayout(CalLayout4);
gbc4.weightx = 1.0; //default 0.0
gbc4.weighty = 1.0; //default 0.0
gbc4.insets = new Insets(4, 4, 4, 4); // Add some space
gbc4.fill = GridBagConstraints.BOTH;
gbc4.gridwidth = 1;
gbc4.gridx = 0;
gbc4.gridy = 0;
CalLayout4.setConstraints(jbtn1, gbc4);
gbc4.gridx = 1;
gbc4.gridy = 0;
CalLayout4.setConstraints(jbtn2, gbc4);
gbc4.gridx = 2;
gbc4.gridy = 0;
CalLayout4.setConstraints(jbtn3, gbc4);
gbc4.gridx = 3;
gbc4.gridy = 0;
CalLayout4.setConstraints(jbtn4, gbc4);
gbc4.gridx = 0;
gbc4.gridy = 1;
CalLayout4.setConstraints(jlab12, gbc4);
gbc4.gridwidth = 3;
gbc4.gridx = 1;
gbc4.gridy = 1;
CalLayout4.setConstraints(jtf13, gbc4);
gbc4.gridwidth = 2;
gbc4.gridx = 0;
gbc4.gridy = 2;
CalLayout4.setConstraints(jlab13, gbc4);
gbc4.gridx = 2;
gbc4.gridy = 2;
CalLayout4.setConstraints(jtf14, gbc4);
gbc4.gridx = 0;
gbc4.gridy = 3;
CalLayout4.setConstraints(jlab14, gbc4);
gbc4.gridx = 2;
gbc4.gridy = 3;
CalLayout4.setConstraints(jtf15, gbc4);
gbc4.gridx = 0;
gbc4.gridy = 4;
CalLayout4.setConstraints(jlab15, gbc4);
gbc4.gridwidth = 1;
gbc4.gridx = 2;
gbc4.gridy = 4;
CalLayout4.setConstraints(jtf16, gbc4);
gbc4.gridx = 3;
gbc4.gridy = 4;
CalLayout4.setConstraints(jtf17, gbc4);
pn4.add(jlab12);
pn4.add(jlab13);
pn4.add(jlab14);
pn4.add(jlab15);
pn4.add(jtf13);
pn4.add(jtf14);
pn4.add(jtf15);
pn4.add(jtf16);
pn4.add(jtf17);
pn4.add(jbtn1);
pn4.add(jbtn2);
pn4.add(jbtn3);
pn4.add(jbtn4);
// jfrm layout all
GridBagLayout CalLayout = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
jfrm.setLayout(CalLayout);
gbc.weightx = 1.0; //default 0.0
gbc.weighty = 1.0; //default 0.0
gbc.insets = new Insets(4, 4, 4, 4); // Add some space
gbc.fill = GridBagConstraints.BOTH;
gbc.gridwidth = 4;
gbc.gridx = 0;
gbc.gridy = 0;
CalLayout.setConstraints(pn1, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
CalLayout.setConstraints(pn2, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
CalLayout.setConstraints(pn3, gbc);
gbc.gridx = 0;
gbc.gridy = 3;
CalLayout.setConstraints(pn4, gbc);
jfrm.add(pn1);
jfrm.add(pn2);
jfrm.add(pn3);
jfrm.add(pn4);
// Help Menu Bar
JMenuBar jmb = new JMenuBar();
JMenu jmh = new JMenu("Help");
JMenuItem jmiAbout = new JMenuItem("About");
jmiAbout.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(jfrm,
"Name: Chi Square Calculator\n" + "Version: 1.0\n"
+ "Author: Felix Yanhui Fan\n" + "EMail: nolanfyh@gmail.com\n"
+ "Website: http://felixfan.github.io/ChiSquareCalculator\n");
}
});
JMenuItem jmiLisence = new JMenuItem("Lisence");
jmiLisence.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(jfrm,
"This program is licensed under the terms of \n"
+ "the GNU General Public License version 3 \n" + "Available online under: \n"
+ "http://www.gnu.org/licenses/gpl-3.0.html\n");
}
});
jmh.add(jmiAbout);
jmh.add(jmiLisence);
jmb.add(Box.createHorizontalGlue()); // Aligning JMenu on the right corner of JMenuBar
jmb.add(jmh);
jfrm.setJMenuBar(jmb);
jfrm.setVisible(true);
}
From source file:chisquarecalculator.ChisqCal.java
public ChisqCal() { final JFrame jfrm = new JFrame("Chi Square Calculator"); jfrm.setSize(400, 550);/*from w ww. j a va 2 s .co m*/ jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jfrm.setResizable(false); // panel 1 JPanel pn1 = new JPanel(); pn1.setOpaque(true); pn1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "2 x 2")); JLabel jlab1 = new JLabel("class 1"); JLabel jlab2 = new JLabel("class 2"); JLabel jlab3 = new JLabel("case"); JLabel jlab4 = new JLabel("control"); jtf1 = new JTextField(); jtf2 = new JTextField(); jtf3 = new JTextField(); jtf4 = new JTextField(); // pn1 layout all GridBagLayout CalLayout1 = new GridBagLayout(); GridBagConstraints gbc1 = new GridBagConstraints(); pn1.setLayout(CalLayout1); gbc1.weightx = 1.0; //default 0.0 gbc1.weighty = 1.0; //default 0.0 gbc1.insets = new Insets(4, 4, 4, 4); // Add some space gbc1.fill = GridBagConstraints.BOTH; gbc1.gridwidth = 1; gbc1.gridx = 1; gbc1.gridy = 0; CalLayout1.setConstraints(jlab1, gbc1); gbc1.gridx = 2; gbc1.gridy = 0; CalLayout1.setConstraints(jlab2, gbc1); gbc1.gridx = 0; gbc1.gridy = 1; CalLayout1.setConstraints(jlab3, gbc1); gbc1.gridx = 1; gbc1.gridy = 1; CalLayout1.setConstraints(jtf1, gbc1); gbc1.gridx = 2; gbc1.gridy = 1; CalLayout1.setConstraints(jtf2, gbc1); gbc1.gridx = 0; gbc1.gridy = 2; CalLayout1.setConstraints(jlab4, gbc1); gbc1.gridx = 1; gbc1.gridy = 2; CalLayout1.setConstraints(jtf3, gbc1); gbc1.gridx = 2; gbc1.gridy = 2; CalLayout1.setConstraints(jtf4, gbc1); pn1.add(jlab1); pn1.add(jlab2); pn1.add(jlab3); pn1.add(jlab4); pn1.add(jtf1); pn1.add(jtf2); pn1.add(jtf3); pn1.add(jtf4); // panel 2 JPanel pn2 = new JPanel(); pn2.setOpaque(true); pn2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "2 x 3")); JLabel jlab5 = new JLabel("class 1"); JLabel jlab6 = new JLabel("class 2"); JLabel jlab7 = new JLabel("class 3"); JLabel jlab8 = new JLabel("case"); JLabel jlab9 = new JLabel("control"); jtf5 = new JTextField(); jtf6 = new JTextField(); jtf7 = new JTextField(); jtf8 = new JTextField(); jtf9 = new JTextField(); jtf10 = new JTextField(); // pn2 layout all GridBagLayout CalLayout2 = new GridBagLayout(); GridBagConstraints gbc2 = new GridBagConstraints(); pn2.setLayout(CalLayout2); gbc2.weightx = 1.0; //default 0.0 gbc2.weighty = 1.0; //default 0.0 gbc2.insets = new Insets(4, 4, 4, 4); // Add some space gbc2.fill = GridBagConstraints.BOTH; gbc2.gridwidth = 1; gbc2.gridx = 1; gbc2.gridy = 0; CalLayout2.setConstraints(jlab5, gbc2); gbc2.gridx = 2; gbc2.gridy = 0; CalLayout2.setConstraints(jlab6, gbc2); gbc2.gridx = 3; gbc2.gridy = 0; CalLayout2.setConstraints(jlab7, gbc2); gbc2.gridx = 0; gbc2.gridy = 1; CalLayout2.setConstraints(jlab8, gbc2); gbc2.gridx = 1; gbc2.gridy = 1; CalLayout2.setConstraints(jtf5, gbc2); gbc2.gridx = 2; gbc2.gridy = 1; CalLayout2.setConstraints(jtf6, gbc2); gbc2.gridx = 3; gbc2.gridy = 1; CalLayout2.setConstraints(jtf7, gbc2); gbc2.gridx = 0; gbc2.gridy = 2; CalLayout2.setConstraints(jlab9, gbc2); gbc2.gridx = 1; gbc2.gridy = 2; CalLayout2.setConstraints(jtf8, gbc2); gbc2.gridx = 2; gbc2.gridy = 2; CalLayout2.setConstraints(jtf9, gbc2); gbc2.gridx = 3; gbc2.gridy = 2; CalLayout2.setConstraints(jtf10, gbc2); pn2.add(jlab5); pn2.add(jlab6); pn2.add(jlab7); pn2.add(jlab8); pn2.add(jlab9); pn2.add(jtf5); pn2.add(jtf6); pn2.add(jtf7); pn2.add(jtf8); pn2.add(jtf9); pn2.add(jtf10); // panel 3 JPanel pn3 = new JPanel(); pn3.setOpaque(true); pn3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "statistic")); JLabel jlab10 = new JLabel("chi-square"); JLabel jlab11 = new JLabel("degree of freedom"); jtf11 = new JTextField(); jtf12 = new JTextField(); GridBagLayout CalLayout3 = new GridBagLayout(); GridBagConstraints gbc3 = new GridBagConstraints(); pn3.setLayout(CalLayout3); gbc3.weightx = 1.0; //default 0.0 gbc3.weighty = 1.0; //default 0.0 gbc3.insets = new Insets(4, 4, 4, 4); // Add some space gbc3.fill = GridBagConstraints.BOTH; gbc3.gridwidth = 1; gbc3.gridx = 0; gbc3.gridy = 0; CalLayout3.setConstraints(jlab10, gbc3); gbc3.gridwidth = 3; gbc3.gridx = 1; gbc3.gridy = 0; CalLayout3.setConstraints(jtf11, gbc3); gbc3.gridwidth = 2; gbc3.gridx = 0; gbc3.gridy = 1; CalLayout3.setConstraints(jlab11, gbc3); gbc3.gridx = 2; gbc3.gridy = 1; CalLayout3.setConstraints(jtf12, gbc3); pn3.add(jlab10); pn3.add(jlab11); pn3.add(jtf11); pn3.add(jtf12); JPanel pn4 = new JPanel(); pn4.setOpaque(true); pn4.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "result")); JLabel jlab12 = new JLabel("p-value"); final JLabel jlab13 = new JLabel("odds ratio"); final JLabel jlab14 = new JLabel("standard error"); final JLabel jlab15 = new JLabel("confidence interval 95%"); jtf13 = new JTextField(); jtf14 = new JTextField(); jtf15 = new JTextField(); jtf16 = new JTextField(); jtf17 = new JTextField(); jlab13.setEnabled(false); jlab14.setEnabled(false); jlab15.setEnabled(false); jtf14.setEnabled(false); jtf15.setEnabled(false); jtf16.setEnabled(false); jtf17.setEnabled(false); JButton jbtn1 = new JButton("Run 2x2"); jbtn1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { long number1, number2, number3, number4; try { number1 = Long.parseLong(jtf1.getText()); number2 = Long.parseLong(jtf2.getText()); number3 = Long.parseLong(jtf3.getText()); number4 = Long.parseLong(jtf4.getText()); } catch (Exception ne) { JOptionPane.showMessageDialog(jfrm, "Error: Bad input, only integer is acceptable!"); return; } long[][] obs = new long[2][2]; obs[0][0] = number1; obs[0][1] = number2; obs[1][0] = number3; obs[1][1] = number4; ChiSquareTest mychiSquare = new ChiSquareTest(); final java.text.DecimalFormat mydf = new java.text.DecimalFormat("0.0000"); double stats = mychiSquare.chiSquare(obs); jtf11.setText(String.valueOf(mydf.format(stats))); jtf12.setText(String.valueOf(1)); double pvalue = mychiSquare.chiSquareTest(obs); jtf13.setText(String.valueOf(pvalue)); jtf5.setText(""); jtf6.setText(""); jtf7.setText(""); jtf8.setText(""); jtf9.setText(""); jtf10.setText(""); jlab13.setEnabled(true); jlab14.setEnabled(true); jlab15.setEnabled(true); jtf14.setEnabled(true); jtf15.setEnabled(true); jtf16.setEnabled(true); jtf17.setEnabled(true); double or = (double) (number2 * number3) / (number1 * number4); double se = Math.sqrt( (double) 1 / number1 + (double) 1 / number2 + (double) 1 / number3 + (double) 1 / number4); double logOR = Math.log(or); double logU95 = logOR + 1.96 * se; double logL95 = logOR - 1.96 * se; double U95 = Math.exp(logU95); double L95 = Math.exp(logL95); jtf14.setText(String.valueOf(mydf.format(or))); jtf15.setText(String.valueOf(mydf.format(se))); jtf16.setText(String.valueOf(mydf.format(L95))); jtf17.setText(String.valueOf(mydf.format(U95))); } }); JButton jbtn2 = new JButton("Run 2x3"); jbtn2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { long number1, number2, number3, number4, number5, number6; try { number1 = Long.parseLong(jtf5.getText()); number2 = Long.parseLong(jtf6.getText()); number3 = Long.parseLong(jtf7.getText()); number4 = Long.parseLong(jtf8.getText()); number5 = Long.parseLong(jtf9.getText()); number6 = Long.parseLong(jtf10.getText()); } catch (Exception ne) { JOptionPane.showMessageDialog(jfrm, "Error: Bad input, only integer is acceptable!"); return; } long[][] obs = new long[2][3]; obs[0][0] = number1; obs[0][1] = number2; obs[0][2] = number3; obs[1][0] = number4; obs[1][1] = number5; obs[1][2] = number6; ChiSquareTest mychiSquare = new ChiSquareTest(); final java.text.DecimalFormat mydf = new java.text.DecimalFormat("0.0000"); double stats = mychiSquare.chiSquare(obs); jtf11.setText(String.valueOf(mydf.format(stats))); jtf12.setText(String.valueOf(2)); double pvalue = mychiSquare.chiSquareTest(obs); jtf13.setText(String.valueOf(pvalue)); jtf1.setText(""); jtf2.setText(""); jtf3.setText(""); jtf4.setText(""); jtf14.setText(""); jtf15.setText(""); jtf16.setText(""); jtf17.setText(""); jlab13.setEnabled(false); jlab14.setEnabled(false); jlab15.setEnabled(false); jtf14.setEnabled(false); jtf15.setEnabled(false); jtf16.setEnabled(false); jtf17.setEnabled(false); } }); JButton jbtn3 = new JButton("Run Statistic"); jbtn3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { double stat, df; try { stat = Double.parseDouble(jtf11.getText()); df = Double.parseDouble(jtf12.getText()); } catch (Exception ne) { JOptionPane.showMessageDialog(jfrm, "Error: Bad input, only number is acceptable!"); return; } ChiSquaredDistribution distribution = new ChiSquaredDistribution(df); double pvalue = 1 - distribution.cumulativeProbability(stat); jtf13.setText(String.valueOf(pvalue)); jtf1.setText(""); jtf2.setText(""); jtf3.setText(""); jtf4.setText(""); jtf5.setText(""); jtf6.setText(""); jtf7.setText(""); jtf8.setText(""); jtf9.setText(""); jtf10.setText(""); jtf14.setText(""); jtf15.setText(""); jtf16.setText(""); jtf17.setText(""); jlab13.setEnabled(false); jlab14.setEnabled(false); jlab15.setEnabled(false); jtf14.setEnabled(false); jtf15.setEnabled(false); jtf16.setEnabled(false); jtf17.setEnabled(false); } }); JButton jbtn4 = new JButton("clear"); jbtn4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtf1.setText(""); jtf2.setText(""); jtf3.setText(""); jtf4.setText(""); jtf5.setText(""); jtf6.setText(""); jtf7.setText(""); jtf8.setText(""); jtf9.setText(""); jtf10.setText(""); jtf11.setText(""); jtf12.setText(""); jtf13.setText(""); jtf14.setText(""); jtf15.setText(""); jtf16.setText(""); jtf17.setText(""); jlab13.setEnabled(false); jlab14.setEnabled(false); jlab15.setEnabled(false); jtf14.setEnabled(false); jtf15.setEnabled(false); jtf16.setEnabled(false); jtf17.setEnabled(false); } }); GridBagLayout CalLayout4 = new GridBagLayout(); GridBagConstraints gbc4 = new GridBagConstraints(); pn4.setLayout(CalLayout4); gbc4.weightx = 1.0; //default 0.0 gbc4.weighty = 1.0; //default 0.0 // gbc4.insets = new Insets(4, 4, 4, 4); // Add some space gbc4.insets = new Insets(1, 1, 1, 1); gbc4.fill = GridBagConstraints.BOTH; gbc4.gridwidth = 1; gbc4.gridx = 0; gbc4.gridy = 0; CalLayout4.setConstraints(jbtn1, gbc4); gbc4.gridx = 1; gbc4.gridy = 0; CalLayout4.setConstraints(jbtn2, gbc4); gbc4.gridx = 2; gbc4.gridy = 0; CalLayout4.setConstraints(jbtn3, gbc4); gbc4.gridx = 3; gbc4.gridy = 0; CalLayout4.setConstraints(jbtn4, gbc4); gbc4.gridx = 0; gbc4.gridy = 1; CalLayout4.setConstraints(jlab12, gbc4); gbc4.gridwidth = 3; gbc4.gridx = 1; gbc4.gridy = 1; CalLayout4.setConstraints(jtf13, gbc4); gbc4.gridwidth = 2; gbc4.gridx = 0; gbc4.gridy = 2; CalLayout4.setConstraints(jlab13, gbc4); gbc4.gridx = 2; gbc4.gridy = 2; CalLayout4.setConstraints(jtf14, gbc4); gbc4.gridx = 0; gbc4.gridy = 3; CalLayout4.setConstraints(jlab14, gbc4); gbc4.gridx = 2; gbc4.gridy = 3; CalLayout4.setConstraints(jtf15, gbc4); gbc4.gridx = 0; gbc4.gridy = 4; CalLayout4.setConstraints(jlab15, gbc4); gbc4.gridwidth = 1; gbc4.gridx = 2; gbc4.gridy = 4; CalLayout4.setConstraints(jtf16, gbc4); gbc4.gridx = 3; gbc4.gridy = 4; CalLayout4.setConstraints(jtf17, gbc4); pn4.add(jlab12); pn4.add(jlab13); pn4.add(jlab14); pn4.add(jlab15); pn4.add(jtf13); pn4.add(jtf14); pn4.add(jtf15); pn4.add(jtf16); pn4.add(jtf17); pn4.add(jbtn1); pn4.add(jbtn2); pn4.add(jbtn3); pn4.add(jbtn4); // jfrm layout all GridBagLayout CalLayout = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); jfrm.setLayout(CalLayout); gbc.weightx = 1.0; //default 0.0 gbc.weighty = 1.0; //default 0.0 gbc.insets = new Insets(4, 4, 4, 4); // Add some space gbc.fill = GridBagConstraints.BOTH; gbc.gridwidth = 4; gbc.gridx = 0; gbc.gridy = 0; CalLayout.setConstraints(pn1, gbc); gbc.gridx = 0; gbc.gridy = 1; CalLayout.setConstraints(pn2, gbc); gbc.gridx = 0; gbc.gridy = 2; CalLayout.setConstraints(pn3, gbc); gbc.gridx = 0; gbc.gridy = 3; CalLayout.setConstraints(pn4, gbc); jfrm.add(pn1); jfrm.add(pn2); jfrm.add(pn3); jfrm.add(pn4); // Help Menu Bar JMenuBar jmb = new JMenuBar(); JMenu jmh = new JMenu("Help"); JMenuItem jmiAbout = new JMenuItem("About"); jmiAbout.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { JOptionPane.showMessageDialog(jfrm, "Name: Chi Square Calculator\n" + "Version: 1.0\n" + "Author: Felix Yanhui Fan\n" + "EMail: felixfanyh@gmail.com\n" + "Website: http://felixfan.github.io/ChiSquareCalculator\n"); } }); JMenuItem jmiLisence = new JMenuItem("Lisence"); jmiLisence.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(jfrm, "This program is licensed under the terms of \n" + "the GNU General Public License version 3 \n" + "Available online under: \n" + "http://www.gnu.org/licenses/gpl-3.0.html\n"); } }); jmh.add(jmiAbout); jmh.add(jmiLisence); jmb.add(Box.createHorizontalGlue()); // Aligning JMenu on the right corner of JMenuBar jmb.add(jmh); jfrm.setJMenuBar(jmb); jfrm.setVisible(true); }
From source file:SupervisedMetablocking.AbstractSupervisedMetablocking.java
protected double getWeight(int entityId, int neighborId) { //for (int i = 0; i < entityIndex.getNoOfEntities(); i++) { //processEntity(entityId); // }/*from w ww . j a va 2s. c om*/ long[] vE = new long[2]; long[] v_E = new long[2]; //@fof long abE = (long) counters[neighborId]; long aE = entityIndex.getNoOfEntityBlocks(entityId, 0) - abE; long bE = entityIndex.getNoOfEntityBlocks(neighborId, 0) - abE; //@fon counter_tot++; // if (abE < 1) { // System.out.println("ab < 1"); // } // if (aE < 0) { // counter_a++; // } // if (bE < 0) { // counter_b++; // } vE[0] = (long) counters[neighborId]; vE[1] = entityIndex.getNoOfEntityBlocks(entityId, 0) - vE[0]; v_E[0] = entityIndex.getNoOfEntityBlocks(neighborId, 0) - vE[0]; v_E[1] = (int) (totalBlocks - (vE[0] + vE[1] + v_E[0])); if (vE[0] < 1) { vE[0] = 1; } if (v_E[0] < 1) { v_E[0] = 1; } if (vE[1] < 1) { vE[1] = 1; } if (v_E[1] < 1) { v_E[1] = 1; } long[][] cME = { vE, v_E }; //ChisqTest inferenceChiE = new ChisqTest(cME); ChiSquareTest chi_squared_test_E = new ChiSquareTest(); //GTest g_test = new GTest(); //chi_squared_test.chiSquareTest(cME); if (max_weight == 0.0d) { //System.out.println("max weight chi = 0"); //return (inferenceChiE.testStatistic * counters_entro[neighborId]); //double a1 = 2 * vE[0] + vE[1] + v_E[0]; double a2 = vE[0] + 2 * v_E[0] + v_E[1]; double a3 = vE[0] + vE[1] + v_E[0]; double a4 = vE[1] + v_E[0] + 2 * v_E[1]; //System.out.println("---" + counters_entro[neighborId]); Double x = counters_entro[neighborId]; // if(entityId==114 && neighborId==4592+entityIndex.getDatasetLimit()){ // System.out.println(" vE[0] " + vE[0] + " vE[1] " + vE[0] + " v_E[0] "+ v_E[0] + " v_E[1] "+ v_E[1]); // } return chi_squared_test_E.chiSquare(cME) * counters_entro[neighborId]; //return chi_squared_test_E.chiSquare(cME) * counters_entro[neighborId] * (a1 + a2 + a3 + a4); //double[] expected = new double[]{(double) vE[0], (double) vE[1]}; //return g_test.g(expected, v_E) * counters_entro[neighborId]; } else { //return (inferenceChiE.testStatistic * entityIndex.get_common_entropy(comparison, true)) / max_weight; System.out.println("Not implemented"); } // int id =((BilateralBlock) blocks.get(0)).getIndex1Entities(); return -1; }
From source file:ubic.gemma.core.analysis.preprocess.batcheffects.BatchConfound.java
private static Collection<BatchConfoundValueObject> factorBatchConfoundTest(ExpressionExperiment ee, Map<ExperimentalFactor, Map<Long, Double>> bioMaterialFactorMap) throws IllegalArgumentException { Map<Long, Long> batchMembership = new HashMap<>(); ExperimentalFactor batchFactor = null; Map<Long, Integer> batchIndexes = new HashMap<>(); for (ExperimentalFactor ef : bioMaterialFactorMap.keySet()) { if (ExperimentalDesignUtils.isBatch(ef)) { batchFactor = ef;// w ww. j a v a 2 s. c o m Map<Long, Double> bmToFv = bioMaterialFactorMap.get(batchFactor); if (bmToFv == null) { log.warn("No biomaterial --> factor value map for batch factor: " + batchFactor); continue; } int index = 0; for (FactorValue fv : batchFactor.getFactorValues()) { batchIndexes.put(fv.getId(), index++); } for (Long bmId : bmToFv.keySet()) { batchMembership.put(bmId, bmToFv.get(bmId).longValue()); } break; } } Set<BatchConfoundValueObject> result = new HashSet<>(); if (batchFactor == null) { return result; } /* * Compare other factors to batches to look for confounds. */ for (ExperimentalFactor ef : bioMaterialFactorMap.keySet()) { if (ef.equals(batchFactor)) continue; Map<Long, Double> bmToFv = bioMaterialFactorMap.get(ef); int numBioMaterials = bmToFv.keySet().size(); assert numBioMaterials > 0 : "No biomaterials for " + ef; double p = Double.NaN; double chiSquare; int df; int numBatches = batchFactor.getFactorValues().size(); if (ExperimentalDesignUtils.isContinuous(ef)) { DoubleArrayList factorValues = new DoubleArrayList(numBioMaterials); factorValues.setSize(numBioMaterials); IntArrayList batches = new IntArrayList(numBioMaterials); batches.setSize(numBioMaterials); int j = 0; for (Long bmId : bmToFv.keySet()) { assert factorValues.size() > 0 : "Biomaterial to factorValue is empty for " + ef; factorValues.set(j, bmToFv.get(bmId)); long batch = batchMembership.get(bmId); batches.set(j, batchIndexes.get(batch)); j++; } p = KruskalWallis.test(factorValues, batches); df = KruskalWallis.dof(factorValues, batches); chiSquare = KruskalWallis.kwStatistic(factorValues, batches); log.debug("KWallis\t" + ee.getId() + "\t" + ee.getShortName() + "\t" + ef.getId() + "\t" + ef.getName() + "\t" + String.format("%.2f", chiSquare) + "\t" + df + "\t" + String.format("%.2g", p) + "\t" + numBatches); } else { Map<Long, Integer> factorValueIndexes = new HashMap<>(); int index = 0; for (FactorValue fv : ef.getFactorValues()) { factorValueIndexes.put(fv.getId(), index++); } Map<Long, Long> factorValueMembership = new HashMap<>(); for (Long bmId : bmToFv.keySet()) { factorValueMembership.put(bmId, bmToFv.get(bmId).longValue()); } long[][] counts = new long[numBatches][ef.getFactorValues().size()]; for (int i = 0; i < batchIndexes.size(); i++) { for (int j = 0; j < factorValueIndexes.size(); j++) { counts[i][j] = 0; } } for (Long bm : bmToFv.keySet()) { long fv = factorValueMembership.get(bm); Long batch = batchMembership.get(bm); if (batch == null) { log.warn("No batch membership for : " + bm); continue; } int batchIndex = batchIndexes.get(batch); int factorIndex = factorValueIndexes.get(fv); counts[batchIndex][factorIndex]++; } ChiSquareTest cst = new ChiSquareTest(); try { chiSquare = cst.chiSquare(counts); } catch (IllegalArgumentException e) { log.warn("IllegalArgumentException exception computing ChiSq for : " + ef + "; Error was: " + e.getMessage()); chiSquare = Double.NaN; } df = (counts.length - 1) * (counts[0].length - 1); ChiSquaredDistribution distribution = new ChiSquaredDistribution(df); if (!Double.isNaN(chiSquare)) { p = 1.0 - distribution.cumulativeProbability(chiSquare); } log.debug("ChiSq\t" + ee.getId() + "\t" + ee.getShortName() + "\t" + ef.getId() + "\t" + ef.getName() + "\t" + String.format("%.2f", chiSquare) + "\t" + df + "\t" + String.format("%.2g", p) + "\t" + numBatches); } BatchConfoundValueObject summary = new BatchConfoundValueObject(ee, ef, chiSquare, df, p, numBatches); result.add(summary); } return result; }