0

Мне нужно сделать chiSquaredTest. Я использую библиотеку Apache Commons Math, но не знаю, что это за long[]? Ниже приведено описание способа:андроид java, что долго [] []?

public double chiSquareTest(long[][] counts) 
       throws NullArgumentException, 
         DimensionMismatchException, 
         NotPositiveException, 
         MaxCountExceededException 

Возвращает наблюдаемый уровень значимости, или р-значение, связанное с тестом хи-квадрат независимости на основе входных импульсов массива, рассматривается как двусторонний стол.

Строки 2-полосная таблице подсчета [0], ..., граф [count.length - 1]

Предпосылками:

  • Элемент списка Все счетчики должен быть ≥ 0.
  • Массив подсчета должен быть прямоугольным (т.е. все подмассивы count [i] должны иметь одинаковую длину).
  • Двухсторонняя таблица, представленная счетчиками, должна содержать не менее 2 столбцов и не менее 2 строк.
  • Если какое-либо из предварительных условий не выполняется, генерируется исключение IllegalArgumentException.

Параметры:

  • подсчитывает - представление массива 2-полосные таблицы

Возвращает:

  • p-value

ответ

0

long[] - это одномерный массив.

long[] array = new long[4]; 

/* result of that array 
{0, 0, 0, 0} 
*/ 

long[][] - это массив массивов/двухмерных массивов.

long[][] array2 = new long[4][]; 
array2[0] = new long[1]; 
array2[1] = new long[2]; 
array2[2] = new long[4]; 
array2[3] = new long[3]; 

/* result of that array 
{ 
    {0}, 
    {0, 0}, 
    {0, 0, 0, 0}, 
    {0, 0, 0}, 
} 
*/ 

или это может быть так:

long[][] array = new long[4][4]; 

/* result of that array 
{ 
    {0, 0, 0, 0}, 
    {0, 0, 0, 0}, 
    {0, 0, 0, 0}, 
    {0, 0, 0, 0}, 
} 
*/ 

Дополнительные примеры пойти this link.

+0

Здравствуйте! Ладно, я понял. поэтому, если я хочу добавить значение для первой строки, это будет – Alivajorg

+0

Здравствуйте! Ладно, я понял. поэтому, если я хочу добавить значения в первую строку, будет array2 [0] [0] = (long) 3.2; --- сначала, сначала array2 [1] [0] = 8; --- первый, второй – Alivajorg

0

Имейте в виду, что класс ChiSquareTest в Apache Commons Math предоставляет две различные меры:

  1. Проверка пригодности: используйте chiSquareTest(double[] expected, double[] observed) - тесты, если ваши наблюдаемые данные поступают из заявленного распределения.

  2. Проверка независимости: используйте chiSquareTest(double[][] counts) - проверяет, связаны ли две разные переменные друг с другом.

Эти два теста несколько отличаются, и результаты будут разными.

Edit: поскольку вопрос на самом деле связан с функцией chidst из Excel и как вычислить тот же результат в Java, решение с помощью Apache Commons Math3 будет выглядеть следующим образом:

ChiSquaredDistribution dist = new ChiSquaredDistribution(df); 
double chidst = 1 - dist.cumulativeProbability(chi); 
+0

Да! Мне нужен тест независимости, как правило, я делаю это в excel и whit chidst function Мне нужны два значения chidst (chi, df), по-прежнему не могу понять, как это сделать в java, используя библиотеки и двухмерный массив, которые у вас есть идея? – Alivajorg

+0

Функция chidst в excel вычисляет правостороннюю вероятность распределения ChiSquare. С commons-math вы можете получить то же самое: ChiSquaredDistribution dist = new ChiSquaredDistribution (df); double chidst = 1 - dist.cumulativeProbability (chi); –

+0

Предлагаю вам обновить свой вопрос, чтобы отразить то, что вы действительно ищете. –

0

Спасибо! да, я запутался. Я нашел этот пост Why does tail probability in apache math drop to zero after 1E-16? на самом деле лучше использовать regularizedGammaQ(); http://commons.apache.org/proper/commons-math/javadocs/api-3.6.1/index.html

+0

Ну, это касается только угловых шкафов, которые вы, вероятно, не встретите в любом случае. –