2016-10-18 1 views
4

私のデータセットは多くの冗長な観測値を持っています(ただし、各観測値はカウントする必要があります)。だから私はGAMで 'weights'オプションを使うことを考えています。これは、計算時間を大幅に短縮するからです。GAMのウェイトオプション

「が2の量は、例えば、正確に作られたと等価であることに注意してください。

gam関数(mgcvパッケージ内)は、それらが(?gamからweights引数に)「同等」であると説明します同じ観察を二度。

しかし、正しくはないようです。

yy = c(5,2,8,9) 
xx = 1:4 
wgts = c(3,2,4,1) 
yy2 = rep(yy, wgts) 
xx2 = rep(xx, wgts) 
mod1 = gam(yy2 ~ xx2) 
mod2 = gam(yy ~ xx, weights = wgts) 
mod3 = gam(yy ~ xx, weights = wgts/mean(wgts)) 

predict(mod1,data.frame(xx2=1:4)) 
predict(mod2,data.frame(xx=1:4)) 
predict(mod3,data.frame(xx=1:4)) 

推定値は3つのモデルすべてで同じです。 標準誤差はモデル2とモデル3では同じですが、モデル1では異なります。 GCVは3つのモデルすべてで異なります。

GCVが異なる可能性があります。しかし、標準エラーが異なる場合、モデルは同一であるとはどういうことができますか?これはエラーですか、それとも良い説明がありますか?

答えて

1

あなたが見た問題はGAMに関するものではありません。 gamを使用してパラメトリックモデルに適合させました。この場合、gamlmとほとんど同じ動作をします。あなたの質問に答えるには、線形回帰の場合に焦点を当てれば十分です。 GLMやGAMに対しても線形モデルには何が起こりますか?

yy <- c(5,2,8,9) 
xx <- 1:4 
wgts <- c(3,2,4,1) 
yy2 <- rep(yy,wgts) 
xx2 <- rep(xx,wgts) 
fit1 <- lm(yy2 ~ xx2) 
fit2 <- lm(yy ~ xx, weights = wgts) 
fit3 <- lm(yy ~ xx, weights = wgts/mean(wgts)) 
summary1 <- summary(fit1) 
summary2 <- summary(fit2) 
summary3 <- summary(fit3) 
pred1 <- predict(fit1, list(xx2 = xx), interval = "confidence", se.fit = TRUE) 
pred2 <- predict(fit2, list(xx = xx), interval = "confidence", se.fit = TRUE) 
pred3 <- predict(fit3, list(xx = xx), interval = "confidence", se.fit = TRUE) 

すべてのモデルは、同じ回帰係数を持っているが、他の結果が異なることがあります。ここではは、私たちがlmで問題を再現する方法です。あなたは尋ねた:

  1. を加重回帰fit2fit3のために、なぜほとんどすべてが残留標準誤差を除いて同じですか?
  2. 重み付き回帰(fit2またはfit3)が、通常の回帰回帰と同等ではないのはなぜですか?

あなたの最初の質問は重み重量最小二乗のスケーリング不変性についてです。

enter image description here

我々は任意の正の値のみ残留標準誤差でWを再スケールし、スケールされていない共分散が変更される場合:ここでは私が作った簡単な要約です。このような変更は、異なる、同等でないモデルを意味するものではありません。実際、予測に関連するすべてのものは影響を受けません。加重回帰では、sigma2だけではありません。それはちょっとした差です。本当に興味深いのは、重みを掛けた後の総差です。 体重を2で割り算すると、sigma2が倍になりますが、それらを掛け合わせると同じ結果になります。

summary2$coef 
summary3$coef 

#   Estimate Std. Error t value Pr(>|t|) 
#(Intercept) 2.128713 3.128697 0.6803832 0.5664609 
#xx   1.683168 1.246503 1.3503125 0.3094222 

pred2 
pred3 

