двухсторонний тест Уэлча на Java - PullRequest
1 голос
/ 06 ноября 2019

Я должен сам выполнить тест Уэлча. Для проверки своего кода я взял образцы из Википедии, а также сравнил пользовательские примеры с двумя различными онлайн-калькуляторами:

Проблема в том, что мой код выводит правильное значение p либо для выборок из Википедии, либо для калькуляторов. Ошибка должна быть фактором 2 в строке, отмеченной (!):

DescriptiveStatistics statsX = new DescriptiveStatistics(x);
DescriptiveStatistics statsY = new DescriptiveStatistics(y);
double meanX = statsX.getMean();
double meanY = statsY.getMean();
double sdX = statsX.getStandardDeviation();
double sdY = statsY.getStandardDeviation();

int nX = x.length;
int nY = y.length;
double t = (meanX - meanY) / (Math.sqrt(sdX * sdX / nX + sdY * sdY / nY));
double df = Math.pow(sdX * sdX / nX + sdY * sdY / nY, 2) / (Math.pow(sdX, 4) / (nX * nX * (nX - 1)) + Math.pow(sdY, 4) / (nY * nY * (nY - 1)));

TDistribution tDistribution = new TDistribution(df);
double tProbability = tDistribution.cumulativeProbability(-t);
double twoSidedP = 2 * (1 - tProbability);  //(!)
boolean hypothesisNotRejected = twoSidedP > significanceLevel;

С фактором 2 я получаю правильные результаты из Википедии для p (t верно для всех трех). Но калькуляторы, а также мое собственное понимание говорят мне, что тест уже двусторонний при использовании кумулятивной вероятности.

Примечание: DescriptiveStatistics, а также TDistribution взяты из API Apache Maths https://commons.apache.org/proper/commons-math/javadocs/api-3.6/overview-summary.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...