Подгонка простой степенной функции в R

Я хочу использовать степенную функцию в классической зависимости площади поверхности от объема.

surfaceArea<-c(6,24,54)
volume<-c(1,8,27)

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

logSurfaceArea<-log10(surfaceArea)
logVolume<-log10(volume)

plot(logSurfaceArea~logVolume, pch =16)
allometryModel <-lm(logSurfaceArea~logVolume)
summary(allometryModel)

Но как мне получить значения параметров для исходной степенной функции?

1 ответ

Один из способов сделать это - использовать математическое мышление. Скажем, у - это SurfaceArea, а х - это объем, то, что вы подгоняете с помощью функции lm:

log10 (y) = a * log10 (x) + b,

затем

y = 10 ^ (a * log10 (x) + b) = 10 ^ (a * log10 (x)) * 10 ^ b = (10 ^ (log10 (x))) ^ a * 10 ^ b = x ^ a * 10 ^ b

Вы можете проверить это построение этих графиков:

 plot(volume, volume^allometryModel$coeff[2]*10.0^allometryModel$coeff[1], col="red")
 plot(volume, surfaceArea)

Обратите внимание, что вам нужно правильно распространять ошибки, если вы хотите использовать коэффициент ошибок, предоставленный функцией lm.

Другие вопросы по тегам