독립 변수에 대한 Box-Cox 유사 변환?


53

독립 변수에 대한 Box-Cox와 같은 변환이 있습니까? 즉, 변수 를 최적화하여 선형 모델에보다 합리적으로 맞는 변환입니까?xy~f(x)

그렇다면, 이것을 수행하는 기능이 R있습니까?


1
나는이 작업을 수행하기위한 모든 시설을 모르는 R잠시 그것에 대해 생각하고, 나는 정확히 모르겠어요 어떻게 하나에서이 모든 것을 할 것입니다. "가장 선형적인"변환을 보장하기 위해 어떤 기준을 최적화 하시겠습니까? 에서 볼 수 있듯이, 유혹하지만, 여기에 내 대답은 , 단독 모델의 선형성 가정이 만족 여부를 확인하는 데 사용할 수 없습니다. 몇 가지 기준을 염두에 두셨습니까? R 2R2R2
매크로

1
나는 이미 그것에 대해 이야기하는 논문을 본 인상을 받고 있습니다. 어쩌면 "독립 변수"대신 "공변량"을 사용한 인터넷 검색이 더 신중할 것입니다.
Stéphane Laurent

나는 (메모리에서) 자동차 패키지 (R)에 이것의 구현이 있다고 생각합니다. 그러나 당신은 또한 패키지 gmcv에서와 같은 gam을 조사합니다.
kjetil b halvorsen

Box-Cox 매개 변수의 자동 추론 ( 종속 변수와 함께 모든 독립 변수를 동시에 변환 하여)을 설명하는 스레드가 stats.stackexchange.com/questions/60431/…에 나타났습니다 .
whuber

답변:


72

존 터키 (John Tukey)는 관계를 선형화하기 위해 변수의 재 표현을 찾는 "삼점 방법 "을 옹호했다 .

나는 그의 저서 인 Exploratory Data Analysis 의 연습으로 설명 할 것이다 . 이들은 온도가 변하고 증기압이 측정 된 실험으로부터 수은 증기압 데이터이다.

pressure <- c(0.0004, 0.0013, 0.006, 0.03, 0.09, 0.28, 0.8, 1.85, 4.4, 
              9.2, 18.3, 33.7, 59, 98, 156, 246, 371, 548, 790) # mm Hg
temperature <- seq(0, 360, 20) # Degrees C

관계는 매우 비선형 적입니다. 그림의 왼쪽 패널을 참조하십시오.

줄거리

이것은 탐구적인 운동 이기 때문에 우리는 그것이 대화식 일 것으로 기대합니다. 분석가는 음모에서 세 개의 "일반적인"점, 즉 각 끝 근처와 가운데 하나를 식별 하여 시작 해야 합니다 . 나는 여기에서 그렇게하고 빨간색으로 표시했습니다. (오래 전에이 운동을 처음했을 때 다른 점을 사용했지만 같은 결과를 얻었습니다.)

세 점 방법에서, 하나 는 좌표 중 하나 에 적용 할 때 ( y 또는 x) 상자 형-변형 변환을 무차별 적으로 또는 다른 방법으로 검색 하여 (a) 일반적인 점을 대략 line and (b)는 일반적으로 분석가가 해석 할 수있는 "사다리"의 힘에서 선택된 "좋은"힘을 사용합니다.

나중에 명백해질 이유 때문에, "오프셋"을 허용하여 Box-Cox 제품군을 확장하여 변환이 형식화되도록했습니다.

x(x+α)λ1λ.

빠르고 더러운 R구현이 있습니다. 먼저 최적의 솔루션을 찾은 다음 를 사다리에서 가장 가까운 값으로 반올림하고 해당 제한에 따라 최적화합니다 (합당한 한계 내). 모든 계산이 원본 데이터 집합에서 세 가지 일반적인 점을 기반으로하기 때문에 엄청나게 빠릅니다. (투키와 마찬가지로 연필과 종이로도 할 수 있습니다.)λ α(λ,α)λα

