La regressione non-lineare
Transcript
La regressione non-lineare
La regressione non-lineare Andrea Onofri Dipartimento di Scienze Agrarie ed Ambientali Università degli Studi di Perugia Versione on-line: http://www.unipg.it/ onofri/RTutorial/index.html Indice 1 Introduzione 1.1 Linearizzazione della funzione . . . . . . . . . . . . . . . . . . 1.2 Approssimazione della vera funzione tramite una polinomiale in X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Adattamento di funzioni curvilinee qualunque . . . . . . . . . 1 2 2 Inferenze statistiche e verifiche delle assunzioni di base 4 3 La regressione non-lineare con R 4 4 Il package drc 7 2 3 5 Ricerca dell’intervallo di confidenza per la X 10 6 Trasformazione del modello 12 7 Per approfondire 13 1 Introduzione Difficilmente i fenomeni biologici possono essere descritti da funzioni lineari, salvo il caso in cui si consideri un intervallo di variazione della variabile indipendente piuttosto ristretto. Più comunemente, le relazioni di maggior interesse agrario e biologico in genere (per esempio la crescita di una coltura, la cinetica degradativa degli erbicidi nel terreno, la risposta produttiva delle colture a densità crescenti di malerbe o a dosi crescenti di concime, la risposta fitotossica di una specie infestante alla dose di un erbicida) sono curvilinee, posseggono punti di massimo o minimo, flessi e, soprattutto, asintoti. E’ quindi di fondamentale importanza pratica la capacità di adattare ai dati sperimentali funzioni curvilinee, il che può essere ottenuto in vari modo: 1 1 INTRODUZIONE 2 1. linearizzazione della funzione tramite trasformazione delle variabili; 2. approssimazione della vera funzione curvilinea con una polinomiale in X; 3. adattamento ai dati sperimentali di funzioni curvilinee, tramite metodiche di regressione non-lineare. 1.1 Linearizzazione della funzione Alcune funzioni matematiche curvilinee possono essere linearizzate con un semplice trasformazione dei dati. Per esempio, Una funzione esponenziale del tipo: Y = AeX può essere linearizzata con una trasformazione logaritmica, come segue: log(Y ) = log(A) + X I parametri di questo modello possono essere facilmente determinati con le usuali tecniche di regressione lineare. Un altro esempio è dato dalla funzione di Michaelis-Menten per la descrizione della cinetica delle reazioni chimiche: Y = a·x b+x Questa funzione può essere linearizzata trasformando i due termini nel loro reciproco: 1 1 b 1 = + · = a0 + b0 · X Y a a X Le funzioni linearizzabili per semplice trasformazione delle variabili sono dette lineari per trasformazione (Bates e Watts, 1988) e presentano il vantaggio di semplificare molto i calcoli richiesti per la stima dei parametri. Un grave svantaggio è dato dal fatto che trasformando la Y si trasforma anche la distribuzione degli errori; quindi, se è ragionevole assumere che i dati nella scala originale siano normalmente distribuiti e omoschedastici, la trasformazione introduce distorsioni dal punto di vista delle assunzioni di base per l’inferenza statistica, alle quali bisogna porre particolare attenzione. 1.2 Approssimazione della vera funzione tramite una polinomiale in X In generale, relazioni matematiche curvilinee possono essere approssimate tramite funzioni polinomiali di ordine n. Si tratta di una famiglia di funzioni 1 INTRODUZIONE 3 molto flessibile, che contiene la funzione lineare come caso particolare (n=1) e che permette di descrivere curvature anche molto complesse semplicemente aumentando l’ ordine della funzione. In questo modo è possibile ottenere un adattamento ai dati sperimentali teoricamente anche perfetto. Le funzioni polinomiali sono un tipico esempio di funzioni non-lineari nelle variabili, ma lineari nei parametri; esse possono essere trattate ricorrendo alle metodiche di calcolo normalmente utilizzate per la regressione lineare. Gli svantaggi delle funzioni polinomiali sono legati al fatto che queste presentano raramente giustificazione biologica. Per esempio, con le funzioni polinomiali non è possibile descrivere relazioni asintotiche, che sono invece molto comuni in biologia. Inoltre, le polinomiali possono approssimare bene una funzione solo in un intervallo della X molto ristretto e non consentono nessuna estrapolazione al di fuori di questo, dato che possono portare a stime della risposta completamente insensate biologicamente. Per questi motivi l’ uso delle funzioni polinomiali dovrebbe essere limitato ai casi in cui non si abbia nessuna conoscenza a priori dell’ andamento del fenomeno. Tra l’ altro i moderni supporti informatici consentono di risolvere il problema dell’ adattamento diretto di funzioni curvilinee qualunque senza i lunghi calcoli manuali che venivano richiesti fino ad alcuni anni fa. 1.3 Adattamento di funzioni curvilinee qualunque Per quanto sopra accennato, ogniqualvolta possibile, si preferisce utilizzare metodologie di regressione non-lineare, che permettono di adattare direttamente funzioni curvilinee di qualunque tipo ai dati sperimentali. La stima dei parametri, tuttavia, non è immediata come nel caso delle regressioni lineari; il calcolo risulta piuttosto complicato rendendo obbligatorio l’ impiego del personal computer per ottenere risultati in tempi ragionevolmente brevi. Per l’esecuzione delle regressioni non-lineari vengono generalmente impiegati metodi iterativi (Gauss-Newton, Steepest Descent, Marquardt, Simplex, si rinvia per ulteriori informazioni alla bibliografia riportata in calce), nei quali è necessario fissare delle stime iniziali dei parametri, che vengono corrette in ogni iterazione successiva fino ad ottenere la convergenza sui valori che minimizzano la funzione dei minimi quadrati. Ovviamente, trattandosi di metodi iterativi, le stime ottenute sono solo un’approssimazione (accettabile!) dei valori reali. 2 2 INFERENZE STATISTICHE E VERIFICHE DELLE ASSUNZIONI DI BASE4 Inferenze statistiche e verifiche delle assunzioni di base Le assunzioni parametriche di base relative ai modelli non-lineari sono le stesse dei modelli lineari e, di conseguenza, gli strumenti diagnostici sono analoghi. Bisogna tuttavia menzionare il fatto che, dato l’impiego di metodi iterativi per la ricerca dei valori dei parametri, tutti i risultati a cui si perviene (stima dei parametri, della varianza residua e numero dei gradi di libertà relativi) sono solo una approssimazione di quelli reali. Per questo motivo, nel caso non-lineare i metodi grafici (analisi dei residui) sono largamente preferiti. Nel caso della regressione non-lineare, è necessario valutare molto attentamente la correlazione tra i parametri, che può essere il sintomo di (sovraparametrizzazione), cioè di aver incluso nell’equazione un numero di parametri non giustificato dai dati sperimentali. Per quanto riguarda le trasformazioni stabilizzanti, valgono le stesse considerazioni relative ai modelli lineari ed è possibile ricorrere alla famiglia di trasformazioni descritta da Box e Cox (1964). L’unica differenza rispetto alle regressioni lineari è nel fatto che operare la trasformazione della sola variabile dipendente comporta anche la modifica della scala sulla quale vengono stimati i parametri, che quindi non conservano il loro valore biologico. Dato che spesso le regressioni non-lineari vengono eseguite proprio perchè si è interessati all’informazione contenuta nei parametri di un modello, si preferisce adottare la cosiddetta tecnica della trasformazione di entrambe le parti, o metodo TBS (”Transform Both Sides”) e trasformare quindi sia i dati osservati per la variabile dipendente, sia il modello: Y λ = f (X)λ In questo modo si ottengono i parametri della funzione sulla scala originale come se la trasformazione non fosse stata eseguita per niente. 3 La regressione non-lineare con R Immaginiamo di voler determinare la funzione di crescita di una coltura. I dati osservati sono: 3 LA REGRESSIONE NON-LINEARE CON R Giorni dalla semina 35.00 39.00 46.00 53.00 60.00 67.00 74.00 81.00 5 Peso 420.50 1660.70 3195.00 5870.10 7591.30 8784.80 9422.20 10328.10 Vogliamo adattare ai dati anzidetti una funzione di Gompertz, del tipo: y = a · exp(−b · exp(−c · x)) Per eseguire la regressione non lineare possiamo utilizzare la funzione nls(), che è già implementata nel package di base di R. La sintassi è abbastanza semplice: nls(formula, start, trace) dove formula è la funzione da adattare ai dati, start è la lista dei valori iniziali, trace (FALSE o TRUE) permette di richiedere la stampa a video dei risultati delle iterazioni. > dati DAS DW 1 35 420.5 2 39 1660.7 3 46 3195.0 4 53 5870.1 5 60 7591.3 6 67 8784.8 7 74 9422.2 8 81 10328.1 > model<-nls(DW~a*exp(-exp(b*(c-DAS))), start=list(a=10000, b=0.08, c=47), trace=TRUE, data=dati) 2287456 : 1.0e+04 8.0e-02 4.7e+01 296223.3 : 1.079510e+04 8.320439e-02 4.769160e+01 294817.9 : 1.078999e+04 8.314129e-02 4.761957e+01 294817.7 : 1.078956e+04 8.315383e-02 4.761927e+01 294817.7 : 1.078956e+04 8.315391e-02 4.761925e+01 > summary(model) 3 LA REGRESSIONE NON-LINEARE CON R 6 Formula: DW ~ a * exp(-exp(b * (c - DAS))) Parameters: Estimate Std. Error t value Pr(>t|) a 1.079e+04 3.351e+02 32.20 5.43e-07 b 8.315e-02 6.610e-03 12.58 5.64e-05 c 4.762e+01 6.470e-01 73.60 8.77e-09 --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 *** *** *** ’*’ 0.05 ’.’ 0.1 ’ ’ 1 Residual standard error: 242.8 on 5 degrees of freedom Correlation of Parameter Estimates: a b b -0.8455 c 0.7618 -0.5558 > Il vantaggio di nls() è che è molto facile immettere una qualunque funzione, anche se non è sempre altrettanto facile reperire delle stime iniziali dei parametri accettabili. In questo senso possono tornare utili alcune funzioni di self starting già implementate in R, che si occupano da sole del reperimento delle stime iniziali dei parametri. Per esempio, la funzione di Gompertz anzidetta può essere richiamata utilizzando la funzione SSgompertz(X, Asym, b2, b3): > model<-nls(DW ~ SSgompertz(DAS, Asym, b2, b3), data=dati, trace=T) 294817.7 : 1.078955e+04 5.244305e+01 9.202095e-01 > summary(model) Formula: DW ~ SSgompertz(DAS, Asym, b2, b3) Parameters: Estimate Std. Error t value Pr(>t|) Asym 1.079e+04 3.351e+02 32.201 5.43e-07 *** b2 5.244e+01 1.512e+01 3.468 0.0179 * b3 9.202e-01 6.083e-03 151.280 2.39e-10 *** --Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1 Residual standard error: 242.8 on 5 degrees of freedom Number of iterations to convergence: 0 4 IL PACKAGE DRC 7 Achieved convergence tolerance: 1.567e-06 | Ad oggi, esistono funzioni di SelfStarting per nls() relative alle seguenti funzioni: SSminmen(), SSlogis(), SSweibull(). Per queste e per altre funzioni può essere reperito l’help all’interno di R. All’interno del package aomisc è possibile reperire: decrescita esponenziale (NLSexpoDecay()), equazione di Freundlich (NLSpowerCurve()), regressione logaritmica (NLSlogReg), esponenziale negativa (NLSnegExp()), crescita monomolecolare (NLSmonoGrowth()), regressione asintotica (NLSasymReg()), crescita logistica a tre parametri (NLSlogiGrowth()), funzione di Hill (NLShillCurve()), Weibull (NLSweibull()). 4 Il package drc Oltre alla funzione nls() in R esiste un package molto comodo, che si chiama drc(), che implementa tutte le funzioni necessarie per l’analisi di regressione non-lineare. Dopo aver caricato il package con il comando: library(drc) possiamo utilizzare il dataset (incluso nel package) beetGrowth: > beetGrowth DAE weightInf 1 21 0.06000 2 21 0.06000 3 21 0.11000 4 27 0.20000 5 27 0.20000 6 27 0.21000 7 38 2.13000 8 38 3.03000 9 38 1.27000 10 49 6.13000 11 49 5.76000 12 49 7.78000 13 65 17.05000 14 65 22.48000 15 65 12.66000 16 186 21.51010 17 186 26.25887 18 186 27.67733 > weightFree 0.0715091 0.0662547 0.0747931 0.3368074 0.3952256 0.2520960 2.3225072 1.7163224 1.2189231 11.7761096 13.6191507 12.1462931 33.1067720 24.9648226 34.6577561 38.8329912 27.8375016 37.7165427 4 IL PACKAGE DRC 8 Si tratta della crescita di una coltura di barbabietola da zucchero in presenza ed in assenza di piante infestanti. Ai dati è possibile adattare una funzione di Gompertz, in modo molto semplice: model <- drm(weightFree ~ DAE, data=beetGrowth, fct=gompGrowth.1(), adjust="bc1") notare l’argomento fct che permette di specificare una funzione (scelta tra quelle disponibili), mentre l’argomento adjust imlementa la procedura di Box e Cox, che sceglie automaticamente il valore di lambda più opportuno per la trasformazione. La funzione summary() restituisce le stime, indicando il valore lambda utilizzato per la correzione: > summary(model) Model fitted: Gompertz Growth Model (3 parms) Parameter estimates: Estimate Std. Error t-value p-value c:(Intercept) 0.0507220 0.0040974 12.3790341 2.823e-09 m:(Intercept) 0.9681277 0.1598079 6.0580709 2.191e-05 plateau:(Intercept) 44.2395691 8.0757317 5.4780880 1e-04 Residual standard error: 0.3730283 (15 degrees of freedom) Non-normality/heterogeneity adjustment through optimal Box-Cox transformation Estimated lambda: 0 Confidence interval for lambda: [-0.176,0.195] La funzione anova() esegue un test di lack of fit: > anova(model) Lack-of-fit test One-way ANOVA DRC model > ModelDf RSS Df F value p value 12 0.46231 15 2.08725 3 14.0593 0.0003 Vediamo che, in questo caso il test è significativo. La funzione plot() permette di ottenere un grafico dei dati e della funzione. Per default, viene 4 IL PACKAGE DRC 9 plottato il logaritmo della x, se ciò non corrisponde alla propria volontà è necessario indicarlo, utilizzando l’argomento log: > plot(model) Osserviamo che la funzione di Gompertz è poco adatta, in quanto non permette una buona stima dell’asintoto superiore. Si può quindi provare ad utilizzare una funzione logistica, caricando il package aomisc, che la contiene: > library(aomisc) > model <- drm(weightFree ~ DAE, data=beetGrowth, + fct=logiGrowth.1(), adjust="bc1") > summary(model) Model fitted: Logistic Growth Model (3 parms) Parameter estimates: Estimate Std. Error t-value p-value init:(Intercept) 1.7457e-03 1.0406e-04 1.6776e+01 3.963e-11 m:(Intercept) 1.8568e-01 2.9883e-03 6.2138e+01 8.205e-20 plateau:(Intercept) 3.5417e+01 3.5683e+00 9.9253e+00 5.515e-08 5 RICERCA DELL’INTERVALLO DI CONFIDENZA PER LA X 10 Residual standard error: 0.234448 (15 degrees of freedom) Non-normality/heterogeneity adjustment through optimal Box-Cox transformation Estimated lambda: 0 Confidence interval for lambda: [-0.176,0.195] > anova(model) Lack-of-fit test One-way ANOVA DRC model > ModelDf RSS Df F value p value 12 0.46231 15 0.82449 3 3.1336 0.0656 In questo caso possiamo osservare che il fitting è migliorato notevolmente. Il package drc è estremamente comodo, perchè contiene tutte le funzioni necessarie per eseguire analisi di regressione adeguate. Le funzioni disponibili (coni relativi self-starter ) sono log-logistica a due tre e quattro parametri (LL.2(), LL.3(), LL.4()), weibull a due, tre, quattro parametri (W1.2(), W1.3(), W1.4()), sigmoidale con picco iniziale (b3(), b4() e b5()), Gompertz (tre parametrizzazioni alternative: gompGrowth.1(), gompGrowth.2(), gompGrowth.3() decrescita esponenziale (expDecay()). Nella library aomisc sono contenute altre funzioni quali: allometrica (allometric.1()), crescita esponenziale (expoGrowth()), degradazione del primo ordine (firstOrder()), iperbole rettangolare (hyperbolic.1()), crescita logistica (tre parametrizzazioni alternative logiGrowth.1(), logiGrowth.2(), logiGrowth.3()), crescita monomolecolare (monGrowth()), equazione di Freundlich (DRCpowerCurve()), loglineare (DRClogCurve()), esponenziale negativa a due parametri (DRCnegExp()), regressione asintotica (DRCasymReg()), valori estremi (DRCextremeValue()), funzione di Hill (DRChill()), Chapman-Richard (DRCchapman()). E’possibile definire funzioni personalizzate, anche se non in modo semplice come con nls(). 5 Ricerca dell’intervallo di confidenza per la X In taluni casi, abbastanza frequenti per la verità, l’ analisi di regressione viene eseguita per stimare o predire il valore della X corrispondente ad un dato Y0 . Per esempio, la concentrazione di un erbicida nel terreno può essere determinata misurando lo sviluppo di una pianta-test allevata su di esso. In questo caso è necessario in primo luogo determinare la curva standard di risposta della pianta test allevata su terreno a concentrazione nota 5 RICERCA DELL’INTERVALLO DI CONFIDENZA PER LA X 11 e successivamente utilizzare l’ inversa della funzione di calibrazione per prevedere il valore di concentrazione di un terreno conoscendo lo sviluppo della pianta-test. Mentre è facile (con l’approssimazione lineare) stimare il limite di confidenza della Y per una data X, il problema contrario non è di facile soluzione. Esistono due strade praticabili: la riparametrizzazione del modello e l’uso della banda d’inferenza per la risposta attesa. La riparametrizzazione del modello è una scelta utile; immaginiamo un modello di cinetica del primo ordine (esponenziale decrescente): Y = a · e−k·t dove Y è la concentrazione di una sostanza, t è il tempo, a è la concentrazione iniziale mentre k è il tasso di degradazione. Nella gran parte dei casi, questo modello viene utilizzato per prevedere la ’semivita’, cioè il tempo richiesto per avere una concentrazione pari alla metà di quella iniziale (a/2 ) Se t1/2 è la semivita, si può notare che: a · exp(−k · t1/2 ) = a2 exp(−k · t1/2 ) = 12 (−k · t1/2 ) = log 12 k · t1/2 = log (2) k = log(2) t 1/2 Si può quindi pensare di riparametrizzare il modello esponenziale in questo modo: Y = a · exp(− log (2) · t) t1/2 Si possono quindi ottenere i limiti di confidenza della semivita direttamente tramite l’analisi di regressione non-lineare. La seconda strada percorribile è quella di utilizzare la banda d’inferenza della risposta attesa per un dato X (Snedecor e Cochran, 1991). La procedura è illustrata in figura e, dal punto di vista geometrico, il calcolo è chiaro: data una curva e la banda di confidenza per la Y attesa (linee tratteggiate), i limiti di confidenza per la X corrispondente ad Y = 60 sono dati dai valori corrispondenti ai punti in cui la linea orizzontale passante per Y = 60 incontra le curve che delimitano la banda d’ inferenza (0,17 e 0,21). 6 TRASFORMAZIONE DEL MODELLO 12 La soluzione numerica, immediata nel caso di regressioni lineari (vedi Bliss, 1967), non è altrettanto semplice nel caso di regressioni non lineari; una soluzione esplicita non è riportata in letteratura ed occorre quindi utilizzare metodi numerici di calcolo. Lo svantaggio di questa procedura è che i limiti di confidenza cosı̀ ottenuti non sono simmetrici. 6 Trasformazione del modello La trasformazione del modello dalla sua forma originaria in una forma alternativa può rendersi necessaria per diversi motivi: 1. il modello iniziale non presenta un buon adattamento ai dati sperimentali e l’ analisi dei residui suggerisce deviazioni sistematiche che fanno pensare alla possibilità di includere un ulteriore parametro. Per esempio nel caso in cui in una curva dose-risposta i residui sono prevalentemente positivi nella parte iniziale, facendo pensare all’ esistenza di un effetto stimolante dell’ erbicida a basse dosi. 2. Alcuni parametri non sono significativi. In questo caso è bene eliminare i parametri dal modello. Talvolta l’ eliminazione dei parametri non è possibile e quindi può essere presa in considerazione la possibilità di sostituire il parametro con un valore arbitrario determinato per esso sulla base dell’ andamento dei dati sperimentali e di conoscenze pregresse di carattere biologico. Quest’ ultima soluzione è tuttavia da considerare con attenzione e da valutare con molto buon senso; l’ inclusione di vincoli nel modello, in quanto operazione arbitraria, dovrebbe essere eseguita solo se non esistono ulteriori alternative (Streibig, 1980). 3. Alta correlazione tra i parametri. Anche in questo caso i parametri troppo correlati dovrebbero essere eliminati dal modello, considerando 7 PER APPROFONDIRE 13 che è sempre necessario utilizzare il modello più semplice tra quelli capaci di descrivere i dati in una certa situazione. Una volta che il modello è stato modificato, o in tutte le situazioni in cui più modelli possono essere impiegati per descrivere i dati sperimentali, può rendersi necessario un confronto, con il fine di valutare quale modello è preferibile adottare. In questo caso, è necessario distinguere tra modelli annidati (nested ) e non. I modelli annidati sono quelli in cui l’ uno si riduce all’ altro semplicemente uguagliando a zero uno o più parametri. In questo caso il confronto si esegue sulla base di un test di probabilità, quale un test F. Infatti, l’ esclusione di un parametro dal modello comporterà certamente un più o meno elevato incremento della devianza residua. Se RSSc è la devianza residua del modello più complesso associata a DFc gradi di libertà e se RSSi è il residuo del modello semplificato, associato a DFi gradi di libertà, l’ incremento della devianza residua dovuto all’ eliminazione dei parametri è dato da RSSi − RSSc con DFi − DFc gradi di libertà. Il rapporto tra: F(DFi −DFc );α = (RSSi −RSSc ) (DFi −DFc ) RSSc DFc ha una distribuzione F e può essere confrontato con i valori tabulati, per il prescelto livello di probabilità. Se il test non risulta significativo il modello semplificato può essere ragionevolmente accettato. Da tener presente che anche in questo caso l’ analisi risulta solamente approssimata, a causa della non-linearità intrinseca dei parametri stimati. Nel caso di modelli non nidificati, la scelta dovrebbe essere basata su considerazioni di natura biologica ed il modello più significativo in tal senso dovrebbe essere accettato. Se non esistono buone ragioni biologiche per preferire un modello all’ altro è bene scegliere il modello con la minore devianza residua e con la migliore distribuzione dei residui. 7 Per approfondire Bates D. M. e Watts D. G., 1988. Nonlinear regression analysis and its applications. John Wiley and Sons, Inc., New York, pp.365 Bliss C. I., 1967. Statistics in biology. McGraw-Hill Inc., Carrol R. J. e Ruppert D., 1988. Transformation and weighting in regression. Chapman and Hall, London Draper N. R. e Smith H., 1981. Applied regression. John Wiley and Sons, Inc., New York, 2nd ed. Gunther P., 1991. Biotests mit hoheren Pflanzen zur Untersuchung und Bewertung des Verhaltens von Sulfonylharnstoff-Herbiziden un anderen Xenobiotika im Boden. Dissertation fur des akademischen Grades eines Doktors der Gartenbauwissenschaften, University of Hannover, Hannover 7 PER APPROFONDIRE 14 Mead R. e Pike D. J., 1975. A review of response surface methodology from a biometric viewpoint. Biometrics 31, 803-851. Ratkowsky D.A., 1990. Handobook of nonlinear regression models. Marcell Dekker Inc., New York, 241 pp. Ruppert D., Cressie N. e Carrol R. J., 1989. A trasformation/weighting model for estimating Michaelis-Menten parameters. Biometrics 45, 637. Snedecor G. W. e Cochran W. G., 1991. Statistical methods. IOWA State University Press, AMES (Iowa), pp.503 Streibig J. C., 1980. Models for curve-fitting herbicide dose response data. Acta Agricolturae Scandinavica 30, 59-64.