/**
*
* @描述: 卡方检验/拟合优度 <br />
* @方法名: ChiSquare <br />
* @param values <br />
* @return <br />
* @返回类型 double (1、随机出现的结果;2、不是随机出现的结果) 参考表B5 <br />
* @创建人 micheal <br />
* @创建时间 2019年1月7日下午3:51:57 <br />
* @修改人 micheal <br />
* @修改时间 2019年1月7日下午3:51:57 <br />
* @修改备注 <br />
* @since <br />
* @throws
*/
public static double ChiSquare(double...values) {
int n = values.length;
double[] O = new double[n];
double[] E = new double[n];
double[] D = new double[n];
double[] OESQ = new double[n];
double[] OESQE = new double[n];
double oSum = 0;
double OESQESum = 0;
for (int i = 0; i < n; i++) {
O[i] = values[i];
oSum = oSum + values[i];
}
for (int i = 0; i < n; i++) {
E[i] = oSum / n;
D[i] = O[i] - (oSum / n);
OESQ[i] = Math.pow((O[i] - (oSum / n)), 2);
OESQE[i] = Math.pow((O[i] - (oSum / n)), 2) / (oSum / n);
OESQESum = OESQESum + Math.pow((O[i] - (oSum / n)), 2) / (oSum / n);
}
return OESQESum;
}
测试代码,打印结果:20.6
log.info("计算[卡方]:" + ChiSquare(23,17,50));