box.cox <- function(x, parms=c(1,0)) {
  lambda <- parms[1]
  offset <- parms[2]
  if (lambda==0) log(x+offset) else ((x+offset)^lambda - 1)/lambda
}
threepoint <- function(x, y, ladder=c(1, 1/2, 1/3, 0, -1/2, -1)) {
  # x and y are length-three samples from a dataset.
  dx <- diff(x)
  f <- function(parms) (diff(diff(box.cox(y, parms)) / dx))^2
  fit <- nlm(f, c(1,0))
  parms <- fit$estimate #$
  lambda <- ladder[which.min(abs(parms[1] - ladder))]
  if (lambda==0) offset = 0 else {
    do <- diff(range(y))
    offset <- optimize(function(x) f(c(lambda, x)), 
                       c(max(-min(x), parms[2]-do), parms[2]+do))$minimum    
  }
  c(lambda, offset)
}

수은 증기 데이터 세트의 압력 (y) 값에 3 점 방법을 적용하면 플롯의 중간 패널을 얻습니다.

data <- cbind(temperature, pressure)
n <- dim(data)[1]
i3 <- c(2, floor((n+1)/2), n-1)
parms <- threepoint(temperature[i3], pressure[i3])
y <- box.cox(pressure, parms)

이 경우, parms동일한 밝혀 : 상기 방법은 압력을 대수 변환하는 선출한다.(0,0)

우리는 질문의 맥락과 유사한 점에 도달했습니다. 어떤 이유로 든 (일반적으로 잔차 분산을 안정화하기 위해) 종속 변수를 다시 표현 했지만 독립 변수와의 관계가 비선형이라는 것을 알았습니다. 이제 관계를 선형화하기 위해 독립 변수를 다시 표현합니다 . 이것은 x와 y의 역할을 반대로 바꾸는 것과 같은 방식으로 수행됩니다.

parms <- threepoint(y[i3], temperature[i3])
x <- box.cox(temperature, parms)

parms독립 변수 (온도) 에 대한 값은 . 즉, 온도를 C 이상으로 섭씨 온도로 표시하고 그 역수 ( 전력)를 사용해야합니다 . 기술적 인 이유로 Box-Cox 변환 은 결과에 을 더 추가합니다 . 결과 관계는 오른쪽 패널에 표시됩니다.254 1 1(1,253.75)25411


지금까지 과학적 배경이 가장 낮은 사람은 데이터가 물리적 온도를 의미하기 때문에 대신 아닌 절대 온도 를 사용하도록 우리에게 "말하고"있다는 것을 인식했습니다 . (마지막 플롯이 대신 의 오프셋을 사용하여 다시 그려 질 때, 거의 눈에 띄는 변화가 없습니다. 물리학자는 x / 축에 로 레이블을 지정합니다 . 즉, 절대 온도입니다.)254 273 254 1 / ( 1 - X )2732542732541/(1x)

