2010-10-20 15 views
13

Sto provando a scrivere un sistema di reporting per un progetto su cui sto lavorando analizzando i punteggi pre e post test delle persone e faccio alcune analisi su di esso. Ho cercato al meglio delle mie possibilità, ma non riesco a trovare una classe PHP/un insieme di funzioni che sembra fare l'analisi di cui ho bisogno.Analisi statistica per PHP

Attualmente, sto scaricando il set di dati in un CSV e uno dei miei colleghi lo sta eseguendo tramite SPSS per eseguire un t-test di campioni appaiati (è l'analisi che ho bisogno di eseguire, poiché abbiamo bisogno del p- valore).

So che esiste questa classe in PHP: http://usphp.com/manual/en/ref.stats.php, tuttavia, nessuna di queste sembra essere documentata al punto che io possa capirlo.

Non mi interessa dover scrivere l'analisi da solo, ma se esiste già, vorrei evitare di reinventare la ruota.

Grazie per qualsiasi aiuto!

+0

che tipo di rapporti hai voglia di produrre? Grafici? – iamjonesy

+0

Produco già tutti i grafici e la media di cui ho bisogno. Ho letteralmente bisogno di calcolare il valore p statistico per i miei set di dati. –

+1

Potresti usare la potenza di R per fare statistiche per te e chiamarlo direttamente da php. http://www.matthewjockers.net/2008/11/11/executing-r-in-php/ –

risposta

2

Sembra che tu voglia utilizzare la funzione stats_stat_paired_t. Non sono sicuro che tu abbia già provato questo, ma potresti essere in grado di capire se questa funzione fa quello che ti serve guardando il suo source code. Guarda in statistics.c, riga 3201.

+0

Da quello che posso dire, che ha generato il valore t, ma spero di trovare una funzione che genera effettivamente il valore p E il tvalue? –

2

Paul, ho fatto esattamente questo per un sistema di test psicologico (www.coolidgetests.com) e ho scoperto che non era così difficile da fare da solo. Come te, ho cercato e cercato una soluzione disponibile. All'inizio intimidiva ammettere la sconfitta e iniziare a scrivere codice, ma alla fine ho scoperto che non era male.

Nel mio caso, l'utente esegue un test che genera un risultato (1-4) Tutti vengono bloccati in un DB. Per fare il rapporto, seleziono l'intero gruppo di risposte per il test selezionato, le divido per le risposte che sono segnate normalmente e quelle che sono invertite (1 = 4, 2 = 3, ecc.) Quindi cambia quelle con un interruttore dichiarazione. I due array vengono combinati, quindi le funzioni di calcolo passano per generare T, Z e altri punteggi statistici rilevanti. Io lancio i grafici molto semplicemente tramite una tabella che è ombreggiata in base alla percentuale calcolata.

AGGIORNAMENTO -

Ecco le mie funzioni T-score e Z:

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; 
    } 
+0

Avete per caso le funzioni che generano il punteggio T, quindi il successivo valore p? –

+0

Aggiornato con le mie funzioni punteggio Z e T. Ne ho suddivisi tutti perché sono in uso altrove nell'app di reporting. Essenzialmente, la scala $ è la risposta sommata, la mediana e la deviazione standard (deviazione standard) sono numeri noti che mi sono stati forniti e sono tratti dal DB per ciascuna scala. – bpeterson76