Home Forum Statistica con R Aiuto con analisi statistica, calcolo equazione di predizione

This topic contains 19 replies and has 2 voices.

Viewing 15 posts - 1 through 15 (of 20 total)
  • Author
    Posts
  • #5182

    pandora
    Participant

    Salve a tutti, da poco mi sto interfacciando con la statistica ed in particolar modo con la statistica in R. Avrei bisogno di una mano con un lavoro scientifico, o meglio, sarei interessata a ripetere tutti i loro procedimenti per poter meglio comprenderlo, tuttavia ho alcune difficoltà, spero possiate aiutarmi.

    In questo lavoro si parte da 40 campioni, distinti in 2 gruppi differenti (presenza ed assenza di malattia), ed ogni elemento di ciascun gruppo è stato valutato per 12 fattori distinti, ognuno con uno specifico valore. Nel lavoro è scritto che dei 12 fattori iniziali ne sono stati scelti solo alcuni valutando il P-value tramite un “U Test di Mann-Whitney”. Quindi ho ricostruito la tabella dei 40 campioni ed ho scritto in R quanto segue:

    dati <- read.table("tabella.txt", header=T)
    wilcox.test(Fattore ~ Status, data=dati)

    dove Fattore è uno dei 12 fattori che sto analizzando e Status è la presenza/assenza di malattia indicata con 1 e 0.
    L’output di questa operazione è:

    	Wilcoxon rank sum test with continuity correction
    
    data:  EP1 by STATUS
    W = 27, p-value = 3.001e-06
    alternative hypothesis: true location shift is not equal to 0
    
    Warning message:
    In wilcox.test.default(x = c(0.8, 1, 1.23, 1.08, 1.05, 0.87, 1,  :
      impossibile calcolare p-value esatto in presenza di ties

    E’ corretto quello che ho fatto? Cosa indica l’alternative hypothesis? Perché quel warning?

    Successivamente viene calcolata una equazione di predizione (ovvero D=a+fX1+fX2+fXn). Sul lavoro è scritto che i predittori per costruire l’equazione di predizione sono stati scelti secondo la Wilks’ Lambda statistics, e successivamente sono stati calcolati i “discriminant function coefficients” di ogni fattore e quindi è stata calcolata questa equazione di predizione.
    Con i dati in mio possesso (i 40 campioni con tutti i valori per ogni fattore) come posso arrivare a calcolare l’equazione di predizione?

    Grazie mille per l’aiuto!!

    #5195

    pdeninis
    Participant

    Salve pandora,

    provo a risponderti seppur con i miei limiti.

    In questo lavoro si parte da 40 campioni, distinti in 2 gruppi differenti (presenza ed assenza di malattia), ed ogni elemento di ciascun gruppo è stato valutato per 12 fattori distinti, ognuno con uno specifico valore.

    Faccio qualche fatica a comprendere.
    Un campione in statistica è un certo numero di unità che viene designato a rappresentare una popolazione. Se tu hai davvero 40 campioni, non hai specificato di quale numerosità è composto ciascuno (il Sample size).
    A me però sembra che tu voglia intendere che hai un unico campione di 40 unità suddiviso in 2 gruppi. Ho capito bene?

    Aggiungi quindi che “ogni elemento (unità statistica) è stato valutato (misurato) per 12 fattori distinti”. Anche il termine “fattore” sembra inappropriato qui – sempre che io capisca bene! Si chiama “fattore” una variabile categoriale (non quantitativa né ordinale) caratterizzata da un certo numero di livelli che funge da variabile indipendente in un’analisi di regressione o ANOVA.
    Nel tuo caso mi sembra di intuire che il fattore sia lo Status (presenza o assenza di malattia). Quelli che tu chiami “Fattori” dovrebbero invece essere Outcomes, ovvero le variabili dipendenti.

    D’altra parte la sintassi che riporti: Fattore ~ Status mostra chiaramente che “fattore” è la variabile dipendente e status quella indipendente.

    Ciò può dipendere dal fatto che il disegno sperimentale di tuo interesse non è quello di un esperimento, ma quello di uno studio caso-controllo, in cui l’assegnazione dei pazienti al gruppo non sia effettuata dallo sperimentatore tramite una variabile di input (assegnazione ad un trattamento) ma sia dovuta ad una variabile di output (status, nel tuo caso: malattia presente oppure no).

    Nell’ipotesi che ho capito bene…

    Facciamo il caso che tu decida di analizzare una variabile dipendente alla volta.
    Se la tua variabile dipendente (quella misurata) è quantitativa (variabile continua, cioè che può assumere qualsiasi valore in un intervallo prefissato) e se puoi esser ragionevolmente certa che essa è distribuita normalmente, di solito vorrai usare un t-test, cioè un test che confronta le medie dei 2 gruppi attraverso un P-value, ovvero un valore che, nell’ipotesi che appartengono entrambi ad una stessa popolazione, esprime la probabilità che i tuoi due gruppi siano caratterizzati dalle 2 medie che hai ottenuto.

    Questa ipotesi è detta “ipotesi nulla”: ovvero che le due medie siano identiche, M2 – M1 = 0.
    L’ipotesi alternativa invece afferma che le medie dei due gruppi sono diverse, ovvero M2 – M1 diverso da 0, e quindi i due gruppi appartengono a 2 popolazioni differenti.

    [Esiste una variante del t-test (che in R è applicata di default) per il caso che le varianze dei 2 gruppi siano diverse tra loro].

    Può capitare però che le tue variabili dipendenti NON siano continue; esse cioè possono essere ordinali (cioè possono assumere soltanto particolari valori in un prefissato intervallo) oppure possono essere sì continue, ma tu potresti verificare che i loro residui NON siano distribuiti normalmente. In questo caso il t-test potrebbe non garantire un valore del P-value “reale” inferiore o uguale a quello “nominale”. Una alternativa al t-test per questa situazione è quella di usare il test di Mann-Whitney, detto anche di Wilcoxon-Mann-Whitney.

    Se è stato scelto questo tipo di test, che prima trasforma la tua variabile dipendente in ranghi e poi esegue un t-test alla variabile trasformata – vuol dire che:

    o non si conosce la distribuzione della variabile dipendente e si ha motivo di ritenere che non sia distribuita normalmente (o, meglio, che i suoi residui non siano distribuiti normalmente);
    oppure che essa è costituita da valori discreti (non continui).

    Provo a rispondere alle domande.
    Il test che hai condotto sembra corretto. L’ipotesi nulla è che le medie dei ranghi dei due gruppi siano uguali (lo shift dell’indicatore di location è uguale a zero). L’ipotesi alternativa è che le medie dei ranghi dei due gruppi siano diverse, cosicché la loro differenza è diversa da zero.

    Il warning avverte che l’algoritmo del wilcox.test() NON calcola il valore esatto in presenza di ties ma solo quello approssimato. Se vuoi un valore corretto per i ties puoi usare la funzione wilcox_test() del pacchetto coin.

    La seconda domanda richiede una premessa più articolata.

    Si possono presentare scenari diversi.

    Se hai 12 variabili dipendenti quantitative (continue) e normalmente distribuite, tu puoi sia ricorrere ad analisi multiple univariate (p. es. 12 t-test, o 12 ANOVA, una per ciascuna variabile dipendente) correggendo opportunamente i P-value che otterrai per test multipli (per esempio con la correzione di Bonferroni o altra a tua scelta meno conservativa) sia adottare una analisi Multivariata (MANOVA, Multivariate Analysis of Variance) cioè una analisi nella quale tutte le variabili dipendenti vengono valutate simultaneamente e 4 test alternativi forniscono la probabilità che i due gruppi appartengono ad una stessa popolazione (di cui uno è il Lambda di Wilks, e gli altri sono il Pillai’s, l’Hotelling-Lawley’s trace test, ed il Roy’s largest root).

    Queste due alternative forniscono risposta a due domande diverse, che non tratterò qui. Ti consiglio di leggere questo articolo per orientarti un minimo. Ti avverto che il problema non è semplice e richiede un notevole approfondimento.

    Nell’ipotesi che tua scelga l’analisi Multivariata (MANOVA), questa analisi si occuperà di individuare la combinazione lineare (che nel tuo caso, avendo soltanto 2 gruppi, sarà unica, caratterizzata da un unico “autovalore”) che distinguerà massimamente i due gruppi. Il Lambda di Wilks sarà una possibile statistica dalla quale si potrà ottenere un P-value dell’ipotesi nulla che i due gruppi appartengano alla stessa popolazione.

    Collegata alla MANOVA c’è una procedura detta Analisi discriminante, o Analisi della funzione discriminante. [Attenta però: esistono 2 analisi discriminanti diverse con 2 finalità diverse. Una si chiama PDA (predictive discriminant analysis) ed ha lo scopo di predire a quale gruppo apparterrà una determinata unità a seconda dei valori riportati nelle variabili dipendenti. Non è questa quella che ti riguarda].

    La procedura di tuo interesse, si chiama DDA (descriptive discriminant analysis). Essa può essere considerata il naturale follow-up della MANOVA. Ha lo scopo di identificare la cosiddetta “variata canonica”, ovvero una opportuna combinazione lineare delle variabili dipendenti originarie tale che le medie riportate dai due gruppi siano le più diverse possibile (ovvero, tale che la differenza tra i gruppi, considerando tutte le variabili dipendenti simultaneamente, sia la massima).

    Questa “variata canonica” (detta anche LDF, ovvero linear discriminant function) è ottenuta attraverso una serie di coefficienti (uno per ciascuna variabile dipendente) che costituisce l’”autovettore” relativo all’”autovalore” calcolato dalla MANOVA. Anche l’autovettore quindi sarà unico nel caso che i gruppi siano solo 2.
    In realtà il numero di funzioni discriminanti (e dunque di variate canoniche) è uguale al minore tra “il numero dei guppi meno 1″ ed “il numero di variabili dipendenti”.

    Per tornare alla tua domanda, nell’ipotesi che io abbia compreso sufficientemente:
    L’equazione di predizione (la variata canonica) puoi ottenerla eseguendo una Analisi discriminante con le 12 variabili dipendenti della MANOVA che diventano 12 variabili indipendenti dell’Analisi discriminante, e con la variabile indipendente della MANOVA (Status) che diventa la variabile dipendente dell’Analisi discriminante. C’è insomma un rovesciamento dei termini.

    La procedura calcolerà oltre all’autovalore (identico a quello della MANOVA) anche un autovettore che sarà costituito dai coefficienti discriminanti standardizzati, ovvero i coefficienti di ciascuna variabile “fattore” (come le hai chiamate tu). Sostituendo per ciascuna unità questi coefficienti f1, f2, … fn ai tuoi f nell’equazione:

    D=f1*X1 + f2*X2 +… +Fn*Xn

    in cui X1, X2, etc. sono i punteggi delle tue variabili “fattore” (V.D. della MANOVA e V.I della AD), otterrai i relativi D (LDFs, o punteggi della funzione discriminante, o linear discriminant function scores), che sono i valori della “variata canonica”.

    Io ho sempre usato SPSS per questo tipo di analisi. Sono nuovo di R. Vediamo se qualcuno ti consiglia la funzione da usare per questo scopo: se nessuno interverrà e se mi dai un po’ di tempo proverò a cercarla io.

    Paolo

    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    #5201

    pdeninis
    Participant

    Se però le 12 variabili dipendenti della MANOVA non sono continue e normalmente distribuite né la MANOVA né la AD si possono applicare.

    Che io sappia non esistono test distribution-free (equivalenti al Mann-Whitney) per tipi di analisi complesse. Tra queste credo ci sia anche l’analisi multivariata.

    Questo per dire che se non sei nelle condizioni di effettuare una MANOVA, il discorso cade e l’unica scelta possibile è quella delle multiple univariate anche con test non-parametrici.

    PS Perché vuoi calcolare l’equazione di predizione?
    Lo scopo principale della DDA (analisi discriminante descrittiva) non è quello di predire l’appartenenza ai gruppi di una unità (quello è lo scopo della PDA) ma piuttosto quello di indagare l’importanza delle variabili nel distinguere i due gruppi.

    Questo tipo di analisi – nel caso in cui esistano solo 2 gruppi – è del tutto equivalente ad una regressione multipla. I coefficienti discriminanti standardizzati non sono uguali ai coefficienti beta della regressione multipla, ma sono proporzionali a questi ultimi – ancorché ottenuti con sistemi di calcolo diversi.

    L’importanza relativa delle variabili si può indagare con strumenti diversi dai coefficienti discriminanti.

    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    #5205

    pdeninis
    Participant

    In definitiva.

    Puoi calcolare 2 diversi tipi di predizioni.

    Uno è relativo alla PDA e riguarda la probabilità che un paziente che esibisca una certa serie di valori, tra le 12 variabili, sia classificato in un gruppo oppure nell’altro (nel tuo caso, se ho capito bene, sia cioè malato oppure no).

    L’altro è relativo alla LDF ed è una nuova variabile definibile, oltre che variata canonica, anche “costrutto latente” – ove sia teoricamente ipotizzabile e sensato – che sussume e rappresenta tutte le altre variabili insieme in un solo valore.
    I coefficienti utilizzati nel calcolarlo possono dare un’idea dell’importanza della variabile nel definire il costrutto latente, anche se non in modo diretto.

    Infatti esiste una serie di metodi per comprendere l’importanza relativa delle variabili, nessuno dei quali da solo è dirimente.

    Oltre ai Coefficienti discriminanti standardizzati (equivalenti ai betas, pesi di regressione) ci sono: l’Analisi di Dominanza (Budescu) – simile al metodo APS regression di Lindeman Merenda and Gold – la Commonality Analysis, i coefficienti di correlazione di ordine zero, i coefficienti di struttura, la Misura di Pratt e i Relative Weights (attualmente sotto critica).

    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    #5214

    pandora
    Participant

    Salve! Per prima cosa: grazie per le risposte super esaustive e dettagliate, sono un sacco di informazioni!!

    Volevo chiarire il mio post iniziale.

    Nel lavoro da me preso in esame si parte da 40 pazienti distinti (che ho chiamato “campioni”) che sono divisi in 2 gruppi distinti (presa di malattia / assenza di malattia). Per ogni paziente vengono misurate 12 variabili (possiamo fare conto che siano numero di nei, numero di cicatrici, e similari) (verosimilmente, da quanto ho capito, sono variabili continue?). Lo scopo ultimo del lavoro è assegnare un paziente (al quale sono state fatte le 12 misurazioni) ad uno dei 2 gruppi (sano o malato) in base al valore che assumono queste variabili. Per fare un esempio:
    Paziente Status V1 V2 V3 V12
    1 Malato 2,4 1.7 0.1 12
    2 Sano 0.5 10 5 0.1
    (i valori sono completamente inventati in questo caso)
    Il mio incognito ha valori 1.3, 5, 2.5, 6, a quale gruppo dovrebbe appartenere (i valori sono sempre inventati)?

    Ho studiato bene i lavori inerenti a questo problema e gli unici indizi che mi danno sono “Lamda di Wilks per scegliere quali dei 12 valori siano più predittivi” e “analisi discriminante (con connessi “discriminant function coefficients”, ed “equazione di predizione”)”.

    L’equazione di predizione presente sui lavori è in un formato simile a quello da te citato, tuttavia esiste un altro “coefficiente” (se così si può chiamare) iniziale, ovvero:

    D=Y+fn1X1+fn2X2+…+fnNXN

    Come mai non potrebbe andar bene un PDA in questo caso? Se volessi ricostruire la formula, come otterrei quella Y iniziale?

    #5215

    pdeninis
    Participant

    Come mai non potrebbe andar bene un PDA in questo caso? Se volessi ricostruire la formula, come otterrei quella Y iniziale?

    Scusami, ho creduto io all’inizio che tu stessi facendo un diverso tipo di studio! Ho proiettato su di te quello che di cui mi sono occupato io per un certo tempo…

    Se quello che ti interessa è proprio predire lo stato del paziente a partire da alcune variabili, l’analisi che ti riguarda, tra le due, è essenzialmente quella predittiva, ovvero la PDA.
    Comunque, nel caso in cui esistono solo due gruppi (ovvero due stati) – che mi sembra di aver capito sia il tuo – la funzione LDF (caratteristica della DDA, come la LCF è caratteristica della PDA) può essere utilizzata anche per classificare:

    Classification decisions can be based directly on LDF scores only in a two-group situation. (This is true because the single LDF found when k = 2 has weights that are proportional to the difference of weights of the two LCFs.)

    k è il numero dei gruppi (stati, nel tuo caso).
    Se hai bisogno di capire un po’ meglio le due diverse forme di analisi discriminante puoi leggere questo:

    Huberty, C. J. (1984). Issues in the use and interpretation of discriminant analysis. Psychological Bulletin, 95(1), 156.

    Se non riesci a trovarlo qui ce n’è una copia.

    Per avere un esempio concreto, puoi dare un’occhiata a questo, che potrebbe essere abbastanza vicino a quello che devi fare, con esempi di codice in R.

    Per ogni paziente vengono misurate 12 variabili (possiamo fare conto che siano numero di nei, numero di cicatrici, e similari) (verosimilmente, da quanto ho capito, sono variabili continue?)

    Se sono tutti del tipo “numero di nei e cicatrici” direi che si tratta di conteggi, quindi non propriamente variabili continue, ma variabili discrete. Comunque prima dovresti fare anche altre considerazioni.

    Un possibile problema che potresti avere è il rapporto tra predittori (variabili indipendenti) ed il numero dei casi. Una regola approssimativa vuole che si usino almeno 10 casi per regressore. Tu a fronte dei 40 casi ne hai ben 12. L’analisi discriminante potrebbe servire in prima battuta a capire qual è il sottoinsieme più idoneo per la classificazione, scartando le variabili meno… prognostiche, se ce ne sono.

    Sempre nell’articolo citato sulla PDA puoi leggere:

    It should be noted that Wilks’s lambda cannot increase as the number of variables is increased; classification
    accuracy can, however, decrease as the number of variables is increased (see Hecker & Wegener, 1978; Jain & Waller, 1978).

    osservazione che ti porta nella direzione appena indicata.

    Scusa la domanda: ma per i casi simili al tuo non hai trovato esempi di applicazione della Regressione Logistica?

    Mi sembra che nel caso di variabile dipendente dicotomica, di solito, è lo strumento preferito.

    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    #5221

    pdeninis
    Participant

    Ho studiato bene i lavori inerenti a questo problema e gli unici indizi che mi danno sono “Lamda di Wilks per scegliere quali dei 12 valori siano più predittivi” e “analisi discriminante (con connessi “discriminant function coefficients”, ed “equazione di predizione”)”.

    Rileggendo meglio il tuo post credo di capire qualcosa in più.

    Il Lambda di Wilks oltre a testare il rapporto tra le matrici W/(W+B) della Funzione Discriminante (effetto multivariato), permette anche di valutare quali, tra le variabili inserite nell’analisi, si mostrano maggiormente significative nel distinguere i due gruppi (effetto univariato).
    Quindi l’indicazione che hai avuto sembra essere quella di fare una selezione e giungere ad un sottoinsieme più limitato di variabili predittive (che nel tuo caso dovrebbe aggirarsi attorno alle 4).

    Per questo obiettivo altri criteri per scegliere le variabili esplicative possono essere la non elevata correlazione reciproca per evitare la collinearità (SPSS fa da solo il controllo della tolleranza ed esclude le variabili al di sotto di un certo valore, ma inserire le variabili che portano informazione diversa escludendo quelle ridondanti fa solo bene), l’esclusione radicale di eventuali variabili che si rivelino essere combinazioni lineari di altre variabili già inserite, e sopratutto – visto che hai scelto un’analisi multivariata – l’inclusione di quelle che, in base ad una… intuizione di natura teorica, potrebbero costituire insieme un costrutto latente sensato.

    Quindi una volta definito il modello, ottieni la LDF attraverso il calcolo dei Coefficienti Discriminanti non Standardizzati. Attraverso i coefficienti puoi costruire l’equazione di predizione che nel caso in cui i gruppi siano soltanto 2 può essere usata direttamente anche per scopo di classificazione di nuovi casi.
    Per questo scopo calcoli la media dei 2 centroidi dei tuoi gruppi, che sarà il punto di separazione e assegnerai di conseguenza i nuovi casi.

    Il alternativa il procedimento sempre corretto sarebbe quello di definire la Funzione di Classificazione di Fisher – che è diversa dalla LDA – calcolando i coefficienti (diversi per ciascun gruppo), quindi sostituendo i valori dei nuovi casi nelle 2 o più equazioni e assegnando il caso al gruppo che raggiunge il punteggio più alto.

    Esiste la possibilità di valutare quanto bene la tua funzione discriminante classifica i nuovi casi e naturalmente è opportuno fare anche questo controllo perché l’aver trovato significativa l’analisi discriminante non garantisce che i relativi coefficienti siano infallibili nella classificazione.

    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    #5235

    pdeninis
    Participant

    Se volessi ricostruire la formula, come otterrei quella Y iniziale?

    La Y iniziale è il valore della costante (intercetta) nell’equazione per la stima della variata canonica.

    Ti dico cosa fa SPSS, ma solo per riferimento. Produce 2 set di Coefficienti Discriminanti della LDF: uno che chiama “Coefficienti Standardizzati della funzione Discriminante canonica”, che sono assimilabili ai Beta di regressione (in realtà sono più che assimilabili: sono proporzionali a quelli di una Regressione Multipla in cui la DV è la variabile di raggruppamento e le IV sono i predittori).
    Siccome i coefficienti sono “standardizzati” sono equivalenti a quelli prodotti da un’equazione in cui i predditori siano stati precedentemente standardizzati; questo è il motivo per cui manca l’intercetta (il tuo termine Y): se i predittori sono standardizzati l’intercetta è zero.
    Questi coefficienti vengono usati per confrontare tra di loro i predittori con una stessa scala, ovvero in termini di 1 DV. Altrimenti sarebbe arduo trarre significato dai numeri.

    Il secondo set è quello di “coefficienti della funzione discriminante canonica” (NON standardizzati): dunque è quello che può essere utilizzato per calcolare i valori della variata canonica a partire dalle variabili NON standardizzate. Questo è il set che potrebbe fare al caso tuo, che ha anche l’intercetta: puoi inserire i valori di cui vuoi stimare lo Status e calcolare i punteggi di predizione.

    Attenzione al fatto che questo utilizzo particolare (la classificazione) della funzione LDF, come accennavo sopra, è possibile soltanto nel caso in cui ci siano 2 soli gruppi (quindi una sola funzione discriminante) perché in questo caso i risultati ottenuti classificando in base alla funzione discriminante lineare coincidono con quelli ottenibili dalla funzione di classificazione di Fisher (che pure è detta lineare in quanto i termini in cui appaiono le X sono di 1° grado). Negli altri casi esistono divergenze anche notevoli e la funzione da usare è quella di classificazione di Fisher.

    Infine produce i set di “Coefficienti della funzione di classificazione”, 1 per ogni predittore, che sono i Coefficienti delle “Funzione discriminanti lineari di Fisher”.

    Sto guardando in R per trovare l’equivalente di quel che fa SPSS.

    In realtà mi resta il dubbio su quale set di coefficienti venga prodotto dal alcuni pacchetti, ad esempio da MASS. Devo provare a ripetere in R qualche analisi fatta con SPSS così da essere certo di quali coefficienti mostra l’algoritmo.

    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    #5241

    pdeninis
    Participant

    Ho provato a confrontare SPSS DISCRIMINANT con lda() di MASS.

    La prima differenza l’ho notata con un database che aveva una variabile che – insieme ad altre due – rendeva quasi singolare la matrice di covarianze.

    In questo caso SPSS produce stime dei coefficienti dello stesso ordine di quelli che si ottengono omettendo la variabile quasi-combinazione-lineare, mentre lda() produce, per le 3 variabili incriminate, coefficienti circa 300 volte più elevati, dunque totalmente inattendibili!

    Mi è venuto a mente che una simile differenza capita anche tra le procedure GLM e MANOVA di SPSS. GLM è sovraparametrizzata, per cui non ha problemi a calcolare l’inversa (in realtà una pseudo-inversa) e fornisce stime comunque nello stesso ordine di misura, mentre MANOVA usa il metodo usuale di parametrizzazione, che credo sia usato anche in lda(). La differenza era che invece di stampare comunque qualcosa, SPSS produceva soltanto un warning di “matrice singolare” e si rifiutava di… dare i numeri.

    Comunque poco male: la variabile va comunque tolta, ed il controllo di non singolarità va sempre effettuato!

    Una volta eliminato il problema ho verificato che i coefficienti che lda() produce sono esattamente i “coefficienti della funzione discriminante canonica” di SPSS dunque quelli NON standardizzati, come servono a te. Di questi, però, stranamente, SPSS produce anche l’intercetta, mentre lda() non lo fa.

    È questo il problema di cui parlavi?

    lda() inoltre non presenta né i coefficienti discriminanti STANDARDIZZATI né quelli della Funzione di Classificazione di Fisher che, per quanto ne so, sono indispensabili per classificare tra più di 2 gruppi.

    Bisogna cercare ancora…

    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    • This reply was modified 1 month, 2 weeks ago by  pdeninis.
    #5250

    pdeninis
    Participant

    Anche l’esempio di Dell’Omodarme a pag. 168 NON riporta l’intercetta…

    #5253

    pandora
    Participant

    Ciao, ancora grazie per il tuo aiuto! Sto capendo qualcosa in più in merito a questo tipo di analisi. Sto provando a vedere in giro se esiste un modo per eguagliare l’analisi di SPSS DISCRIMINANT con R, ed ho trovato solo un codicino che dovrebbe eseguire una cosa del genere, ma che non riesco a seguire perfettamente https://gist.github.com/benmarwick/4ad600d8212a3e1a906e

    Per quanto riguarda la mia analisi nello specifico posso girarti il paper originale, magari ci sono indizi che a me, che sono inesperta, sfuggono https://www.ncbi.nlm.nih.gov/pubmed/21378977

    Per quanto riguarda i dati, avevo già provato l’lda ma, come hai riscontrato pure tu, i valori che restituisce sono differenti. Il problema si pone nel momento in cui, gli autori di questo stesso lavoro hanno usato la stessa analisi per ricavare una formula “migliorata”. Fintanto che analizzo questi dati, anche semplicemente usando lda riesco a fare predizioni corrette, tuttavia cambiando fattori da analizzare (come fanno loro nei lavori successivi) cambiano formula (e fin qui la cosa è logica), ma se uso ancora lda sul nuovo dataset non riesco più a fare predizioni corrette!

    #5255

    pdeninis
    Participant

    Ho dato un’occhiata al paper.
    Da quanto ho capito, hanno dapprima verificato che ognuna delle 12 DMR fosse significativa nel distinguere lo stato di trisomia con il test di Mann-Whitney, immagino non potendo contare sulla normalità delle distribuzioni.
    Di queste DMR usate una alla volta per predire graficamente, però, alcune sembravano discernere bene, ma altre no.

    Per questo hanno ipotizzato che usandole insieme avrebbero avuto più potere discriminatorio, e hanno deciso di fare un’analisi multivariata: qui i problemi di normalità, però, li hanno messi in secondo piano, evidentemente. Comunque, essendo il fine ultimo la classificazione, direi che la cosa non è preoccupante: è la matrice di confusione finale che dice se la classificazione funziona oppure no.

    Hanno inizialmente usato l’analisi discriminante come mezzo di selezione delle variabili più importanti nel distinguere.
    La procedura stepwise (SPSS la fa automaticamente) ne include/esclude una alla volta a seconda di quale diminuisce di più il valore del Lambda di Wilks ad ogni step (il Lambda di Wilks funziona al contrario della F: valori prossimi ad 1 sono i meno significativi, quelli prossimi allo 0 i più). Hanno incluso così, nell’ordine segnalato, 8 variabili (tra le quali anche 2 che usate da sole non consentivano la diagnosi) e ne hanno escluso 4.

    Quindi usando il modello a 8 variabili hanno rieseguito l’analisi discriminante per ottenere i coefficienti discriminanti. Non è precisato nell’articolo quali coefficienti abbiano usato, ma credo di capire che fossero i Discriminanti Canonici (non quelli di classificazione di Fisher) visto che gli stati tra cui discriminare erano 2. Nella equazione la costante è presente (-6.331).

    Hanno quindi usato l’equazione per vedere quanto fosse attendibile nello screening della trisomia. Incredibilmente, mostra il 100% di sensibilità ed il 100% di specificità (zero falsi positivi e zero falsi negativi)!

    Se non trovi una versione anche vecchia di SPSS da usare, una soluzione potrebbe essere di calcolare l’intercetta della funzione discriminante con le sue formule.

    In questo linkci sono gli algoritmi usati da SPSS per calcolarla.

    Il calcolo non è immediato perché si devono prima calcolare le medie di ogni variabile, i Coefficienti di Fisher, e la matrice SSCP within.

    Appena posso mi guardo il link di github…

    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    #5261

    pdeninis
    Participant

    Secondo questo link i punteggi discriminanti si potrebbero calcolare anche usando la funzione discriminante standardizzata (senza costante)…

    In questo caso, siccome i coefficienti stampati da lda() sono quelli grezzi, si potrebbe provare a standardizzare prima le variabili. Quando le variabili sono standardizzate, l’intercetta è uguale a 0.

    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    #5266

    pdeninis
    Participant

    Ho parzialmente seguito le istruzioni di

    # Using R to reproduce the SPSS Discriminant Function Analysis example from http://www.ats.ucla.edu/stat/spss/dae/discrim.htm

    Ero incuriosito perché avevo letto tra i commenti:
    # wilks test (!= SPSS);

    e:

    discrim # not similar to any SPSS output.

    In realtà il calcolo del Lambda di wilks è esattamente identico a quello che ottiene SPSS nella procedure DISCRIMINANT, che poi è identico a quello che si ottiene con la procedura GLM usata per fare una MANOVA.

    Lambda di Wilks

    Quindi non capisco il commento “!= SPSS”…
    Avrei pensato che fossero necessari altri riscontri se la divergenza non fosse relativa proprio al caso specifico. Del resto il calcolo del Lambda di Wilks è il semplice rapporto di 2 determinanti, quindi si fa presto a verificare.

    Il confronto tra lda() e DISCRIMINANT invece mi ha colpito.

    I coefficienti, nell’esempio relativo al file discriminant.sav, sono davvero diversi da quelli di SPSS.
    Non ho verificato se sono proporzionali tra loro. Però sono diversi sia da quelli RAW della LDF di DICSRIMINANT (oltre a non avere la costante) che a quelli STANDARDIZED, per non parlare delle funzioni LCF che non ho capito se nel pacchetto MASS possono essere calcolate.

    Sono tornato a ripetere l’analisi che avevo precedentemente fatto con dati miei, ed il cui esito era stato che i coefficienti stampati da lda() erano identici a quelli RAW LDF di DISCRIMINANT eccettuata la mancanza della costante.

    Non mi ero sbagliato. Nel mio caso i coefficienti sono identici all’8° decimale (unica differenza i segni opposti, ma evidentemente dipende da come sono codificati i gruppi 0 ed 1).

    Funzione discriminante

    La differenza principale che mi è venuta a mente è che il mio esempio era monodimensionale (soltanto 2 gruppi) mentre quello di discrim.sav è bidimensionale (3 gruppi). I risultati sono proprio diversi: l’autovalore delle due funzioni, il valore cumulato della varianza spiegata, insomma tutto (tranne le medie delle variabili).

    Questo è il motivo per cui non riesco a passare definitivamente ad R: SPSS costituisce un riferimento stabile del tipo di algoritmi utilizzati, ed anche verificabile.

    Mi sta venendo in mente di replicare in R quello che fa DISCRIMINANT…
    Ci vorrà un po’ ma non deve essere difficile, per lo meno se esiste in R una funzione che esegua la fattorizzazione di Cholesky, indispensabile per fare la svd di una matrice non simmetrica.

    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    #5277

    pdeninis
    Participant

    Finalmente ho trovato qui:
    Stackexchange

    Sembra che la costante non sia necessaria né in lda() né in SPSS in quanto le variabili vengono centrate prima dei calcoli (sia in lda() che in DISCRIMINANT).

    SPSS fornisce in più il valore della costante per chi voglia decentrare successivamente i valori predetti.

    SPSS centers the data too (as always is done in LDA). The constant term is computed afterwards, – for a user to be able to shift results in space onto the noncentered position. This constant is hardly ever needed. – ttnphns

    Lo scopo di evitare la costante si ottiene semplicemente centrando le variabili, e nel caso delle variabili RAW si mantiene la scala originale. Nel caso dei coefficienti standardizzati, la scala diviene in termini di SD. La standardizzazione rende più facili i confronti ma secondo molti meno comprensibili i valori di per sé. Per questo SPSS fornisce i due set. Per li voglia in R basta standardizzare prima le variabili e i coefficienti lo saranno automaticamente.

    Questo è uno splendido intervento dello stesso ttnphns che spiega l’analisi discriminante che forse più chiaramente non si potrebbe.

    Quest’altro esprime le perplessità di molti nell’affrontare questo argomento difficile e mai abbastanza chiaro.

    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
    • This reply was modified 1 month, 1 week ago by  pdeninis.
Viewing 15 posts - 1 through 15 (of 20 total)

You must be logged in to reply to this topic.