#$fit 
#  fit  lwr  upr 
#1 3.811881 -5.0008685 12.62463 
#2 5.495050 -0.1299942 11.12009 
#3 7.178218 0.6095820 13.74685 
#4 8.861386 -1.7302209 19.45299 
# 
#$se.fit 
#  1  2  3  4 
#2.048213 1.307343 1.526648 2.461646 
# 
#$df 
#[1] 2 
# 
#$residual.scale ## for `pred2` 
#[1] 3.961448 
# 
#$residual.scale ## for `pred3` 
#[1] 2.50544 

あなたの2番目の質問には、重みの程度意味です。重みは、通常の最小二乗回帰におけるレバレッジ効果を克服するために異分散応答をモデル化するために使用されます。重みは相反分散に比例します。予想される誤差が小さいデータに大きな重みを与えます。 重みは非整数にすることができるため、繰り返しデータの観点から自然な説明はありません。したがって、mgcvパッケージに書かれている内容は厳密に正しいものではありません。

fit1fit2の実際の違いは?自由度です。(n - p)の上記の表を確認してください。 nはあなたが持っているデータの数ですが、pは非NAの係数の数ですので、n - pは残りの自由度です。どちらのモデルについても、p = 2(切片と傾き)がありますが、の場合はn = 10fit2の場合はn = 4です。これは、係数と予測の標準誤差(したがって信頼区間)が異なるため、推論に劇的な影響を与えます。これらの2つのモデルは同等ではありません。

summary1$coef 
#   Estimate Std. Error t value Pr(>|t|) 
#(Intercept) 2.128713 1.5643486 1.360766 0.21068210 
#xx2   1.683168 0.6232514 2.700625 0.02704784 

summary2$coef 

#   Estimate Std. Error t value Pr(>|t|) 
#(Intercept) 2.128713 3.128697 0.6803832 0.5664609 
#xx   1.683168 1.246503 1.3503125 0.3094222 

pred1 

#$fit 
#  fit  lwr  upr 
#1 3.811881 1.450287 6.173475 
#2 5.495050 3.987680 7.002419 
#3 7.178218 5.417990 8.938446 
#4 8.861386 6.023103 11.699669 
# 
#$se.fit 
#  1   2   3   4 
#1.0241066 0.6536716 0.7633240 1.2308229 
# 
#$df # note, this is `10 - 2 = 8` 
#[1] 8 
# 
#$residual.scale 
#[1] 1.980724 

pred2 

#$fit 
#  fit  lwr  upr 
#1 3.811881 -5.0008685 12.62463 
#2 5.495050 -0.1299942 11.12009 
#3 7.178218 0.6095820 13.74685 
#4 8.861386 -1.7302209 19.45299 
# 
#$se.fit 
#  1  2  3  4 
#2.048213 1.307343 1.526648 2.461646 
# 
#$df # note, this is `4 - 2 = 2` 
#[1] 2 
# 
#$residual.scale ## for `pred2` 
#[1] 3.961448 
+1

どのようなフルサービスの回答ですか?非常に徹底的。 – Gregor

+0

まず、GAMと線形回帰は全く異なる働きをします。したがって、「lm」で説明することは不適切かもしれません。線形回帰(または加重線形回帰)は、行列計算、(X'X)^(-1)X'y(X'WX)^( - 1)X'Wy)によって係数を見つける。一方、GAM推論は、このような行列計算を伴わない。彼らは最尤法を使用します。 GAMマニュアルには、「重み」オプションは「対数尤度に対するデータの寄与に対する事前重み」であるとも言われています。 – user67275

+0

さらに、私はGAMの「重み」が異分散を扱うために使用されることを意図しているのかどうかはわかりません。 「gam」マニュアルには、「同じ観測を2回正確に行った」という状況でウェイトオプションを使用することができ、その結果(ウェイトを頻繁に使用することとの結びつき)が同じではないのかと疑問に思った。 – user67275

関連する問題