Bağımsız değişkenler için Box-Cox benzeri dönüşüm?


53

Bağımsız değişkenler için Box-Cox benzeri bir dönüşüm var mı? Yani, değişkenini optimize eden bir dönüşüm, böylece doğrusal bir modele daha makul bir uyum sağlayacak mı?xy~f(x)

Öyleyse, bunu gerçekleştirecek bir işlev var Rmı?


1
Bunu yapmak için herhangi bir imkan bilmiyorum Rve, bir an için düşününce, bunu nasıl yapacağımı tam olarak bilemiyorum . En lineer dönüşümü sağlamak için hangi kriterleri optimize edersiniz? de görüldüğü gibi, cazip ama burada benim cevap , R 2 , tek başına bir modelin doğrusallık varsayımı memnun olup olmadığını görmek için kullanılamaz. Aklında bazı kriterler var mı? R2R2
Makro

1
İzlenim altında, bunun hakkında konuşurken bir makale gördüm. Belki "bağımsız değişken" yerine "değişken" ile gitmek daha mantıklıdır.
Stéphane Laurent

Sanırım (bellekten ...) bunun araba paketinde (R) bazı uygulamaları var. Ama aynı zamanda gam'in gmcv paketindeki gibi olduğunu da araştırırsın.
kjetil b halvorsen

Box-Cox parametrelerinin otomatik çıkarımını tartışan bir konu ( bağımlı değişkenle birlikte tüm bağımsız değişkenleri eşzamanlı olarak dönüştürerek) istatistik.stackexchange.com/questions/60431/… adresinde görülmüştür .
whuber

Yanıtlar:


72

John Tukey, ilişkileri doğrusallaştırmak için değişkenlerin ifadelerini bulmak için " üç puanlı yöntemini " savundu .

Keşif Verileri Analizi adlı kitabından bir alıştırma ile örnek göstereceğim . Bunlar, sıcaklığın değiştiği ve buhar basıncının ölçüldüğü bir deneyden elde edilen cıva buhar basıncı verileridir.

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

İlişki kesinlikle doğrusal değildir: şekildeki soldaki panele bakınız.

Arsalar

Bu bir keşif alıştırması olduğundan, etkileşimli olmasını bekliyoruz. Analistin arsada üç "tipik" nokta tanımlayarak başlaması istenir : her iki ucuna yakın biri ve biri ortadaki. Bunu burada yaptım ve kırmızı olarak işaretledim. (Bu alıştırmayı uzun zaman önce ilk yaptığımda farklı puanlar kullandım ancak aynı sonuçlara ulaştım.)

Üç nokta yönteminde, biri - kaba kuvvetle veya başka türlü - koordinatlardan birine uygulandığında - ya y veya x - (a) tipik noktalarını yaklaşık olarak line ve (b), genellikle analist tarafından yorumlanabilecek güçlerin bir "merdiveninden" seçilen "güzel" bir güç kullanır.

Daha sonra ortaya çıkacak nedenlerden ötürü, Box-Cox ailesini, bir "ofset" yaparak, dönüşümlerin formda olması için genişlettim.

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)
}

Üç nokta metodu cıva buharı veri setindeki basınç (y) değerlerine uygulandığında, çizimlerin orta panelini elde ederiz.

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)

Sorunun bağlamına benzer bir noktaya ulaştık: herhangi bir nedenden dolayı (genellikle artık varyansı dengelemek için), bağımlı değişkeni yeniden ifade ettik, ancak bağımsız bir değişkenle ilişkinin doğrusal olmadığını tespit ettik. Şimdi , bağımsız değişkeni ilişkiyi doğrusallaştırmak için yeniden ifade etmeye döndük . Bu aynı şekilde yapılır, yalnızca x ve y rollerini tersine çevirir:

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

parms(1,253.75)25411


2732542732541/(1x)

2540


2
Merhaba sevgili Whuber. Ne ilginç bir cevap, zevkle okudum, teşekkür ederim! (ve birlikte çalıştığım soruna nasıl uyduğunu görmek için biraz oynayacağım)
Tal Galili

3
n2data <- cbind(temperature, pressure)R

2
@landroni İntegral ve küçük kesirli güçler, genellikle fiziksel, kimyasal ve biyolojik teorilerde olduğu kadar geometrik düşüncelerden de kaynaklanmaktadır. (Örneğin, bir değişken bir hacim olduğunda, küp kökü bir uzunluktur - yorumlanabilir - oysa, yedinci kökü basit bir geometrik yorumlamaya sahip değildir.) Diğer güçler nadiren böyle bir yorumlamaya sahip değildir.
whuber

3
@ Frank Bu doğru; açıkça ve hiç şüphesiz bir keşif tekniğidir. Prediktif olduğunu iddia etmediğini bile unutmayın. Keşif devam etmek için sadece yollar önerebilir. Bu dönüşümleri tahmin etmek için modelleme bütçenizin dört df'sini tahsis etmeyi hayal etmek mümkündür, ancak - ve tahmin Tukey'in yaklaşımı ya da başka bir şekilde (ML açık bir olasılıktır) kullanılarak otomatik olarak uygun algoritmaya dahil edilebilir.
whuber

5
YYλ

11

John Fox'un " buradan çıkma, referanslarla tamamlanma " konusundaki "Regresyon teşhisi" konusundaki slaytlarına, doğrusal olmayanlığı dönüştürme konusunu kısaca tartışan bir göz atın . Güç dönüşümlerini seçmek için Tukey'in “şişkinlik kuralı” nı kapsar (kabul edilen cevap ile ele alınır), fakat aynı zamanda Box-Cox ve Yeo-Johnson dönüşüm ailelerini de belirtir. Slaytların 3.6 Bölümüne bakınız. Aynı yazar tarafından daha resmi bir yaklaşım için bakınız J. Fox, Uygulamalı Regresyon Analizi ve Genelleştirilmiş Doğrusal Modeller, İkinci Baskı (Sage, 2008) .

Buna yardımcı olan gerçek R paketlerine gelince , J. Fox ve S. Weisberg tarafından yazılan araç paketine kesinlikle bir göz atın . Bu pakette J. Fox ve S. Weisberg, Uygulamalı Regresyona Bir R Yardımcısı, İkinci Basım, (Sage, 2011) , bir başka okunması gereken kitap eşlik ediyor . Bu paketi kullanarak basicPower()(basit güç dönüşümleri), bcPower()(Box-Cox dönüşümleri) ve yjPower()(Yeo-Johnson dönüşümleri) başlayabilirsiniz . Ayrıca powerTransform () vardır :

PowerTransform işlevi, tek değişkenli veya çok değişkenli rasgele bir değişkenin normalleştirici dönüşümlerini tahmin etmek için kullanılır.

Bu dönüşümlerin arkasındaki teori ve hesaplamalı yaklaşımlar hakkında daha fazla ayrıntı için her iki kitabı da kontrol edin.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.