네 가능합니다.
x i 에서 계산 된 직교 다항식의 일정하지 않은 부분 이라고합시다 . (각 열은 열 벡터입니다.) x i 에 대해 이들을 회귀 분석 하면 완벽하게 맞아야합니다. 직교 다항식을 계산하는 절차를 문서화하지 않은 경우에도 소프트웨어를 사용하여이 작업을 수행 할 수 있습니다 . z j 의 회귀는 다음과 같은 계수 γ i j 를 산출 합니다.지1, z2, z삼엑스나는엑스나는지제이γ나는 j
지나는 j= γj 0+ x나는γj 1+ x2나는γj 2+ x삼나는γj 3.
결과는 오른쪽 곱셈시 설계 행렬 X = ( 1 ; x ; x 2 ; x 3 ) 을 Z = ( 1 ; z 1 ; z 2 ; z 3 ) = X Γ 로 변환 하는 행렬 Γ 입니다 . .4 × 4Γ엑스= ( 1 ;x ;엑스2;엑스삼)
지= ( 1 ;지1;지2;지삼) = XΓ .(1)
모델을 장착 한 후
전자 (Y) = Zβ
추정 된 계수 취득 β (네 요소 열 벡터)를 대체 할 수는 ( 1 ) 수득β^( 1 )
와이^= Zβ^= ( XΓ ) β^=X( Γ β^) .
따라서 원래의 관점에서 모델의 추정 계수 벡터의 파워 (원시, 유엔 - 직교 화)되고 , X를 .Γ β^엑스
다음 R
코드는 이러한 절차를 보여주고 합성 데이터로 테스트합니다.
n <- 10 # Number of observations
d <- 3 # Degree
#
# Synthesize a regressor, its powers, and orthogonal polynomials thereof.
#
x <- rnorm(n)
x.p <- outer(x, 0:d, `^`); colnames(x.p) <- c("Intercept", paste0("x.", 1:d))
z <- poly(x, d)
#
# Compute the orthogonal polynomials in terms of the powers via OLS.
#
xform <- lm(cbind(1, z) ~ x.p-1)
gamma <- coef(xform)
#
# Verify the transformation: all components should be tiny, certainly
# infinitesimal compared to 1.
#
if (!all.equal(as.vector(1 + crossprod(x.p %*% gamma - cbind(1,z)) - 1),
rep(0, (d+1)^2)))
warning("Transformation is inaccurate.")
#
# Fit the model with orthogonal polynomials.
#
y <- x + rnorm(n)
fit <- lm(y ~ z)
#summary(fit)
#
# As a check, fit the model with raw powers.
#
fit.p <- lm(y ~ .-1, data.frame(x.p))
#summary(fit.p)
#
# Compare the results.
#
(rbind(Computed=as.vector(gamma %*% coef(fit)), Fit=coef(fit.p)))
if (!all.equal(as.vector(gamma %*% coef(fit)), as.vector(coef(fit.p))))
warning("Results were not the same.")