R:将曲线拟合到点:使用什么线性/非线性模型?

标签 r plot statistics glm

我有一个数据应该遵循幂律分布。

x = distance 
y = %

我想创建一个模型并将拟合线添加到我的绘图中。

我的目标是重新创建这样的东西:enter image description here

作者使用 R 方;我假设他们应用了线性模型,因为 R^2 不适合非线性模型http://blog.minitab.com/blog/adventures-in-statistics-2/why-is-there-no-r-squared-for-nonlinear-regression

但是,我不知道如何将我的线“弯曲”到点;如何将公式 y ~ a*x^(-b) 添加到我的模型中。

我得到的不是简单线性回归的曲线,而是曲线。 enter image description here

我的问题是:

  • 我是否正确地假设作者使用的模型 y ~ a*x^(-b) 是线性的?
  • 使用什么类型的模型来重新创建我的示例:lm、glm、nls 等?

我生成了虚拟数据,包括上图中应用的幂律公式:

set.seed(42)
scatt<-runif(10)

x<-seq(1, 1000, 100)
b = 1.8411
a = 133093
y = a*x^(-b) + scatt  # add some variability in my dependent variable

plot(y ~ x)

并尝试创建一个glm模型。

# formula for non-linear model
m<-m.glm<-glm(y ~ x^2, data = dat) # 

# add predicted line to plot
lines(x,predict(m),col="red",lty=2,lwd=3)

这是我第一次做模特,所以我真的很困惑,我不知道从哪里开始......谢谢你的任何建议或指导,我真的很感激......

最佳答案

我个人认为这个问题是一个骗局:`nls` fails to estimate parameters of my model但如果我关闭它,我会变得冷血(因为OP悬赏)。无论如何,赏金问题无法关闭。

所以我能想到的最好的办法就是发布社区维基答案(我不想得到这个赏金)。

当您想要拟合这种形式的模型 y ~ a*x^(-b) 时,它通常受益​​于在两侧进行 log 变换并拟合线性模型log(y) ~ log(x)

fit <- lm(log(y) ~ log(x))

由于您已经知道如何使用curve来绘制回归曲线并且对此感到满意,所以我现在将展示如何制作绘图。

有些人称之为双对数回归。以下是我针对此类回归提供的一些其他链接:

关于R:将曲线拟合到点:使用什么线性/非线性模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44669339/

相关文章:

r - 在 R 中使用逻辑 grep 抓取文本

r - 在多个日期范围之间过滤

r - 制作随机数矩阵

R中mtext的相对位置

python - 给定 3d 点绘制 3d 表面的最简单方法

r - 如何绘制不同长度的向量列表?

r - 按元素长度对列表进行排序

python - 使用 Python 库的多元多重回归

algorithm - 我如何计算准确度?

python - 使用 statsmodels 进行最大似然估计会使事情变得过于复杂?希望大家推荐