これらの用語を理解する最良の方法は、手動で回帰計算を行うことです。密接に関連する2つの回答(こことここ)を書きましたが、特定のケースの理解に十分に役立つとは限りません。しかし、それでもそれらを読んでください。また、これらの用語をより適切に概念化するのにも役立ちます。
回帰(またはANOVA)では、サンプルデータセットに基づいてモデルを構築し、対象の母集団からの結果を予測できます。これを行うために、次の3つのコンポーネントが単純な線形回帰で計算され、そこから他のコンポーネントを計算できます。たとえば、平均二乗、F値、R2(調整済みR2)、および残差標準誤差(RSE):
- 総平方和(SStotal)
- 残差平方和(SSresidual)
- モデルの二乗和(SSmodel)
それらはそれぞれ、モデルがデータをどの程度正確に記述しているかを評価しており、データポイントから近似モデルまでの距離の2乗の合計です(下のプロットに赤い線で示されています)。
SStotalどれだけ平均フィットデータを評価します。どうして平均なの?平均は適合可能な最も単純なモデルであるため、最小二乗回帰線が比較されるモデルとして機能します。cars
データセットを使用したこのプロットは、次のことを示しています。
SSresidual回帰直線がデータをフィットどれだけ評価します。
SSmodelSStotalSSresidual
質問に答えるために、まずモデルと出力を参照として理解したい用語を計算しましょう:
# The model and output as reference
m1 <- lm(dist ~ speed, data = cars)
summary(m1)
summary.aov(m1) # To get the sums of squares and mean squares
二乗和は、モデルへの個々のデータポイントの二乗距離です。
# Calculate sums of squares (total, residual and model)
y <- cars$dist
ybar <- mean(y)
ss.total <- sum((y-ybar)^2)
ss.total
ss.residual <- sum((y-m1$fitted)^2)
ss.residual
ss.model <- ss.total-ss.residual
ss.model
平均二乗は、自由度によって平均化された二乗の合計です。
# Calculate degrees of freedom (total, residual and model)
n <- length(cars$speed)
k <- length(m1$coef) # k = model parameter: b0, b1
df.total <- n-1
df.residual <- n-k
df.model <- k-1
# Calculate mean squares (note that these are just variances)
ms.residual <- ss.residual/df.residual
ms.residual
ms.model<- ss.model/df.model
ms.model
あなたの質問に対する私の答え:
Q1:
- したがって、これは実際にはlmラインからの観測値の平均距離ですか?
RSEMSresidual
# Calculate residual standard error
res.se <- sqrt(ms.residual)
res.se
SSresidualMSresidual SSresidualRSEモデルからの観測データの平均距離を表します。直観的には、距離が小さければモデルの適合度も向上するため、これは完全に理にかなっています。
Q2:
- 観測点が回帰直線からどれだけ離れているかをRSEが示す場合、低RSEが実際に「観測データ点に基づいてモデルが適切に適合している」ことを示しているため、混乱しています。 、それでRの2乗とRSEの違いは何ですか?
R2SSmodelSStotal
# R squared
r.sq <- ss.model/ss.total
r.sq
R2SStotalSSmodelプロットをます。
RSER2RSE観測されたデータを与えられた(この場合、回帰直線)モデルの不正確さについてのあなたの何かを伝えます。
R2一方は平均のみ(すなわち最も単純なモデル)で説明したモデル(すなわち回帰直線)の相対変化によって説明されてどのくらいの変化がわかります。
Q3:
- RSEが高く、Rの2乗が低いように、NON LINEARである強い関係を示すF値を持つことができるのは本当ですか?
FMSmodelMSresidual
# Calculate F-value
F <- ms.model/ms.residual
F
# Calculate P-value
p.F <- 1-pf(F, df.model, df.residual)
p.F
F
あなたの3番目の質問は理解するのが少し難しいですが、あなたが提供した引用に同意します。