代码之家  ›  专栏  ›  技术社区  ›  Onur Alkan

如何在R中添加噪声

  •  2
  • Onur Alkan  · 技术社区  · 11 年前

    我是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)                            
    
    1 回复  |  直到 11 年前
        1
  •  2
  •   Mhairi McNeill    6 年前

    rnorm 将给出正态分布的噪声。例如:

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

    runif , rpois , rbinom 还有更多可用的。

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