如何在R中添加噪音

How to add noise in R

我是 R 编程新手。我有一个方程式并使用 R 的 nls 函数来估计一些参数(b1、b2、b3、b4、b5、b6、b7)。我有我的起始值,但不知何故我从 R 得到了 "singular gradient" 错误。当我改变一个或两个我的起始值时,它工作正常。但是我的起始值不应该因为我的研究论文而改变。我在网上做了一些研究,发现这种情况是由于缺乏噪音引起的。这是我的工作代码。有人知道如何给这段代码添加噪音吗?谢谢

    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)                            

rnorm 会给你正态分布的噪音。例如:

ComputeDi.Bi(hi, d, h, b1, b2, b3, b4, b5, b6, b7) + rnorm(length(hi), mean = 0, sd = 0.1)

runifrpoisrbinom 等等。

虽然我不确定这就是您想在这里做的...我可能不理解您的问题,但是如果您还没有噪音,那么就不需要拟合统计模型。