원시 또는 직교 다항식 회귀 분석?


22

변수 를 로 되돌리고 싶습니다 . 원시 다항식 또는 직교 다항식을 사용하여이 작업을 수행해야합니까? 나는 이것들을 다루는 사이트에서 질문을 보았지만 그것들을 사용하는 것의 차이점이 무엇인지 실제로 이해하지 못한다. 와이엑스,엑스2,,엑스5

왜 난 그냥 계수를 얻기 위해 "정상"회귀 할 수 없습니다 의β나는와이=나는=05β나는엑스나는 (P-값과 다른 모든 좋은 물건과 함께) 대신 원시 다항식 또는 직교 다항식을 사용할지 걱정해야합니까? 이 선택은 내가하고 싶은 일의 범위를 벗어난 것으로 보입니다.

내가 현재 읽고있는 통계 책 (Tibshirani 등의 ISLR)에서 이러한 것들은 언급되지 않았습니다. 실제로, 그들은 어떤 식 으로든 낙담했습니다.
그 이유는 AFAIK lm()로 R 의 함수에서 y ~ poly(x, 2)직교 다항식을 사용 y ~ x + I(x^2)하는 것과 양을 사용하여 원시를 사용하기 때문입니다. 그러나 116 페이지에서 저자는 첫 번째 옵션을 사용한다고 말하는데, 첫 번째 옵션은 "번거롭기 때문에"이러한 명령이 실제로는 완전히 다른 것 (결과적으로 다른 출력을 가짐)을 나타내지 않습니다.
(세번째 질문) ISLR의 저자가 독자들을 그렇게 혼동하는 이유는 무엇입니까?


1
@Sycorax 나는 poly직교 다항식과 관련이 있으며 I (x ^ 2)는 (세부 사항을 알지 못하지만) 관련이 없다는 것을 알고 있습니다. 그러나 여전히 ISLR 작성자가 작동하지 않는 방법을 권장하는 이유는 무엇입니까? ? 두 명령이 모두 같은 것으로 보이지만 실제로는 하나만 괜찮습니다.
l7ll7

1
@ gung 나는 문서를 보았고이 poly문제로 이미 시간을 보냈지 만 왜 poly (x, 2)와 x + I (x ^ 2)가 차이를 만드는지 알 수 없습니까? 질문이 주제가 아닌 경우 의견에 나를 여기에 비추어 주시겠습니까?
l7ll7

1
@ gung 내 질문을 완전히 다시 편집했습니다. 이 선택은 원시 / 직교로 인해 더 혼란 스럽습니다. 이전에 나는 이것이 약간의 R기술 이라고 생각 했지만 이해하지 못했지만 이제는 풀 수없는 통계 문제 인 것처럼 보이지 않아 회귀 코딩을 방해합니다. 코딩하기가 어렵습니다.
l7ll7

