2015-07-24 6 views
1

Я новичок в программировании на R. У меня есть quation и использование nls fucntion R для оценки некоторых параметров (b1, b2, b3, b4, b5, b6, b7). У меня есть начальные значения, но почему-то я получаю ошибку «сингулярного градиента» от R. Когда я использую один или два моих стартовых значения, он отлично работает. Но мои исходные ценности не должны меняться из-за моей исследовательской работы. Я занимаюсь некоторыми исследованиями в Интернете и выяснил, что эта ситуация возникла из-за отсутствия шума. Вот мой рабочий код. Кто-нибудь знает, как добавить шум к этому коду? Благодарю.Как добавить шум в 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)        
+0

Я никогда не слышал, чтобы шум был плохим. Несмотря на это, «jitter» добавит немного шума. –

+0

Как были рассчитаны b1-b7? Они вообще коллинеарны? – JJFord3

ответ

0

rnorm даст вам шум от нормального распределения. Например:

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

runif, rpois, rbinom и многое другое, также доступны.

Я не уверен, что это то, что вы хотите сделать здесь, хотя ... Возможно, я не понимаю ваш вопрос, но если у вас еще нет шума, тогда их не нужно подбирать статистическую модель.

 Смежные вопросы

  • Нет связанных вопросов^_^