簡體   English   中英

如何從lm.fit傳遞到R中的優化?

[英]How to pass from lm.fit to optim in R?

我正在使用函數進行線性回歸,並且工作正常。

fun <- function(x1, x2, y) {

但是現在我有了一個非線性方程,因此我想在上面的Fun使用optim而不是lm.fit

優化函數在這里:

  f <- function(p){
      sum((y - (p[1]*x1+p[2]*x2+p[3])^p[4]+p[5])^2)
                  }

  p <- optim(rep(.5, 5), f)$par

請問如何在第一個中實現此功能? 並刪除lm.fit

如果您決定使用optim ,則可以嘗試以下方法:

make.fun <- function(x1,x2,y,n.keep=3) {
  keep <- !(is.na(x1) | is.na(x2) | is.na(y))
  if (sum(keep)<n.keep) return()
  function(p){
    sum((y - (p[1]*x1+p[2]*x2+p[3])^p[4]+p[5])^2)
  }
}

f <- make.fun(x1,x2,y)
p <- if (is.null(f)) rep(NA,5) else optim(rep(.5,5),f)$par

在這里, make.fun測試是否有足夠完整的行,如果是,則返回要最小化的函數。 該函數在其環境中將已經具有x1x2y ,因此僅需要p作為輸入,這對於optim方便使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM