optim Function in R

optim Function in R, we will explore how to apply a general-purpose optimization using the optim function in R programming language.

We will create example data and then demonstrate the usage of the optim function to minimize the residual sum of squares.

optim Function in R

First, let’s create the example data we will use for this tutorial:

# Set a random seed for reproducibility
set.seed(123)

# Create random data
x <- rnorm(500)
y <- rnorm(500) + 0.7 * x

# Combine x and y into a data frame
data <- data.frame(x, y)

# Print the head of the data
head(data)

This code generates a data frame with two numeric variables, x and y.

        x          y
1 -0.56047565 -0.9942258
2 -0.23017749 -1.1548228
3 1.55870831 2.1178809
4 0.07050839 0.8004172
5 0.12928774 -1.4186651
6 1.71506499 1.1053980

Example: Applying optim Function in R

Now, let’s apply the optim function to minimize the residual sum of squares. We will manually create a function for this purpose:

# Manually create a function for residual sum of squares
optm_function <- function(data, par) {
with(data, sum((par[1] + par[2] * x - y)^2))
}

Next, we can use the optim function as shown below.

The par argument specifies the initial values for the parameters to be optimized over, the fn argument specifies our function, and the data argument specifies our data frame.

We store the output of the optim function in the optim_output object:

# Applying optim
optim_output <- optim(par = c(0, 1),
fn = optm_function,
data = data)

Finally, we can visualize our results in a plot. We will compare the results of the optim function with those of a conventional linear model provided by the lm function:

# Set plot parameters
par(mfrow = c(1, 2))

# Plot results of the optim function
plot(data$x, data$y, main = "optim Function")
abline(optim_output$par[1], optim_output$par[2], col = "red")

# Plot results of the lm function
plot(data$x, data$y, main = "lm Function")
abline(lm(y ~ x, data), col = "green")

The resulting plot (Figure 1) should show that both the optim and lm functions returned the same result, indicating that our manual optimization using the optim.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

13 − ten =