독립 변수에 대한 Box-Cox와 같은 변환이 있습니까? 즉, 변수 를 최적화하여 선형 모델에보다 합리적으로 맞는 변환입니까?y~f(x)
그렇다면, 이것을 수행하는 기능이 R
있습니까?
독립 변수에 대한 Box-Cox와 같은 변환이 있습니까? 즉, 변수 를 최적화하여 선형 모델에보다 합리적으로 맞는 변환입니까?y~f(x)
그렇다면, 이것을 수행하는 기능이 R
있습니까?
답변:
존 터키 (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 제품군을 확장하여 변환이 형식화되도록했습니다.
빠르고 더러운 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
동일한 밝혀 : 상기 방법은 압력을 대수 변환하는 선출한다.
우리는 질문의 맥락과 유사한 점에 도달했습니다. 어떤 이유로 든 (일반적으로 잔차 분산을 안정화하기 위해) 종속 변수를 다시 표현 했지만 독립 변수와의 관계가 비선형이라는 것을 알았습니다. 이제 관계를 선형화하기 위해 독립 변수를 다시 표현합니다 . 이것은 x와 y의 역할을 반대로 바꾸는 것과 같은 방식으로 수행됩니다.
parms <- threepoint(y[i3], temperature[i3])
x <- box.cox(temperature, parms)
parms
독립 변수 (온도) 에 대한 값은 . 즉, 온도를 C 이상으로 섭씨 온도로 표시하고 그 역수 ( 전력)를 사용해야합니다 . 기술적 인 이유로 Box-Cox 변환 은 결과에 을 더 추가합니다 . 결과 관계는 오른쪽 패널에 표시됩니다.− 254 − 1 1
지금까지 과학적 배경이 가장 낮은 사람은 데이터가 물리적 온도를 의미하기 때문에 대신 아닌 절대 온도 를 사용하도록 우리에게 "말하고"있다는 것을 인식했습니다 . (마지막 플롯이 대신 의 오프셋을 사용하여 다시 그려 질 때, 거의 눈에 띄는 변화가 없습니다. 물리학자는 x / 축에 로 레이블을 지정합니다 . 즉, 절대 온도입니다.)254 273 254 1 / ( 1 - X )
이것은 통계적 탐구가 조사 대상의 이해와 상호 작용 하는 방법의 좋은 예입니다 . 실제로, 절대 절대 온도 는 물리 법칙에서 항상 나타납니다. 결과적으로, 이 세기의 단순하고 간단한 데이터 세트를 탐색하기 위해 간단한 EDA 방법을 단독 으로 사용 하여 Clausius-Clapeyron 관계를 재발견했습니다 . 증기압의 로그는 역 절대 온도의 선형 함수입니다. 뿐만 아니라 절대 영점 ( 나쁘지 않습니다.0오른쪽 그림의 경사에서 기화의 특정 엔탈피를 계산할 수 있으며 잔존물을 신중하게 분석하면 특이 치 ( ° C 의 온도 값)를 식별합니다 . 기화 엔탈피가 온도에 따라 (매우 약간) 어떻게 변하는 지 (이상 기체 법칙에 위배됨) 우리에게 수은 기체 분자의 유효 반경에 대한 정확한 정보를 줄 수 있는지 보여줍니다! 19 개의 데이터 포인트와 EDA의 기본 기술을 모두 갖추고 있습니다.
data <- cbind(temperature, pressure)
R
비선형 성 변환 문제를 간략하게 설명 하는 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 함수는 일 변량 또는 다변량 랜덤 변수의 정규화 변환을 추정하는 데 사용됩니다.
이러한 변형의 이론과 계산 방법에 대한 자세한 내용은 두 권의 책을 확인하십시오.
R
잠시 그것에 대해 생각하고, 나는 정확히 모르겠어요 어떻게 하나에서이 모든 것을 할 것입니다. "가장 선형적인"변환을 보장하기 위해 어떤 기준을 최적화 하시겠습니까? 에서 볼 수 있듯이, 유혹하지만, 여기에 내 대답은 , 단독 모델의 선형성 가정이 만족 여부를 확인하는 데 사용할 수 없습니다. 몇 가지 기준을 염두에 두셨습니까? R 2