在Microsoft R中,优化返回的结果不可重现

时间:2017-05-06 15:00:40

标签: r optimization intel-mkl non-linear-regression microsoft-r

我正在使用Microsoft版本或R上的minpack.lm包运行非线性最小方块。但是,对于每个复制,使用相同的数据,输出会有所不同。事实上,我的兴趣在于第二个参数,然而,即使它有一些变化。 Base nlminb将返回相同的尴尬输出。

如果我使用R的CRAN版本,结果是可重现的。

可重复的例子:

library(minpack.lm)

df_ss <- read.csv("example.csv")

objective <- function(start, data_ss = df_ss) {

  beta_const <- start[1]
  beta_1 <- start[2:2]
  beta_poly <- start[-(1:2)]


  poly_df <- with(data_ss, cbind((var5 - var4 * beta_1)))
  poly_df <- poly(poly_df, degree = 2, raw = TRUE)


  poly_df <- poly_df %*% diag(beta_poly, nrow = length(beta_poly))


  lp2 <- qr(cbind(const = 1 * beta_const, poly_df))
  lp2 <- with(data_ss, qr.resid(lp2, y_ss - data_ss$var4 * beta_1))

  return(lp2)
}

start <- rep(0, 4)

ss_reg <- nls.lm(par = start, fn = objective)
print(ss_reg$par)
#2.227202e-06 -1.660069e-01  4.659955e-07  2.169863e-07

ss_reg <- nls.lm(par = start, fn = objective)
print(ss_reg$par)
#-1.022907e-06 -1.658407e-01  4.678488e-08  9.447334e-07    

ss_reg <- nls.lm(par = start, fn = objective)
print(ss_reg$par)
#1.911939e-06 -1.658408e-01  2.513519e-07 -2.140628e-07

ss_reg <- nls.lm(par = start, fn = objective)
print(ss_reg$par)
#-5.765922e-07 -1.658408e-01  3.606956e-07  5.372434e-07

使用的数据是here

我做错了吗?

0 个答案:

没有答案