R で loess 回帰を実行する方法 (例あり)


LOESS 回帰 は、ローカル回帰とも呼ばれ、ローカル調整を使用して回帰モデルを一連のデータに適合させる方法です。

次のステップバイステップの例は、R で LOESS 回帰を実行する方法を示しています。

ステップ 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()関数を使用すると、 spanパラメーターに異なる値を使用して、複数の 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 フォールド相互検証を使用して最適なモデルを見つける

使用する最適なエクステント値を見つけるには、 caretパッケージの関数を使用してk 分割相互検証を実行できます。

 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 回帰モデルでは、 loess()関数のspain引数に値0.7を使用することを選択します。

追加リソース

次のチュートリアルでは、R の回帰モデルに関する追加情報を提供します。

R で単純な線形回帰を実行する方法
R で重回帰を実行する方法
R でロジスティック回帰を実行する方法
R で分位回帰を実行する方法
R で重み付き回帰を実行する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です