tags:

views:

129

answers:

2

I am trying to write a reporting system for a project I'm working on that analyzes people's pre and post test scores and does some analysis on it. I have searched to the best of my ability, but cannot find a PHP Class / set of functions that seems to do the analysis I need.

Currently, I am dumping the dataset to a CSV, and one of my co-workers is running it through SPSS to perform a paired-samples t-test (that's the analysis I need run, as we need the p-value).

I know that there is this class in PHP: http://usphp.com/manual/en/ref.stats.php, however, none of that seems to be documented to the point that I can understand it.

I don't mind having to write the analysis myself, but if it already exists, I would like to avoid re-inventing the wheel.

Thanks for any help!

+1  A: 

It sounds like you're going to want to use the stats_stat_paired_t function. I'm not sure if you've tried this yet, but you may be able to figure out if this function does what you need it to do by looking at its source code. Look in statistics.c, line 3201.

Fitz
From what I can tell, that generated the t-value, but I'm hoping to find a function that actually generates the p value AND the tvalue?
Paul Santini
+2  A: 

Paul, I did exactly this for a psychological testing system (www.coolidgetests.com) and found it really wasn't that difficult to do on my own. Like you, I searched and searched for an available solution. It was intimidating at first to admit defeat and start writing code, but in the end I found it's wasn't too bad.

In my case, the user takes a test that generates a result (1-4) All get jammed into a DB. To do the report, I select the entire group of answers for the selected test, split them out for the answers that are scored normally and those that are reversed (1=4, 2=3, etc) then change those over with a switch statement. The two arrays are combined, then calculation functions go through to generate T, Z, and other relevant statistical scores. I kick out charts very simply via a table that's shaded based on calculated percentage.

UPDATE -

Here's my Z and T-Score Functions:

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;
    }
bpeterson76
Do you by any chance have the functions that generate the T score, adn then the subsequent p value?
Paul Santini
Updated with my Z- and T-score functions. I've broken each out because they're in use elsewhere on the reporting app. Essentially, $scale is the summed answers, median and STDIV (standard deviation) are known numbers that were provided to me and are drawn from the DB for each scale.
bpeterson76