【发布时间】:2019-02-16 02:09:01
【问题描述】:
我读到了关于使用日志作为创建线性方程的替代方法,以便我可以从 R 中的线性方程中提取 nls 拟合的起始值; 因此,
对于等式: Y=q/(1+bDX)^(1/b) 其中 Y 和 X 是我的数据; q,b,D 是我要估计的参数。我创建了线性模型:
X<-1:45
Y <- c(35326L, 30339L, 23379L, 21877L, 18629L, 17627L, 15691L, 15435L,
14205L, 11732L, 10560L, 10592L, 9939L, 7491L, 4928L, 3427L, 8123L,
9027L, 8733L, 9599L, 8737L, 9135L, 8548L, 7279L, 8940L, 8459L,
8460L, 7700L, 6817L, 7167L, 7089L, 7091L, 7538L, 9206L, 9680L,
5876L, 7799L, 8384L, 10586L, 8623L, 7848L, 5534L, 6610L, 6539L,
6650L)
lmodel <- coef(lm(log(Y)~X+I(X^2)))
q0 <- exp(lmodel[1])
D0 <- -lmodel[2]
b0 <- lmodel[3]*2/D0^2
Start1=list(q=q0,b=b0,D=D0)
theta_hat2 <- nls(y~q*(1+b*D*x)^(-1/b),start=Start1)
这每次都能为我提供所需的结果。但是,我想将 nls 拟合到下面提到的其他一些对我来说相当困难的方程。如果有人可以帮助我制作一个适合这些的线性模型,我将不胜感激。
等式 2:
Y=q*(-D+(b/n)*X^n here q,b,D,n are to be estimated.
等式 3:
Y=q*exp(-(X/D)^b here q,b,D are to be estimated.
等式 4:
Y=q*X^((-b) )*exp(D/((1-b) )*(X^(1-b)-1) here q,b,D are to be estimated.
我正在附加此问题的示例数据集here:
【问题讨论】:
-
您好,欢迎来到 StackOverflow! 我认为您可能会从 really good tutorial 在这里提问中受益。考虑在阅读教程后编辑你的问题,我认为你会更成功地获得答案。您的标题应该提出一个明确的问题。 祝你好运!
-
线性化方程是帮助找到非线性求解器的初始参数估计值的一种有用方法,但由于并非所有方程都可以轻松线性化,因此值得研究确定这些估计值的其他方法。当用于此目的时,我个人在差分进化遗传算法方面取得了很好的成功。
-
@JamesPhillips 你能分享一个链接或建议我在哪里可以尝试使用差分进化遗传算法?谢谢!
-
对于 R,在cran.r-project.org/web/packages/DEoptim/index.html尝试 DEOptim 包
-
@JamesPhillips 仍在努力弄清楚如何做。你能否给我看一个 eq 的例子:Y=q*exp(-(X/tau)^n)。在这里尝试估计 q、tau 和 n。下=c(100,0.01,5) 和上=c(100000,5,10)
标签: r transform linear-regression nls