【问题标题】:R - How to find 1/e in an exponential decay model?R - 如何在指数衰减模型中找到 1/e?
【发布时间】:2020-07-05 00:10:37
【问题描述】:

我正在使用近 1500 个雨量计进行每日降水测量。我计算了每个站点的测量值与其 20 个最近邻居之间的相关性。我也有车站之间的距离。

我现在正试图从生成的相关矩阵中找到相关衰减距离 (CDD)。 CDD 定义为一个站点与所有其他站点之间的相关性衰减到 1/e 以下的距离。 我在关注Hofstra and New对CDD的计算:

具体来说,我正在尝试重现他们的图 2:

基于this 的帖子,我的第一次尝试是使用SSasymp 为我的数据拟合一个自启动指数衰减函数。这是我目前所拥有的:

library(data.table)

# load data
dat <- fread("https://www.dropbox.com/s/jgo5b91owpllbq3/cor_vs_dist.csv?dl=1", sep=",") # ~ 465 KB

# visually inspect it
plot(correl ~ dist, data=dat)

# fit a model using SSasymp
fit <- nls(correl ~ SSasymp(dist, Asym, R0, lrc), data=dat)
summary(fit)
coef(fit)
lines(dat$correl, predict(fit), col="red")

但是,合身性非常差:

所以我的问题是:

  1. 如何将更好的 指数衰减模型拟合到我的数据中?
  2. 模型拟合后,如何确定参考论文中的1/e 值?

任何意见都非常感谢!

【问题讨论】:

  • 您好,这似乎是Cross Validated 的问题,而不是stackoverflow。也许你会有更好的机会在那里得到答案

标签: r statistics regression data-modeling nls


【解决方案1】:

你的配合还不错,你只是以错误的方式绘制预测,使用correl而不是dist作为x轴。

此外,与其预测和绘制数据集中dist 的每个唯一值,不如预测和绘制dist 的一系列值。

这是一个干净的情节:

plot(correl ~ dist, data=dat)
lines(0:1000, predict(fit, newdata = data.frame(dist = 0:1000)), col="red")

【讨论】:

  • 很好,感谢您收听!但我仍然认为它不适合。我想调整这条线,让它从更接近 1 而不是 0.3 开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多