コースURL
https://www.coursera.org/learn/practical-time-series-analysis/home/week/1
線形回帰とは
線形回帰は以下の形式でモデルを構築します:
y=β0+βx+ϵ
ここで、𝑦は目的変数、xは説明変数、𝛽0は切片、𝛽は傾き、ϵは誤差項です。
線形回帰モデルの適合
Rでの線形回帰モデルの適合は、lm()関数を使用します。
data(co2)
model <- lm(co2 ~ time(co2))
summary(model)
前提条件
回帰分析を行う際には、いくつかの前提条件があります。これらの前提条件は、回帰モデルの結果が信頼できるかどうかを判断するために重要です。
残差(residual)とは、回帰分析において観測値とモデルによって予測された値の差のことです。残差は、モデルがデータをどれだけうまく説明しているかを評価するために重要です。
-
残差の正規性:
説明: 残差(実際の値とモデルが予測した値の差)が正規分布に従うこと。
確認方法: 残差のヒストグラムやQQプロットを使用して、正規性を視覚的に確認します。 -
等分散性(ホモスケダスティシティ):
説明: 残差の分散が説明変数の値に関係なく一定であること。
確認方法: 残差プロット(残差 vs. 予測値)を使用して、残差の分散が一定かどうかを確認します。分散が一定でない場合(ヘテロスケダスティシティ)、プロット上にパターンが現れます。 -
残差の平均がゼロ:
説明: 残差の平均がゼロであること。
確認方法: 残差の平均を計算し、ゼロに近いかどうかを確認します。通常は、回帰モデルが適切にフィットしている場合、この条件は自然に満たされます。 -
独立性:
説明: 残差が互いに独立していること。
確認方法: 残差プロット(残差 vs. 時間)を使用して、時間に関するパターンがないかを確認します。時系列データでは、ランダムなパターンがない場合、この前提が満たされていない可能性があります。
前提条件の確認方法
回帰モデルを作成する前にこれらの前提条件を確認するのではなく、モデルを作成した後に確認します。以下に、Rを使ってこれらの前提条件を確認する方法を示します。
1.モデルの作成
まず、データに対して線形回帰モデルを適合させます。
# 必要なライブラリの読み込み
# install.packages("datasets")
library(datasets)
# データのロード
data("CO2")
co2 <- CO2$conc # 二酸化炭素濃度
time <- as.numeric(time(co2)) # 時間を数値として取得
# 線形回帰モデルの適合
model <- lm(co2 ~ time)
2.残差の正規性の確認
# 残差のヒストグラム
hist(resid(model), main = "Histogram of Residuals", xlab = "Residuals")
# QQプロット
qqnorm(resid(model), main = "QQ Plot of Residuals")
qqline(resid(model))
3.等分散性の確認
# 残差 vs. 予測値のプロット
plot(fitted(model), resid(model), main = "Residuals vs Fitted Values", xlab = "Fitted Values", ylab = "Residuals")
abline(h = 0, col = "red")
4.残差の独立性の確認
# 残差 vs. 時間のプロット
plot(time, resid(model), main = "Residuals vs Time", xlab = "Time", ylab = "Residuals")
abline(h = 0, col = "red")
前提条件が満たされない場合
前提条件が満たされていない場合、以下の対策を取ることが考えられます:
残差の正規性が満たされない場合:データの変換(例えば、対数変換)を試みる。
等分散性が満たされない場合:加重最小二乗法(WLS)や一般化線形モデル(GLM)を使用する。
独立性が満たされない場合:時系列モデル(ARIMAなど)や自己回帰項をモデルに追加する。
まとめ
回帰分析では、まずモデルを作成し、その後に前提条件を確認します。前提条件が満たされていない場合は、データの変換やより複雑なモデルを検討する必要があります。これにより、モデルの適合度や推論結果の信頼性を向上させることができます。