Статистический анализ для 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;
}