我有一个数据应遵循幂律分布 .
x = distance
y = %
我想创建一个模型并将拟合的线添加到我的情节中 .
我的目标是重新创建这样的东西:
作者使用R-square;我假设他们应用了 linear 模型,因为R ^ 2是 not suitable for non-linear models . http://blog.minitab.com/blog/adventures-in-statistics-2/why-is-there-no-r-squared-for-nonlinear-regression
但是,我无法找到如何"curve"我的线到点;如何将公式 y ~ a*x^(-b)
添加到我的模型中 .
而不是卷曲线,我从简单的线性回归中得到了回归 .
我的问题是:
-
我是否正确地假设作者使用的模型
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)
这是我第一次模特儿,所以我很困惑,我不知道从哪里开始...谢谢你的任何建议或指示,我真的很感激...
2 回答
我个人认为这个问题是一个骗局:
nls
fails to estimate parameters of my model但如果我关闭它,我将会冷血(因为OP提出了赏金) . 无论如何,赏金问题无法结束 .所以我能想到的最好的就是发布一个社区wiki答案(我不想得到这个赏金) .
如果您想要拟合此形式
y ~ a*x^(-b)
的模型,通常可以从两侧进行log
变换并拟合线性模型log(y) ~ log(x)
.正如您已经知道如何使用
curve
绘制回归曲线并对它感到满意,我现在将展示如何制作情节 .有些人称之为log-log回归 . 以下是我对此类回归的一些其他链接:
How to predict a new value using simple linear regression log(y)=b0+b1*log(x)
How to plot confidence bands for my weighted log-log linear regression?