RのOLSとGLSで同じ結果が得られるのはなぜですか?


8

このコードを実行すると:

require(nlme)

a <- matrix(c(1,3,5,7,4,5,6,4,7,8,9))

b <- matrix(c(3,5,6,2,4,6,7,8,7,8,9))

res <- lm(a ~ b)

print(summary(res))

res_gls <- gls(a ~ b)

print(summary(res_gls))

私は同じ係数と係数の同じ統計的有意性を得ます:

Loading required package: nlme

Call:
lm(formula = a ~ b)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.7361 -1.1348 -0.2955  1.2463  3.8234 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   2.0576     1.8732   1.098   0.3005  
b             0.5595     0.2986   1.874   0.0937 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 2.088 on 9 degrees of freedom
Multiple R-squared: 0.2807, Adjusted R-squared: 0.2007 
F-statistic: 3.512 on 1 and 9 DF,  p-value: 0.09371 

Generalized least squares fit by REML
  Model: a ~ b 
  Data: NULL 
      AIC      BIC    logLik
  51.0801 51.67177 -22.54005

Coefficients:
                Value Std.Error  t-value p-value
(Intercept) 2.0576208 1.8731573 1.098477  0.3005
b           0.5594796 0.2985566 1.873948  0.0937

 Correlation: 
  (Intr)
b -0.942

Standardized residuals:
       Min         Q1        Med         Q3        Max 
-1.3104006 -0.5434780 -0.1415446  0.5968911  1.8311781 

Residual standard error: 2.087956 
Degrees of freedom: 11 total; 9 residual

なんでこんなことが起こっているの?OLSの見積もりはGLSの見積もりと同じですか。


5
GLSモデルを使用すると、エラーを相関させたり、分散を等しくしたりすることができます。オプションまたは関数内でそのような相関または残差分散の差を指定しない場合、GLSの結果はの結果と等しくなります。correlationweightsglslm
COOLSerdash 2013年

2
わかりました。ありがとうございます。つまり、のglsように行動するように指示したので、基本的には同じ結果が得られましたlm。もう一つの問題は、私が置くべきであるcorrelationweights
Akavall 2013年

回答:


13

gls関数で特別な分散または相関構造を指定しなかったため、同じ結果が得られました。そのようなオプションがない場合、GLSはOLSのように動作します。通常の回帰に対するGLSモデルの利点は、相関構造を指定する機能(オプションcorrelation)または残差分散を異ならせる機能(オプションweights)です。例を挙げて説明します。

library(nlme)

set.seed(1500)

x <- rnorm(10000,100,12) # generate x with arbitrary values

y1 <- 10 + 15*x + rnorm(10000,0,5) # the first half of the dataset

y2 <-  -2 - 5*x + rnorm(10000,0,15) # the 2nd half of the data set with 3 times larger residual SD (15 vs. 5)

y <- c(y1, y2)
x.new <- c(x, x)

dummy.var <- c(rep(0, length(y1)), rep(1, length(y2))) # dummy variable to distinguish the first half of the dataset (y1) from the second (y2)

# Calculate a normal regression model   

lm.mod <- lm(y~x.new*dummy.var)

summary(lm.mod)

Coefficients:
                 Estimate Std. Error   t value Pr(>|t|)    
(Intercept)      10.27215    0.94237    10.900   <2e-16 ***
x.new            14.99691    0.00935  1603.886   <2e-16 ***
dummy.var       -12.07076    1.33272    -9.057   <2e-16 ***
x.new:dummy.var -19.99891    0.01322 -1512.387   <2e-16 ***

# Calculate a GLS without any options

gls.mod.1 <- gls(y~x.new*dummy.var)

summary(gls.mod.1)

Coefficients:
                    Value Std.Error    t-value p-value
(Intercept)      10.27215 0.9423749    10.9003       0
x.new            14.99691 0.0093504  1603.8857       0
dummy.var       -12.07076 1.3327194    -9.0572       0
x.new:dummy.var -19.99891 0.0132234 -1512.3868       0

# GLS again, but allowing different residual variance for y1 and y2

gls.mod.2 <- gls(y~x.new*dummy.var, weights=varIdent(form=~1|dummy.var))

summary(gls.mod.2)

 Parameter estimates:
       0        1 
1.000000 2.962565 

Coefficients:
                    Value Std.Error   t-value p-value
(Intercept)      10.27215 0.4262268    24.100       0
x.new            14.99691 0.0042291  3546.144       0
dummy.var       -12.07076 1.3327202    -9.057       0
x.new:dummy.var -19.99891 0.0132234 -1512.386       0

# Perform a likelihood ratio test

anova(gls.mod.1, gls.mod.2)

          Model df      AIC      BIC    logLik   Test  L.Ratio p-value
gls.mod.1     1  5 153319.4 153358.9 -76654.69                        
gls.mod.2     2  6 143307.2 143354.6 -71647.61 1 vs 2 10014.15  <.0001

最初のGLSモデル(gls.mod.1)と通常の線形回帰モデル(lm.mod)では、まったく同じ結果が得られます。さまざまな残差標準偏差を許容するGLSモデル(gls.mod.2)は、残差SDが、データを生成したときに指定したy2残差SDの約3倍であると推定y1します。回帰係数は実質的に同じですが、標準誤差が変更されました。尤度比検定(およびAIC)は、異なる残差分散(gls.mod.2)を持つGLSモデルが、通常のモデル(lm.modまたはgls.mod.1)よりもデータに適していることを示唆しています。


の分散構造と相関構造 gls

gls関数とオプションでいくつかの分散構造を指定できますweights。リストについては、こちらをご覧ください。オプションの相関構造のリストについては、ここをcorrelation参照してください


選択する分散構造は何によって決まりますか?
ラファエル

@Rafaelこの場合、私はデータをシミュレートし、どのような分散構造を取るかを知っていました。実際には、主題の知識と探索的グラフィックに基づいて、さまざまな分散構造を試します。次に、尤度比検定を使用して、さまざまな分散構造を持つさまざまなモデルを比較できます。分散構造を選択するための「ゴールドスタンダード」の推奨手順があるかどうかはわかりません。
COOLSerdash 2015年

こんにちはCOOLSerdash、回答ありがとうございます。LRテストを使用して、さまざまな構造とモデルの比較を試します。
ラファエル

1

明確にするために、残差のシリアル相関の場合、それのOLS推定を使用することができます。たとえばgls(..., cor=corAR1(0.6))、ここでは0.6、およびOLSからの次数arは、残差の関数を使用して計算できます。OLSの

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.