在R中拟合简单的幂律函数

时间:2016-02-17 11:26:52

标签: r regression power-law

我想在经典表面区域与体积关系上使用幂函数。

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 个答案:

答案 0 :(得分:1)

一种方法是使用数学思维方式。让我们说 y 是surfaceArea而 x 是音量,那么你对 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 功能提供的系数误差,则需要正确传播错误。