2011-04-13 12 views
12

Vorrei innanzitutto dire che ho capito che il calcolo di un valore R^2 per una regressione non lineare non è esattamente corretto o una cosa valida da fare.Calcolo del valore R^2 per una regressione non lineare

Tuttavia, sono in un periodo di transizione di esecuzione della maggior parte del nostro lavoro in SigmaPlot oltre a R e per i nostri modelli non lineari (concentrazione-risposta), i colleghi sono abituati a vedere un valore R^2 associato al modello per valutare la bontà dell'adattamento.

SigmaPlot calcola l'R^2 utilizzando 1- (SS residui/SS totali), ma in R non riesco a estrarre il totale SS (i SS residui sono riportati in sommario).

Qualsiasi aiuto per far funzionare tutto questo sarebbe molto apprezzato mentre cerco di indurmi a utilizzare un migliore stimatore di bontà.

Cheers.

+0

Forse math.stackexchange.com potrebbe essere in grado di offrire maggiore assistenza? –

+0

Stai usando 'fit <- nls (y ~ x); riassunto (in forma) '? – SiggyF

+0

@DiggyF - sì, esattamente quello. – sinclairjesse

risposta

10

Invece di estrarre il totale SS, I' li ho appena calcolati:

test.mdl <- nls(ctrl.adj~a/(1((conc.calc/x0)^b)), 
       data=dataSet, 
       start=list(a=100,b=10,x0=40), trace=T); 

1 - (deviance(test.mdl)/sum((ctrl.adj-mean(ctrl.adj))^2)) 

Ottengo lo stesso R^2 come quando si utilizza SigmaPlot, quindi tutto dovrebbe essere buono.

5

Quindi la variazione totale y è come (n-1) * var (Y) e la proporzione non spiegato la mia il vostro modello è sum(residuals(fit)^2) modo fare qualcosa di simile 1-(sum(residuals(fit)^2)/((n-1)*var(y)) )