2011-04-13 13 views
12

En primer lugar me gustaría decir que entiendo que el cálculo de un valor R^2 para una regresión no lineal no es exactamente correcto ni válido.Cálculo del valor R^2 para una regresión no lineal

Sin embargo, estoy en un período de transición de realizar la mayor parte de nuestro trabajo en SigmaPlot en R y para nuestros modelos no lineales (concentración-respuesta), los colegas están acostumbrados a ver un valor R^2 asociado con el modelo para estimar la bondad de ajuste.

SigmaPlot calcula el R^2 usando 1- (SS residual/SS total), pero en R I no parece extraer el SS total (los SS residuales se informan en forma resumida).

Cualquier ayuda para hacer que esto funcione sería muy apreciada, ya que intento y nos mueve a utilizar un mejor estimador de bondad de ajuste.

Saludos.

+0

¿Quizás math.stackexchange.com podría ofrecer más ayuda? –

+0

¿Estás usando 'fit <- nls (y ~ x); resumen (ajuste) '? – SiggyF

+0

@DiggyF - sí, exactamente eso. – sinclairjesse

Respuesta

10

En lugar de la extracción de la SS totales, I' sólo los he calculado:

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)) 

Obtengo el mismo R^2 que cuando uso SigmaPlot, por lo que todo debería ser bueno.

5

Así la variación total en la que y es igual que (n-1) * var (y) y la proporción no explicada mi modelo es sum(residuals(fit)^2) así hacer algo como 1-(sum(residuals(fit)^2)/((n-1)*var(y)) )

Cuestiones relacionadas