Box-Cox ชอบการแปลงสำหรับตัวแปรอิสระหรือไม่?


53

Box-Cox มีการแปลงสำหรับตัวแปรอิสระหรือไม่? นั่นคือการแปลงที่ปรับตัวแปรให้เหมาะสมที่สุดเพื่อให้เหมาะสมกับแบบจำลองเชิงเส้นมากขึ้นหรือไม่xy~f(x)

ถ้าเป็นเช่นนั้นมีฟังก์ชั่นในการทำสิ่งนี้ด้วยRหรือไม่?


1
ผมไม่ทราบว่าสิ่งอำนวยความสะดวกใด ๆ สำหรับการทำเช่นนี้ในRและคิดเกี่ยวกับมันสักครู่ผมไม่แน่ใจว่าวิธีการหนึ่งที่จะทำเช่นนี้ได้ทั้งหมด เกณฑ์ใดที่คุณจะเพิ่มประสิทธิภาพเพื่อให้แน่ใจว่าการแปลง "เชิงเส้นมากที่สุด"? เป็นที่ดึงดูด แต่เท่าที่เห็นในคำตอบของฉันที่นี่ , R 2เพียงอย่างเดียวไม่สามารถนำมาใช้เพื่อดูว่าสมมติฐานเชิงเส้นของรูปแบบเป็นที่พอใจ คุณมีเกณฑ์ในใจบ้างไหม? R2R2
มาโคร

1
ฉันอยู่ภายใต้ความประทับใจที่ฉันได้เห็นกระดาษพูดคุยเกี่ยวกับเรื่องนั้น บางที googling ด้วย "covariate" แทนที่จะเป็น "ตัวแปรอิสระ" นั้นฉลาดกว่า
Stéphane Laurent

ฉันคิดว่า (จากหน่วยความจำ ... ) มีการใช้งานบางอย่างในแพ็คเกจรถยนต์ (R) แต่คุณยังตรวจสอบเกมเช่นในแพ็คเกจ gmcv
kjetil b halvorsen

ด้ายที่กล่าวถึงข้อสรุปอัตโนมัติของพารามิเตอร์ Box-Cox (โดยพร้อมกันเปลี่ยนตัวแปรอิสระทั้งหมดพร้อมกับตัวแปรตาม) ได้ปรากฏตัวขึ้นที่stats.stackexchange.com/questions/60431/...
whuber

คำตอบ:


72

John Tukey สนับสนุน " สามจุดวิธี " ของเขาสำหรับการค้นหาการแสดงออกของตัวแปรเพื่อสร้างความสัมพันธ์เชิงเส้น

ผมจะแสดงให้เห็นด้วยการออกกำลังกายจากหนังสือของเขาสำรวจวิเคราะห์ข้อมูล เหล่านี้เป็นข้อมูลความดันไอปรอทจากการทดลองซึ่งมีการเปลี่ยนแปลงอุณหภูมิและวัดความดันไอ

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

ความสัมพันธ์ไม่เป็นเชิงเส้นอย่างยิ่ง: ดูแผงด้านซ้ายในภาพประกอบ

พล็อต

เนื่องจากนี่เป็นแบบฝึกหัดเชิงสำรวจเราคาดหวังว่ามันจะเป็นการโต้ตอบ นักวิเคราะห์จะขอให้เริ่มต้นด้วยการระบุสามจุด "ทั่วไป" ในพล็อต : หนึ่งใกล้แต่ละปลายและหนึ่งในกลาง ฉันทำไปแล้วและทำเครื่องหมายเป็นสีแดง (เมื่อฉันออกกำลังกายครั้งแรกเมื่อนานมานี้ฉันใช้คะแนนชุดอื่น แต่กลับมาที่ผลลัพธ์เดียวกัน)

ในวิธีการสามจุดหนึ่งการค้นหา - โดยใช้กำลังดุร้ายหรืออย่างอื่น - สำหรับการแปลง Box-Cox ที่เมื่อนำไปใช้กับหนึ่งในพิกัด - ทั้ง y หรือ x - จะ (a) วางจุดทั่วไปโดยประมาณ บรรทัดและ (b) ใช้พลัง "ดี" โดยปกติแล้วจะเลือกจาก "บันได" ของอำนาจที่นักวิเคราะห์อาจตีความได้

