Подгонка простой степенной функции в 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.