2
@gung 실제로 도움이 된 것보다 더 혼란 스러웠습니다. 이전에는 직교 다항식으로 가야한다고 생각했습니다. 왜냐하면 그것이 올바른 방법 인 것처럼 보였지만 그 대답에는 원시 다항식이 사용되었습니다. 놀랍게도, 인터넷상의 모든 사람들이 "RTFM"을 외치고 있지만 실제로 무엇을 사용해야 할 지에 대한 명확한 대답은 없습니다. (당신의 링크는 이것에 대한 답을 제공하지 않습니다, 예를 들어,
orth.pol

2
반응이 5 항 다항식이라는 물리적 또는 엔지니어링 영역에서 작업하지 않는 한, 가장 올바른 방법은 처음에 다항식 회귀를 수행하지 않는 것입니다. 자유 곡선 또는 다항식보다 훨씬 유연하고 안정적인 스플라인에 자유도를 투자하십시오 .
whuber

답변:


10

나는 그 대답이 수치 적 안정성에 관한 것이 아니라 (역할을 담당하지만) 상관 관계를 줄이는 것에 관한 것이라고 생각합니다.

본질적으로,이 문제는 우리가 많은 고차 다항식에 대해 회귀 할 때 회귀하는 공변량이 상관 관계가 높아진다는 사실로 귀결됩니다. 아래 예제 코드 :

x = rnorm(1000)
raw.poly = poly(x,6,raw=T)
orthogonal.poly = poly(x,6)
cor(raw.poly)
cor(orthogonal.poly)

이것은 매우 중요합니다. 공변량의 상관 관계가 높아짐에 따라 어느 것이 중요한지 (그리고 그 영향의 크기)를 결정하는 능력은 빠르게 침식됩니다. 이를 일반적으로 다중 공선 성 문제라고합니다. 한계에, 완전히 상관 된 두 변수가 있다면, 어떤 것에 대해 변수를 회귀 할 때 두 변수를 구별 할 수 없습니다.이 문제를 극단적 인 버전으로 생각할 수 있지만이 문제는 추정치에 영향을줍니다. 더 적은 상관 관계도. 따라서 수치 적 불안정성이 문제가되지 않더라도 실제로는 고차 다항식과의 상관 관계가 추론 루틴에 막대한 피해를줍니다. 이것은 다른 방법으로 볼 수있는 더 큰 표준 오류 (따라서 더 작은 t- 통계)로 나타납니다 (아래 예제 회귀 참조).

y = x*2 + 5*x**3 - 3*x**2 + rnorm(1000)
raw.mod = lm(y~poly(x,6,raw=T))
orthogonal.mod = lm(y~poly(x,6))
summary(raw.mod)
summary(orthogonal.mod)

이 코드를 실행하면 계수가 모두 바뀌므로 사물을 비교하기가 어렵 기 때문에 해석이 쉽지 않습니다. 그러나 T-stats를 살펴보면 계수를 결정하는 기능이 직교 다항식의 경우 훨씬 더 큰 것을 알 수 있습니다. 관련 계수 3 개에 대해 직교 모형에 대한 t-stats (560,21,449)를 얻었으며 원시 다항식 모형에 대해서만 (28, -38,121)을 얻었습니다. 이것은 상대적으로 낮은 차수의 다항식을 가진 간단한 모형의 경우 큰 차이입니다.

이것이 비용이 들지 않는다는 것은 아닙니다. 명심해야 할 두 가지 주요 비용이 있습니다. 1) 직교 다항식으로 해석 할 수 없습니다. 계수가 x**3의미 하는 바를 이해할 수 있지만 계수를 해석하는 것 x**3-3x(세 번째 은둔 폴리-반드시 사용할 것은 아니지만)이 훨씬 어려울 수 있습니다. 둘째, 다항식이 직교라고 말하면 거리 측정과 관련하여 직교 함을 의미합니다. 상황과 관련된 거리를 측정하는 것은 어려울 수 있습니다. 그러나, 나는 poly함수가 공분산에 대해 직교하도록 선택하도록 설계 되었다고 생각합니다. 이는 선형 회귀에 유용합니다.


3
-1. 낮은 차수 계수에서 볼 수있는 더 큰 표준 오차는 빨간색 청어입니다. 두 모델의 차수 계수는 완전히 다른 것을 추정하므로 표준 오차를 비교하는 것은 의미가 없습니다. 최고 차수는 두 모델에서 모두 동일한 것을 추정하는 유일한 계수이며, 다항식이 직교인지 여부에 관계없이 t 통계량은 동일하다는 것을 알 수 있습니다. 두 모델은 적합치, R ^ 2 등의 측면에서 통계적으로 동일하며, 주로 계수 해석에 따라 다릅니다.
Jake Westfall

@JakeWestfall, 나는 당신에 동의하지 않는다고 생각합니다. 우선, 코드를 실행하면 모든 다항식 차수에 대해 다른 값을 생성합니다. 본질적으로 다항식을 취하고 PCA를 수행합니다. 둘째, 더 중요한 것은 t- 통계가 실제로 다르다는 것입니다. 제 답변에 코드를 실행하면 기능적으로 우리는 다중 공선 성 문제를 해결할 수 있습니다. 적합치, R ^ 2, F- 검정 등은 변하지 않는 것이 맞습니다. 실제로 직교 화해야하는 이유 입니다. 다항식 항을 탐지하는 능력 외에는 아무것도 변하지 않습니다 .
user5957401

1
Re : 첫 번째 점은 미안하지만 계수가 아닌 최상위 항의 t-stat를 의미했습니다. 그 예측은 +가 모델 사이 그래서 예 COEF 변경 시프트 축소되지만, 도시 된 바와 같이 그 같은 실질적인 효과를 테스트 t
제이크 웨스트 폴

Re : 두 번째 요점은, 차수가 낮은 용어에 대해 "t-stats가 실질적으로 다른"이유는 두 모델에서 완전히 다른 것을 추정하기 때문입니다. 선형 효과를 고려하십시오. raw.modx = 0에서 곡선의 기울기를 orthogonal.mod추정 할 때 한계 기울기를 추정합니다 (즉, lm(y ~ poly(x,1))고차 항이 생략 된 곳 과 동일 ). 이 완전히 다른 추정치의 추정치에 표준 오차가 비슷해야하는 이유는 없습니다. raw.modt-stats가 훨씬 높은 반례를 쉽게 만들 수 있습니다
Jake Westfall

@JakeWestfall. 나는 아직도 당신이 다중 공선 성을 놓치고 있다고 생각합니다. 그러나 우리는 서로 과거를 이야기하고있는 것 같습니다. 아마도 해결책이있을 것입니다. 당신은 쉽게 반례를 구성 할 수 있다고 말하십시오. 나는 당신이 생각하는 dgp를 보는 것이 나를 위해 많은 것을 분명히 할 것이라고 생각합니다. 현재 내가 설명 할 수 있었던 것은 심각한 모델의 잘못된 사양과 관련이 있습니다.
user5957401

8

왜 계수를 얻기 위해 "정상"회귀를 수행 할 수 없습니까?

수치 적으로 안정적이지 않기 때문입니다. 컴퓨터는 부동 수를 나타 내기 위해 고정 된 수의 비트를 사용하고 있음을 기억하십시오. IEEE754 에서 자세한 내용을 확인하십시오. 단순 조차도 컴퓨터가 로 저장해야한다는 사실에 있습니다. 다른 번호를 시도해 볼 수 있습니다0.40.4000000059604644775390625

원시 다항식을 사용하면 많은 수의 문제가 발생할 수 있습니다. 다음은 작은 증거입니다. 행렬 조건 수 를 원시 및 직교 다항식과 비교 합니다.

> kappa(model.matrix(mpg~poly(wt,10),mtcars))
[1] 5.575962
> kappa(model.matrix(mpg~poly(wt,10, raw = T),mtcars))
[1] 2.119183e+13

예를 들어 여기에서 내 대답을 확인할 수도 있습니다.

고차 다항식에 대한 계수가 큰 이유는 무엇입니까?


6
단 정밀도 부동 소수점을 사용하고 4 배 정밀도로 인용하는 것 같습니다! 어떻게 된거 지? GPU를 제외하고 거의 모든 통계 계산은 최소 배정도를 사용합니다. 예를 들어 R의 출력은 print(0.4, digits=20)입니다 0.40000000000000002.
whuber

6

이 답변 중 몇 가지가 요점을 완전히 놓친 것 같습니다. Haitao의 답변은 원시 다항식을 피팅 할 때 발생 계산 문제를 해결하지만 OP가 두 가지 접근 방식 간의 통계적 차이 에 대해 묻는 것은 분명합니다 . 즉, 모든 값을 정확하게 표현할 수있는 완벽한 컴퓨터가 있다면 왜 다른 방법보다 다른 방법을 선호할까요?

사용자 5957401은 직교 다항식이 다항식 함수들 사이의 공선 성을 감소 시키므로 추정이보다 안정적이라고 주장합니다. Jake Westfall의 비판에 동의합니다. 직교 다항식의 계수는 원시 다항식의 계수와 완전히 다른 양을 나타냅니다. 모형 내성 선량 반응 함수, 아르 자형2 , MSE, 예측 값 및 예측 값의 표준 오차는 직교 또는 원시 다항식의 사용 여부에 관계없이 모두 동일합니다. 차수 2의 원시 다항식 회귀 분석 에서 엑스 의 계수 는 " X 일와이 의 순간 변화"에 대한 해석을 갖습니다 . 직교 다항식에 대해 한계 효과 절차를 수행 한 경우엑스=0엑스=0 이면 직교 다항식 회귀 분석의 1 차 항에 대한 계수 및 표준 오류가 원시 다항식 회귀 분석의 값과 완전히 다르더라도 정확히 동일한 기울기와 표준 오류가 발생합니다. 즉, 두 회귀 모두에서 같은 양을 얻으려고 할 때 (즉, 같은 방식으로 해석 할 수있는 양) 추정값과 표준 오차는 동일합니다. 직교 다항식을 사용한다고해서 마술 적으로 X 의 기울기가 더 확실하다는 의미는 아닙니다.엑스 주어진 지점에서 . 모델의 안정성은 동일합니다.

data("iris")

#Raw:
fit.raw <- lm(Petal.Length ~ Petal.Width + I(Petal.Width^2) +
                  I(Petal.Width^3), data = iris)
summary(fit.raw)

#> Coefficients:
#>                  Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)        1.1034     0.1304   8.464 2.50e-14 ***
#> Petal.Width        1.1527     0.5836   1.975  0.05013 .  
#> I(Petal.Width^2)   1.7100     0.5487   3.116  0.00221 ** 
#> I(Petal.Width^3)  -0.5788     0.1408  -4.110 6.57e-05 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 0.3898 on 146 degrees of freedom
#> Multiple R-squared:  0.9522, Adjusted R-squared:  0.9512 
#> F-statistic: 969.9 on 3 and 146 DF,  p-value: < 2.2e-16

#Orthogonal
fit.orth <- lm(Petal.Length ~ stats::poly(Petal.Width, 3), data = iris)

#Marginal effect of X at X=0 from orthogonal model
library(margins)
summary(margins(fit.orth, variables = "Petal.Width", 
                at = data.frame(Petal.Width = 0)))
#> Warning in check_values(data, at): A 'at' value for 'Petal.Width' is
#> outside observed data range (0.1,2.5)!
#>       factor Petal.Width    AME     SE      z      p  lower  upper
#>  Petal.Width      0.0000 1.1527 0.5836 1.9752 0.0482 0.0089 2.2965

2019-10-25에 의해 만들어진 reprex 패키지 (v0.3.0)로

Petal.Width직교 피팅에서 0 의 한계 효과 와 표준 오차는 원시 다항식 피팅에서와 동일합니다. 직교 다항식을 사용한다고해서 두 모형간에 동일한 수량의 추정 정밀도가 향상되지는 않습니다.

와이엑스와이엑스

library(jtools)
data("iris")

fit.raw3 <- lm(Petal.Length ~ Petal.Width + I(Petal.Width^2) +
                  I(Petal.Width^3), data = iris)
fit.raw1 <- lm(Petal.Length ~ Petal.Width, data = iris)

round(summ(fit.raw3, part.corr = T)$coef, 3)
#>                    Est.  S.E. t val.     p partial.r part.r
#> (Intercept)       1.103 0.130  8.464 0.000        NA     NA
#> Petal.Width       1.153 0.584  1.975 0.050     0.161  0.036
#> I(Petal.Width^2)  1.710 0.549  3.116 0.002     0.250  0.056
#> I(Petal.Width^3) -0.579 0.141 -4.110 0.000    -0.322 -0.074

round(summ(fit.raw1, part.corr = T)$coef, 3)
#>              Est.  S.E. t val. p partial.r part.r
#> (Intercept) 1.084 0.073 14.850 0        NA     NA
#> Petal.Width 2.230 0.051 43.387 0     0.963  0.963

fit.orth3 <- lm(Petal.Length ~ stats::poly(Petal.Width, 3), 
               data = iris)
fit.orth1 <- lm(Petal.Length ~ stats::poly(Petal.Width, 3)[,1], 
               data = iris)

round(summ(fit.orth3, part.corr = T)$coef, 3)
#>                                Est.  S.E.  t val. p partial.r part.r
#> (Intercept)                   3.758 0.032 118.071 0        NA     NA
#> stats::poly(Petal.Width, 3)1 20.748 0.390  53.225 0     0.975  0.963
#> stats::poly(Petal.Width, 3)2 -3.015 0.390  -7.735 0    -0.539 -0.140
#> stats::poly(Petal.Width, 3)3 -1.602 0.390  -4.110 0    -0.322 -0.074

round(summ(fit.orth1, part.corr = T)$coef, 3)
#>                                    Est.  S.E. t val. p partial.r part.r
#> (Intercept)                       3.758 0.039 96.247 0        NA     NA
#> stats::poly(Petal.Width, 3)[, 1] 20.748 0.478 43.387 0     0.963  0.963

2019-10-25에 의해 만들어진 reprex 패키지 (v0.3.0)로

0.0010.0030.0050.9270.9270.0200.0050.927. 우리는 원시 다항식 모델이 아닌 직교 다항식 모델에서 결과에 설명 된 대부분의 편차가 선형 항에 기인한다는 것을 알고 있습니다. 원시 다항식 값은 그 이야기를 말하지 않습니다.

이제 모형의 계수를 실제로 이해할 수 있다는 간헐적 이점에 대한이 해석상의 이점을 원하든 직교 다항식을 사용해야합니다. 계수를보고 그것이 의미하는 바를 정확히 알고 싶다면 (일반적으로 어떤 것이 옳은지 의심 스럽지만), 원시 다항식을 사용해야합니다. 신경 쓰지 않으면 (즉, 혼란을 피하거나 예측 값을 생성하려는 경우) 실제로 중요하지 않습니다. 두 형태 모두 해당 목표와 관련하여 동일한 정보를 가지고 있습니다. 또한 고차원 항을 제거해도 하위 항의 계수에는 영향을 미치지 않기 때문에 직교 다항식은 정규화 (예 : 올가미)에서 선호되어야한다고 주장합니다.


