आर में ऑप्टिम फ़ंक्शन का उपयोग कैसे करें (2 उदाहरण)


आप सामान्य अनुकूलन के लिए आर में ऑप्टिम फ़ंक्शन का उपयोग कर सकते हैं।

यह फ़ंक्शन निम्नलिखित मूल सिंटैक्स का उपयोग करता है:

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

सोना:

  • द्वारा : अनुकूलित किए जाने वाले मापदंडों के प्रारंभिक मान
  • एफएन : न्यूनतम या अधिकतम करने के लिए एक फ़ंक्शन
  • डेटा : आर में ऑब्जेक्ट का नाम जिसमें डेटा है

निम्नलिखित उदाहरण दिखाते हैं कि निम्नलिखित परिदृश्यों में इस फ़ंक्शन का उपयोग कैसे करें:

1. एक रेखीय प्रतिगमन मॉडल के गुणांक ज्ञात कीजिए।

2. द्विघात समाश्रयण मॉडल के गुणांक ज्ञात कीजिए।

चल दर!

उदाहरण 1: एक रेखीय प्रतिगमन मॉडल के लिए गुणांक ढूँढना

निम्नलिखित कोड दिखाता है कि वर्गों के अवशिष्ट योग को कम करके रैखिक प्रतिगमन मॉडल के गुणांक को खोजने के लिए ऑप्टिम() फ़ंक्शन का उपयोग कैसे करें:

 #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

हम प्रतिगमन गुणांक की गणना करने के लिए आर में अंतर्निहित एलएम() फ़ंक्शन का उपयोग करके सत्यापित कर सकते हैं कि यह सही है:

 #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

ये गुणांक मान उन मानों से मेल खाते हैं जिनकी गणना हमने ऑप्टिम() फ़ंक्शन का उपयोग करके की है।

उदाहरण 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 के अंतर्गत दिए गए मानों का उपयोग करके, हम निम्नलिखित फिटेड द्विघात प्रतिगमन मॉडल लिख सकते हैं:

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

ये गुणांक मान उन मानों से मेल खाते हैं जिनकी गणना हमने ऑप्टिम() फ़ंक्शन का उपयोग करके की है।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य ऑपरेशन कैसे करें:

आर में सरल रैखिक प्रतिगमन कैसे करें
आर में मल्टीपल लीनियर रिग्रेशन कैसे करें
आर में प्रतिगमन आउटपुट की व्याख्या कैसे करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *