كيفية تنفيذ انحدار loess في r (مع مثال)


انحدار LOESS ، الذي يُطلق عليه أحيانًا الانحدار المحلي، هو أسلوب يستخدم التعديل المحلي لملاءمة نموذج الانحدار مع مجموعة من البيانات.

يوضح المثال التالي خطوة بخطوة كيفية إجراء انحدار LOESS في R.

الخطوة 1: إنشاء البيانات

أولاً، لنقم بإنشاء إطار البيانات التالي في R:

 #view DataFrame
df <- data. frame (x=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14),
                 y=c(1, 4, 7, 13, 19, 24, 20, 15, 13, 11, 15, 18, 22, 27))

#view first six rows of data frame
head(df)

  xy
1 1 1
2 2 4
3 3 7
4 4 13
5 5 19
6 6 24

الخطوة 2: تناسب نماذج انحدار LOESS المتعددة

يمكننا استخدام الدالة loess() لملاءمة نماذج انحدار LOESS المتعددة لمجموعة البيانات هذه، باستخدام قيم مختلفة لمعلمة الامتداد :

 #fit several LOESS regression models to dataset
loess50 <- loess(y ~ x, data=df, span= .5 )
smooth50 <- predict(loess50) 

loess75 <- loess(y ~ x, data=df, span= .75 )
smooth75 <- predict(loess75) 

loess90 <- loess(y ~ x, data=df, span= .9 )
smooth90 <- predict(loess90) 

#create scatterplot with each regression line overlaid
plot(df$x, df$y, pch= 19 , main=' Loess Regression Models ')
lines(smooth50, x=df$x, col=' red ')
lines(smooth75, x=df$x, col=' purple ')
lines(smooth90, x=df$x, col=' blue ')
legend(' bottomright ', legend=c(' .5 ', ' .75 ', ' .9 '),
        col=c(' red ', ' purple ', ' blue '), pch= 19 , title=' Smoothing Span ')

انحدار اللوس في R

لاحظ أنه كلما انخفضت القيمة التي نستخدمها للنطاق ، كلما كان نموذج الانحدار أقل “سلاسة” وكلما حاول النموذج ملاءمة نقاط البيانات.

الخطوة 3: استخدم التحقق المتقاطع من K-Fold للعثور على أفضل نموذج

للعثور على قيمة المدى الأمثل للاستخدام، يمكننا إجراء التحقق من صحة k-fold باستخدام الوظائف الموجودة في حزمة علامة الإقحام :

 library (caret)

#define k-fold cross validation method
ctrl <- trainControl(method = " cv ", number = 5 )
grid <- expand. grid (span = seq( 0.5 , 0.9 , len = 5 ), degree = 1 )

#perform cross-validation using smoothing spans ranging from 0.5 to 0.9
model <- train(y ~ x, data = df, method = " gamLoess ", tuneGrid=grid, trControl = ctrl)

#print results of k-fold cross-validation
print (model)

14 samples
 1 predictor

No pre-processing
Resampling: Cross-Validated (5 fold) 
Summary of sample sizes: 12, 11, 11, 11, 11 
Resampling results across tuning parameters:

  span RMSE Rsquared MAE      
  0.5 10.148315 0.9570137 6.467066
  0.6 7.854113 0.9350278 5.343473
  0.7 6.113610 0.8150066 4.769545
  0.8 17.814105 0.8202561 11.875943
  0.9 26.705626 0.7384931 17.304833

Tuning parameter 'degree' was held constant at a value of 1
RMSE was used to select the optimal model using the smallest value.
The final values used for the model were span = 0.7 and degree = 1.

يمكننا أن نرى أن قيمة الامتداد التي أنتجت أقل قيمة لجذر متوسط مربع الخطأ (RMSE) هي 0.7 .

لذا، بالنسبة لنموذج انحدار LOESS النهائي الخاص بنا، سنختار استخدام قيمة 0.7 للوسيطة span في دالة loess() .

مصادر إضافية

توفر البرامج التعليمية التالية معلومات إضافية حول نماذج الانحدار في R:

كيفية إجراء الانحدار الخطي البسيط في R
كيفية إجراء الانحدار الخطي المتعدد في R
كيفية إجراء الانحدار اللوجستي في R
كيفية إجراء الانحدار الكمي في R
كيفية إجراء الانحدار المرجح في R

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *