#r #statistics #regression #non-linear-regression
#r #Статистика #регрессия #нелинейная регрессия
Вопрос:
Сначала я хотел бы сказать, что я понимаю, что вычисление значения R ^ 2 для нелинейной регрессии не совсем корректно или допустимо, что нужно делать.
Тем не менее, я нахожусь в переходном периоде выполнения большей части нашей работы в SigmaPlot к R, и для наших нелинейных моделей (концентрация-реакция) коллеги привыкли видеть значение R ^ 2, связанное с моделью, для оценки соответствия.
SigmaPlot вычисляет R ^ 2, используя 1-(остаточный SS / общий SS), но в R я, похоже, не могу извлечь общий SS (остаточные SS указаны в сводке).
Любая помощь в том, чтобы заставить это работать, была бы очень признательна, поскольку я пытаюсь подтолкнуть нас к использованию лучшей оценки соответствия.
Приветствия.
Комментарии:
1. Возможно math.stackexchange.com могли бы вы предложить дополнительную помощь?
2. Используете ли вы
fit <- nls(y ~x); summary(fit)
?3. @DiggyF — да, именно так.
4. Здесь есть старое обсуждение этого: stat.ethz.ch/pipermail/r-help/2002-July/023461.html
5. @aule Вы должны опубликовать свой ответ в поле для ответов. Поставьте себе небольшую галочку 🙂
Ответ №1:
Вместо извлечения общего SS, я просто их вычислил:
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, так что все должно быть хорошо.
Ответ №2:
Таким образом, общее изменение y равно (n-1) * var (y), а пропорция, не объясненная моей вашей моделью, sum(residuals(fit)^2)
поэтому сделайте что-то вроде 1-(sum(residuals(fit)^2)/((n-1)*var(y)) )