이것은 통계적 탐구가 조사 대상의 이해와 상호 작용 하는 방법의 좋은 예입니다 . 실제로, 절대 절대 온도 는 물리 법칙에서 항상 나타납니다. 결과적으로, 이 세기의 단순하고 간단한 데이터 세트를 탐색하기 위해 간단한 EDA 방법을 단독 으로 사용 하여 Clausius-Clapeyron 관계를 재발견했습니다 . 증기압의 로그는 역 절대 온도의 선형 함수입니다. 뿐만 아니라 절대 영점 ( 나쁘지 않습니다.0254오른쪽 그림의 경사에서 기화의 특정 엔탈피를 계산할 수 있으며 잔존물을 신중하게 분석하면 특이 치 ( ° C 의 온도 값)를 식별합니다 . 기화 엔탈피가 온도에 따라 (매우 약간) 어떻게 변하는 지 (이상 기체 법칙에 위배됨) 우리에게 수은 기체 분자의 유효 반경에 대한 정확한 정보를 줄 수 있는지 보여줍니다! 19 개의 데이터 포인트와 EDA의 기본 기술을 모두 갖추고 있습니다.0


2
친애하는 Whuber. 이 흥미로운 답변, 나는 즐겁게 읽었습니다, 감사합니다! (그리고 나는 그것이 내가 다루고있는 문제에 어떻게 맞는지 알기 위해 약간 놀아 볼 것이다)
Tal Galili

3
@Andre이 코드의 마지막 부분을 사용하려면에서와 같이 x 및 y 변수를 x 행렬 에 바인딩해야합니다 . (이 작업은 (x, y) 데이터가 일반적으로에 저장되는 방식과 일치하도록하기 위해 수행되었습니다 . 매트릭스 또는 데이터 프레임으로) 해당 단계를 생략 한 것에 대해 사과하고 해당 단계를 포함하도록 답변을 편집했습니다. 작동합니다. 2n2data <- cbind(temperature, pressure)R
whuber

2
@landroni 적분 및 소 분수는 종종 물리학 적, 화학적, 생물학적 이론뿐만 아니라 기하학적 고려를 통해 발생합니다. (예를 들어, 변수가 부피 일 때, 제곱근은 단순한 기하학적 해석이없는 반면, 제곱근은 해석 할 수있는 길이입니다.) 다른 힘은 그러한 해석을 거의하지 않습니다.
whuber

3
@ 프랭크 맞습니다; 그것은 명백하고 당연한 탐구 기술입니다. 그것은 예측 적이라고 주장하지도 않습니다. 탐색은 진행 방법 만 제안 할 수 있습니다. 그러나 이러한 변환을 추정하기 위해 모델링 예산의 4 df를 할당한다고 상상할 수 있으며 Tukey의 접근 방식 또는 다른 방법을 사용하여 추정이 피팅 알고리즘에 자동으로 통합 될 수 있습니다 (ML은 명백한 가능성입니다).
whuber

5
그들은에서 고려 불확도 (매우 많은 양)을 고려하지 않는 의 중심하지 않는 한 - 기존 와 추정 정보 행렬의 명시 적 부분입니다. Y λYYλ
Frank Harrell

11

비선형 성 변환 문제를 간략하게 설명 하는 John Fox의 "회귀 진단" 슬라이드 ( 여기 에서 참조 가능)를 살펴보십시오. 여기에는 전력 변환을 선택하기위한 Tukey의 "불충분 한 규칙"(허용 된 답변으로 해결)이 포함되어 있지만 Box-Cox 및 Yeo-Johnson 변환 제품군도 언급되어 있습니다. 슬라이드 3.6 절을 참조하십시오. 같은 저자의보다 공식적인 설명은 J. Fox, Applied Regression Analysis 및 Generalized Linear Models, Second Edition (Sage, 2008)을 참조하십시오 .

이를 지원하는 실제 R 패키지는 J. Fox와 S. Weisberg가 작성한 자동차 패키지를 절대적으로 살펴보십시오 . 이 패키지는 J. Fox와 S. Weisberg, Applied Regression에 대한 R 동반자, Second Edition (Sage, 2011) 과 함께 제공됩니다. 이 패키지를 사용하면 basicPower()(단순 전력 변환), bcPower()(박스-콕스 변환) 및 yjPower()(여존 존슨 변환) 에서 시작할 수 있습니다 . 도 있습니다 powerTransform은 () :

powerTransform 함수는 일 변량 또는 다변량 랜덤 변수의 정규화 변환을 추정하는 데 사용됩니다.

이러한 변형의 이론과 계산 방법에 대한 자세한 내용은 두 권의 책을 확인하십시오.


9

공변량 변환의 추정을 추정 프로세스의 공식적인 부분으로 만드는 데 많은 이점이 있습니다. 이것은 포함 된 매개 변수의 수를 인식하고 양호한 신뢰 구간 적용 범위 및 유형 I 오류 보존을 생성합니다. 회귀 스플라인이 가장 좋은 방법 중 하나입니다. 스플라인은 로그 접근 방식과 달리 음수 값과 음수 값으로 작동 합니다.X

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.