【发布时间】:2015-07-24 10:31:31
【问题描述】:
我是 R 编程新手。我有一个方程,并使用 R 的 nls 函数来估计一些参数(b1、b2、b3、b4、b5、b6、b7)。我有我的起始值,但不知何故我从 R 得到“奇异梯度”错误。当我改变我的一两个起始值时,它工作正常。但是我的起始值不应该因为我的研究论文而改变。我在网上做了一些研究,发现这种情况源于缺乏噪音。这是我的工作代码。有没有人知道如何在这段代码中添加噪音?谢谢。
ComputeDi.Bi <- function(hi, d, h, b1, b2, b3, b4, b5, b6, b7){
q <- hi/h
t <- 1.30/h
A <- sin(q*3.14/2)
C <- sin(t*3.14/2)
B <- log(A)/log(C)
di <- d * (B^(b1+b2*sin(3.14*q/2)+b3*cos(3*3.14*q/2)+b4*sin(3.14*q/2)/q+b5*d+b6*q*(d^0.5)+b7*q*(h^0.5)))
return(di)
}
setwd("../Data")
sylvestris <- read.csv("ScotsPine100Trees_Turkey.csv")
nlmod.fp.di <- nls(di ~ ComputeDi.Bi(hi, d, h, b1, b2, b3, b4, b5, b6, b7), data = sylvestris, start = c(b1 = 2.16, b2 = -0.070, b3 = 0.031, b4 = -0.95, b5 = 0.0001, b6 = 0.075, b7 = -0.08), control = nls.control(tol = 1e-07))
summary(nlmod.fp.di, correlation = T)
【问题讨论】:
-
我从来不知道没有噪音是一件坏事。无论如何,
jitter会增加一点噪音。 -
b1-b7 是如何计算的?它们是否共线?
标签: r regression nls