単純な線形回帰の場合、回帰係数は分散共分散行列からC d 、eによって 直接計算できます。
共分散行列しかない場合、複数の説明変数を持つモデルの係数を計算できますか?
ETAは、2つの説明変数については、それが現れる と同様のためのβ2。これを3つ以上の変数に拡張する方法がすぐにわかりません。
単純な線形回帰の場合、回帰係数は分散共分散行列からC d 、eによって 直接計算できます。
共分散行列しかない場合、複数の説明変数を持つモデルの係数を計算できますか?
ETAは、2つの説明変数については、それが現れる と同様のためのβ2。これを3つ以上の変数に拡張する方法がすぐにわかりません。
回答:
はい、すべての変数(説明と応答)の共分散行列には、モデルに切片(定数)項が含まれている場合、すべての係数を見つけるために必要な情報が含まれています。(共分散は定数項に関する情報を提供しませんが、データの平均から見つけることができます。)
説明変数のデータを次元の列ベクトルx 1、x 2、… 、x pとして配置し、応答変数を列ベクトルyとし、ランダム変数Yの実現と見なします。通常の最小二乗推定値はβモデルにおける係数の
システムと同等です
ガウス消去法はこのシステムを解決します。それは、隣接することによって進行します
したがって、ガウス消去法の最初のステップの後、システムは解くようになります
そして明らかに-すべての係数が共分散であるため-その解はすべての変数の共分散行列から見つけることができます。
例として、次のR
コードはいくつかのデータを作成し、それらの共分散を計算し、その情報のみから最小二乗係数の推定値を取得します。それらを最小二乗推定器から取得した推定値と比較しますlm
。
#
# 1. Generate some data.
#
n <- 10 # Data set size
p <- 2 # Number of regressors
set.seed(17)
z <- matrix(rnorm(n*(p+1)), nrow=n, dimnames=list(NULL, paste0("x", 1:(p+1))))
y <- z[, p+1]
x <- z[, -(p+1), drop=FALSE];
#
# 2. Find the OLS coefficients from the covariances only.
#
a <- cov(x)
b <- cov(x,y)
beta.hat <- solve(a, b)[, 1] # Coefficients from the covariance matrix
#
# 2a. Find the intercept from the means and coefficients.
#
y.bar <- mean(y)
x.bar <- colMeans(x)
intercept <- y.bar - x.bar %*% beta.hat
出力は、2つの方法の一致を示しています。
(rbind(`From covariances` = c(`(Intercept)`=intercept, beta.hat),
`From data via OLS` = coef(lm(y ~ x))))
(Intercept) x1 x2 From covariances 0.946155 -0.424551 -1.006675 From data via OLS 0.946155 -0.424551 -1.006675
y
、x
とから切片を計算しましたbeta.hat
。y
そしてx
、元のデータの一部です。共分散行列と平均値だけから切片を導出することは可能ですか?表記を教えてください。