【问题标题】:Fitting a simple power law function in R在 R 中拟合一个简单的幂律函数
【发布时间】:2016-02-17 11:26:52
【问题描述】:

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

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)

但是如何获取原始幂函数的参数值呢?

【问题讨论】:

  • 您从S = k * V^alpha 的模型开始,然后选择log,您将得到logS = log k + alpha*log V。这是您在 allometryModel 对象中评估的线性模型。如您所见,截距是log k 所以k = exp(intercept)alpha 系数是logVolume 系数。

标签: r regression power-law


【解决方案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 函数提供的系数误差,则需要正确传播误差。

【讨论】:

  • 所以绘制幂律函数是一种相当迂回的方法。我可以设置它以便从该模型中提取系数吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-04
  • 1970-01-01
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 2014-02-27
相关资源
最近更新 更多