Расчет значения R ^ 2 для нелинейной регрессии - PullRequest
12 голосов
/ 14 апреля 2011

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

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

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

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

Приветствие.

Ответы [ 2 ]

10 голосов
/ 15 апреля 2011

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

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 голосов
/ 15 апреля 2011

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

...