ด้วยเหตุผลที่ชัดเจนในภายหลังฉันได้ขยายตระกูล Box-Cox ด้วยการอนุญาตให้ "offset" เพื่อให้การแปลงอยู่ในรูปแบบ

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) ในชุดข้อมูลไอปรอทเราจะได้รับแผงควบคุมกลางของพล็อต

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(1,253.75)25411


2732542732541/(1x)

2540


2
สวัสดีที่รัก Whuber ช่างเป็นคำตอบที่น่าสนใจฉันอ่านด้วยความยินดีขอบคุณ! (และฉันยังจะเล่นกับมันนิดเพื่อดูว่ามันอาจจะเหมาะกับปัญหาฉันทำงานกับ)
Tal Galili

3
n2data <- cbind(temperature, pressure)R

2
@landroni ส่วนประกอบและพลังเศษส่วนเล็ก ๆ มักเกิดขึ้นในทฤษฎีทางกายภาพเคมีและชีวภาพรวมถึงการพิจารณาเชิงเรขาคณิต (ตัวอย่างเช่นเมื่อตัวแปรเป็นปริมาณคิวบ์รูทของมันคือความยาว - ซึ่งสามารถตีความได้ - ในขณะที่พูดว่ารากที่เจ็ดของมันไม่มีการตีความทางเรขาคณิตอย่างง่าย) พลังอื่น ๆ ไม่ค่อยมีการตีความเช่นนี้
whuber

3
@ Frank ใช่แล้ว มันเป็นเทคนิคการสำรวจอย่างชัดเจนและไม่สะทกสะท้าน โปรดทราบว่ามันไม่ได้อ้างว่าคาดเดาได้ การสำรวจสามารถแนะนำวิธีในการดำเนินการต่อเท่านั้น เป็นไปได้ที่จะจินตนาการถึงการจัดสรรงบประมาณการสร้างแบบจำลองสี่เท่าเพื่อประเมินการเปลี่ยนแปลงเหล่านี้ - และการประมาณนั้นสามารถรวมเข้ากับอัลกอริทึมที่เหมาะสมโดยใช้วิธีการของ Tukey หรืออื่น ๆ (ML เป็นไปได้ชัดเจน)
whuber

5
YYλ

11

ดูสไลด์เหล่านี้เกี่ยวกับ"การวินิจฉัยการถดถอย"โดย John Fox (หาได้จากที่นี่พร้อมด้วยข้อมูลอ้างอิง) ซึ่งจะกล่าวถึงปัญหาของการเปลี่ยนแบบไม่เป็นเชิงเส้น มันครอบคลุม "กฎปูด" ของ Tukey สำหรับการเลือกการแปลงพลังงาน (แก้ไขโดยคำตอบที่ยอมรับ) แต่ยังกล่าวถึงการเปลี่ยนแปลงของ Box-Cox และ Yeo-Johnson ดูหัวข้อ 3.6 ของสไลด์ สำหรับการใช้เวลาที่เป็นทางการมากขึ้นโดยนักเขียนคนเดียวกันเห็นเจฟ็อกซ์, การประยุกต์ใช้การวิเคราะห์การถดถอยและเชิงเส้นทั่วไปรุ่นพิมพ์ครั้งที่สอง (Sage, 2008)

สำหรับแพ็คเกจ R จริงที่ช่วยในเรื่องนี้ลองดูแพ็คเกจรถยนต์ที่เขียนโดย J. Fox และ S. Weisberg แพ็คเกจนี้มาพร้อมกับJ. Fox และ S. Weisberg คู่หู R เพื่อการถดถอยประยุกต์, ฉบับที่สอง, (Sage, 2011) , อีกเล่มที่ต้องอ่าน การใช้แพ็คเกจนั้นคุณสามารถเริ่มจากbasicPower()(การแปลงพลังงานอย่างง่าย), bcPower()(การแปลง Box-Cox) และyjPower()(การแปลง Yeo-Johnson) นอกจากนี้ยังมีpowerTransform () :

ฟังก์ชั่น powerTransform ใช้ในการประมาณค่าการแปลงสภาพปกติของตัวแปรสุ่มหลายตัวแปรหรือตัวแปรหลายตัวแปร

ตรวจสอบหนังสือทั้งสองเล่มสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับทฤษฎีที่อยู่เบื้องหลังการเปลี่ยนแปลงเหล่านี้และวิธีการคำนวณ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.