2011-04-13 5 views
12

Прежде всего я хотел бы сказать, что я понимаю, что вычисление значения R^2 для нелинейной регрессии является не совсем правильным или действительным.Расчет значения R^2 для нелинейной регрессии

Однако, я нахожусь в переходный период выполнения большей части нашей работы в SigmaPlot до R и для наших нелинейных моделей (концентрация-реакция), коллеги используются для получения значения R^2, связанного с модель для оценки добросовестности.

SigmaPlot рассчитывает R^2, используя 1- (остаточный SS/общий SS), но в R я не могу извлечь общую SS (остаточные SS сообщаются в резюме).

Любая помощь в получении этого для работы была бы очень признательна, поскольку я стараюсь и побуждаю нас использовать лучшую оценку доброты.

Cheers.

+0

Возможно, math.stackexchange.com может оказать дополнительную помощь? –

+0

Используете ли вы 'fit <- nls (y ~ x); Резюме (подходит) '? – SiggyF

+0

@ DiggyF - да, именно это. – sinclairjesse

ответ

10

Вместо извлечения общих СС, я они только что рассчитали их:

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

Я получаю тот же R^2, что и при использовании SigmaPlot, поэтому все должно быть хорошо.

5

Таким образом, общее изменение у, как (п-1) * вар (у), а доля не объяснили свою модель является sum(residuals(fit)^2) так сделать что-то вроде 1-(sum(residuals(fit)^2)/((n-1)*var(y)) )