備忘録的なメモです。
多項式回帰分析の方法。
使うデータフレームは、Rの標準データの、
DNase
です。
データの読み込み
#データの読み込み
DF <- DNase
まずは、次のような2次式を回帰式とした場合、
y = b_0 + b_1x_1 + b_2x_1^2
\\
この場合は、こんなスクリプト。
LM2a <- lm(density ~ conc + I(conc^2), data = DF)
あるいは、こんな書き方でもいける。
LM2b <- lm(density ~ poly(conc, degree = 2, raw = TRUE), data = DF)
**coefficients()**で回帰係数を確認すると、
#回帰係数を確認
coefficients(LM2a)
coefficients(LM2b)
> #回帰係数を確認
> coefficients(LM2a)
(Intercept) conc I(conc^2)
0.12197753 0.31807970 -0.01501489
> coefficients(LM2b)
(Intercept) poly(conc, degree = 2, raw = TRUE)1 poly(conc, degree = 2, raw = TRUE)2
0.12197753 0.31807970 -0.01501489
続いて、次のような3次式を回帰式とした場合、
y = b_0 + b_1x_1 + b_2x_1^2 + b_3x_1^3
\\
こんなスクリプト。
LM3a <- lm(density ~ conc + I(conc^2) + I(conc^3), data = DF)
あるいは、
LM3b <- lm(density ~ poly(conc, degree = 3, raw = TRUE), data = DF)
**coefficients()**で回帰係数を確認すると、
coefficients(LM3a)
coefficients(LM3b)
> coefficients(LM3a)
(Intercept) conc I(conc^2) I(conc^3)
0.05779811 0.46110796 -0.05173350 0.00206439
> coefficients(LM3b)
(Intercept) poly(conc, degree = 3, raw = TRUE)1 poly(conc, degree = 3, raw = TRUE)2
0.05779811 0.46110796 -0.05173350
poly(conc, degree = 3, raw = TRUE)3
0.00206439
こんな感じで多項式回帰分析をやります。
#最終的なスクリプト
#Rをきれいにする
rm(list = ls())
#データの読み込み
DF <- DNase
#回帰分析(二次式)
LM2a <- lm(density ~ conc + I(conc^2), data = DF)
LM2b <- lm(density ~ poly(conc, degree = 2, raw = TRUE), data = DF)
#回帰係数を確認(二次式)
coefficients(LM2a)
coefficients(LM2b)
#回帰分析(三次式)
LM3a <- lm(density ~ conc + I(conc^2) + I(conc^3), data = DF)
LM3b <- lm(density ~ poly(conc, degree = 3, raw = TRUE), data = DF)
#回帰係数を確認(三次式)
coefficients(LM3a)
coefficients(LM3b)