2016-10-18 2 views
4

내 데이터 세트에는 많은 중복 관찰이 있지만 (각 관찰은 계산해야 함). 따라서 GAM에서 '가중치'옵션을 사용하면 계산 시간이 크게 단축되므로이 옵션을 사용하는 것이 좋습니다.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)) 

견적은 세 모델 모두에서 동일합니다. 표준 오류는 모델 2와 3은 같지만 모델 1은 다릅니다. GCV는 세 가지 모델 모두에서 다릅니다.

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 

두 번째 질문은 무게의 약 의미입니다. 가중치는 일반 최소 자승 회귀에서 레버리지 효과를 극복하기 위해이 분산 응답을 모델링하는 데 사용됩니다. 가중치는 상호 분산에 비례합니다. 예상되는 오류가 더 적은 데이터에 더 큰 가중치를 부여합니다. 가중치는 정수가 아니므로 반복되는 데이터 측면에서 자연스러운 설명이 없습니다. 따라서, 어떤 mgcv 패키지로 작성하는 것은 엄격하게 올바르지 않습니다.

fit1fit2의 실제 차이점은 무엇입니까? 자유도입니다. 위 표에서 (n - p)을 확인하십시오. p가 비 NA 계수의 수, 그래서 n - p 자유의 잔류 정도 동안 n는 당신이 가진 데이터의 수입니다. 두 모델 모두를 위해 우리는 p = 2 (절편 및 기울기)를 가지고 있지만, fit2을 위해 우리가 n = 4있는 동안 fit1 위해 우리는 n = 10 있습니다. 계수와 예측에 대한 표준 오차 (따라서 신뢰 구간)가 달라지기 때문에 이것은 추론에 큰 영향을 미칩니다. 이 두 모델은 동등한 것과는 거리가 멀다.

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과 선형 회귀는 완전히 다른 방식으로 작동합니다. '작품'으로 설명하는 것은 부적절 할 수 있습니다. 선형 회귀 (또는 가중 된 선형 회귀)는 행렬 계산 (X'X)에서 계수를 발견^(- 1) X'y (X'WX)^(- 1) X'Wy). 반면 GAM 추론은 그러한 행렬 계산을 포함하지 않습니다. 그들은 최대 우도 방법을 사용합니다. GAM 매뉴얼에 따르면 '가중치'옵션은 '로그 가능성에 대한 데이터 기여도에 대한 우선 가중치'입니다. – user67275

+0

또한 GAM의 '가중치'가 이분 산성을 다루는 데 사용되도록 고안된 것인지 잘 모르겠습니다. 'gam 설명서'에 따르면 가중치 옵션은 "정확히 같은 관찰을 두 번했는데"라는 상황에서 사용할 수 있습니다. 왜 결과 (묶음 관측 대 주파수를 가중치로 사용)가 동일하지 않은지 궁금했습니다. – user67275