Статистический анализ для PHP

Я пытаюсь написать систему отчетности для проекта, над которым я работаю, который анализирует данные до и после теста и делает некоторый анализ на нем. Я искал все возможное, но не могу найти PHP-класс/набор функций, которые, как представляется, делают необходимый анализ.

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

Я знаю, что есть этот класс в PHP: http://usphp.com/manual/en/ref.stats.php, однако ничто из этого, похоже, не документировано до такой степени, что я могу это понять.

Я не против писать сам анализ, но если он уже существует, я бы хотел избежать повторного создания колеса.

Спасибо за любую помощь!

Ответы

Ответ 1

Похоже, вы захотите использовать функцию stats_stat_paired_t. Я не уверен, что вы еще это пробовали, но вы можете выяснить, выполняет ли эта функция то, что вам нужно, глядя на исходный код. Посмотрите на страницу статистики .c, строка 3201.

Ответ 2

Пол, я сделал именно это для психологической системы тестирования (www.coolidgetests.com) и нашел, что это действительно было не так сложно сделать самостоятельно. Как и вы, я искал и искал доступное решение. Сначала было страшно признать поражение и начать писать код, но в конце концов я обнаружил, что это было не так уж плохо.

В моем случае пользователь берет тест, который генерирует результат (1-4). Все застряли в БД. Чтобы сделать отчет, я выбираю всю группу ответов для выбранного теста, разделяю их на ответы, которые были забиты обычным образом, и те, которые меняются в обратном порядке (1 = 4, 2 = 3 и т.д.), А затем изменяют их с помощью переключателя выражение. Эти два массива объединяются, затем выполняются функции вычисления, чтобы генерировать T, Z и другие соответствующие статистические оценки. Я выхожу из диаграмм очень просто через таблицу, которая затенена на основе рассчитанного процента.

UPDATE -

Здесь мои функции Z и T-Score:

function calculateZscore($scale, $median, $stdiv) {
        if ($stdiv != 0) {
            $zval = ($scale - $median) / $stdiv;
        }

        else $zval = 0;
        return $zval;
    }

    function calculateTscore($zval) {
        $tval = 50+ (10) * ($zval);
        return $tval;
    }