1
탁월한 기여. 나는 한계 결과를 복제 할 수 없다 (마진 패키지에 익숙하지 않은 첫 번째 코드 블록을 실행하려고 할 때 마진 함수가 폴리에 대해 오류를 발생시킵니다). 그러나 그것들은 내가 기대하는 것입니다. 작은 제안으로-원시 모델에 대한 마진 분석 결과도 포함시켜야합니다. p- 값이 요약에서 마진 함수 (우리의 결론을 변경하지 않음)로 변경하면 인수가 (약간) 약화됩니다. 이는 분포가 아닌 법선을 사용하여 발생하는 것으로 보입니다. 정규화 지점이 우수합니다.
user5957401

1
친절한 말 감사합니다. 난 당신이 포함하는 생각 stats::에 통화를 poly()lm()대한 margins(바보 인)을 인식 할 수. 나는 포인트 추정과 표준 오류에 대한 논쟁에 초점을 맞추고 싶었고, 많은 외설적이고 혼란스러운 정보가 있다는 것을 알고 있지만 텍스트가 내 요점을 설명하기를 바랍니다.
노아

그렇지 않습니다. 코드를 정확하게 복사했으며을 사용 stats::poly()합니다. 오류는 'degree' must be less than number of unique points나에게 도움이되지 않습니다. 그럼에도 불구하고, margin()입증 가능한 진술을 백업하고 있으므로 중요하지 않습니다.
user5957401

4

@ user5957401의 탁월한 답변을 확인하고 보간, 외삽 및보고에 대한 의견을 추가합니다.

안정적인 파라미터 값의 영역에서도, 직교 다항식에 의해 모델링 된 계수 / 파라미터는 미가공 파라미터에 의해 모델링 된 계수 / 파라미터보다 실질적으로 더 작은 표준 오차를 가질 것이다. 본질적으로, 직교 다항식은 공분산 제로 기술자의 무료 세트입니다. PCA는 무료입니다!

유일한 잠재적 단점은 공분산 제로 설명의 미덕을 이해하지 못하는 사람에게 이것을 설명해야한다는 것입니다. 계수는 아닙니다 1 차 (속도-유사) 또는 2 차 (가속-유사) 효과와 관련하여 즉시 해석 . 이것은 사업 환경에서 상당히 위험 할 수 있습니다.

10아르 자형2제이 아르 자형2

그래서 나는 "수십 자"가 원시 모델보다 직교 모델을 더 확실하게보고 할 것입니다. 실제로, 나는 것 보간 중 모델,하지만 난 것이라고 추정 만 직교 하나.


1

나는 이것을 언급하기 위해 방금 언급했지만, 충분한 담당자가 없으므로 답변으로 확장하려고 노력할 것입니다. "통계 학습 입문"(James et al., 2017, 수정 된 8 번째 인쇄)의 실험실 섹션 7.8.1에서 직교 다항식의 사용 여부와 raw=TRUE또는 raw=FALSEpoly()기능. 예를 들어 계수 추정치는 변경되지만 적합치가 변경되지는 않습니다.

# using the Wage dataset in the ISLR library
fit1 <- lm(wage ~ poly(age, 4, raw=FALSE), data=Wage)
fit2 <- lm(wage ~ poly(age, 4, raw=TRUE), data=Wage)
print(coef(fit1)) # coefficient estimates differ
print(coef(fit2))
all.equal(predict(fit1), predict(fit2)) #returns TRUE    

이 책은 또한 직교 다항식이 사용될 때 anova()중첩 된 F- 검정을 사용하여 얻은 p- 값 (다항식의 보증 정도를 탐색하기 위해)이 표준 t- 검정을 사용할 때 얻은 값과 동일한 방법에 대해 설명 summary(fit)합니다. 이는 특정 상황에서 F- 통계량이 t- 통계의 제곱과 같다는 것을 보여줍니다.


평판 번호와 상관없이 댓글을 답변으로 사용해서는 안됩니다.
Michael R. Chernick

마지막 요점과 관련하여 비 직교 다항식도 마찬가지입니다. 계수 t- 검정은 모형을 모형의 계수와 회귀 분석의 모든 계수가없는 모형 (한 번에 하나씩)을 비교하는 F- 검정과 같습니다.
Noah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.