R에서 optim 함수를 사용하는 방법(예제 2개)


일반적인 최적화를 위해 R의 optim 함수를 사용할 수 있습니다.

이 함수는 다음 기본 구문을 사용합니다.

 optim(by, fn, data, ...)

금:

  • by : 최적화할 매개변수의 초기값
  • fn : 최소화하거나 최대화하는 함수
  • data : 데이터를 포함하는 R의 객체 이름

다음 예에서는 다음 시나리오에서 이 기능을 사용하는 방법을 보여줍니다.

1. 선형 회귀 모델의 계수를 찾습니다.

2. 2차 회귀 모델의 계수를 찾습니다.

갑시다!

예 1: 선형 회귀 모델의 계수 찾기

다음 코드는 optim() 함수를 사용하여 잔차 제곱합을 최소화하여 선형 회귀 모델의 계수를 찾는 방법을 보여줍니다.

 #create data frame
df <- data.frame(x=c(1, 3, 3, 5, 6, 7, 9, 12),
                 y=c(4, 5, 8, 6, 9, 10, 13, 17))

#define function to minimize residual sum of squares
min_residuals <- function (data, par) {
                   with (data, sum((par[1] + par[2] * x - y)^2))
}

#find coefficients of linear regression model
optim(par=c(0, 1), fn=min_residuals, data=df)

$by
[1] 2.318592 1.162012

$value
[1] 11.15084

$counts
function gradient 
      79 NA 

$convergence
[1] 0

$message
NULL

$par 아래에 반환된 값을 사용하여 다음과 같은 적합 선형 회귀 모델을 작성할 수 있습니다.

y = 2.318 + 1.162x

회귀 계수를 계산하기 위해 R에 내장된 lm() 함수를 사용하여 이것이 올바른지 확인할 수 있습니다.

 #find coefficients of linear regression model using lm() function
lm(y ~ x, data=df)

Call:
lm(formula = y ~ x, data = df)

Coefficients:
(Intercept) x  
      2,318 1,162

이 계수 값은 optim() 함수를 사용하여 계산한 값과 일치합니다.

예 2: 2차 회귀 모델의 계수 찾기

다음 코드는 optim() 함수를 사용하여 잔차 제곱합을 최소화하여 2차 회귀 모델 의 계수를 찾는 방법을 보여줍니다.

 #create data frame
df <- data. frame (x=c(6, 9, 12, 14, 30, 35, 40, 47, 51, 55, 60),
                 y=c(14, 28, 50, 70, 89, 94, 90, 75, 59, 44, 27))

#define function to minimize residual sum of squares
min_residuals <- function (data, par) {
                   with (data, sum((par[1] + par[2]*x + par[3]*x^2 - y)^2))
}

#find coefficients of quadratic regression model
optim(par=c(0, 0, 0), fn=min_residuals, data=df)

$by
[1] -18.261320 6.744531 -0.101201

$value
[1] 309.3412

$counts
function gradient 
     218 NA 

$convergence
[1] 0

$message
NULL

$par 아래에 반환된 값을 사용하여 다음과 같은 적합 2차 회귀 모델을 작성할 수 있습니다.

y = -18.261 + 6.744x – 0.101x 2

R에 내장된 lm() 함수를 사용하여 이것이 올바른지 확인할 수 있습니다.

 #create data frame
df <- data. frame (x=c(6, 9, 12, 14, 30, 35, 40, 47, 51, 55, 60),
                 y=c(14, 28, 50, 70, 89, 94, 90, 75, 59, 44, 27))

#create a new variable for x^2
df$x2 <- df$x^2

#fit quadratic regression model
quadraticModel <- lm(y ~ x + x2, data=df)

#display coefficients of quadratic regression model
summary(quadraticModel)$coef

               Estimate Std. Error t value Pr(>|t|)
(Intercept) -18.2536400 6.185069026 -2.951243 1.839072e-02
x 6.7443581 0.485515334 13.891133 6.978849e-07
x2 -0.1011996 0.007460089 -13.565470 8.378822e-07

이 계수 값은 optim() 함수를 사용하여 계산한 값과 일치합니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

R에서 단순 선형 회귀를 수행하는 방법
R에서 다중 선형 회귀를 수행하는 방법
R에서 회귀 출력을 해석하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다