Box-Cox มีการแปลงสำหรับตัวแปรอิสระหรือไม่? นั่นคือการแปลงที่ปรับตัวแปรให้เหมาะสมที่สุดเพื่อให้เหมาะสมกับแบบจำลองเชิงเส้นมากขึ้นหรือไม่y~f(x)
ถ้าเป็นเช่นนั้นมีฟังก์ชั่นในการทำสิ่งนี้ด้วยR
หรือไม่?
Box-Cox มีการแปลงสำหรับตัวแปรอิสระหรือไม่? นั่นคือการแปลงที่ปรับตัวแปรให้เหมาะสมที่สุดเพื่อให้เหมาะสมกับแบบจำลองเชิงเส้นมากขึ้นหรือไม่y~f(x)
ถ้าเป็นเช่นนั้นมีฟังก์ชั่นในการทำสิ่งนี้ด้วยR
หรือไม่?
คำตอบ:
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" เพื่อให้การแปลงอยู่ในรูปแบบ
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
เราได้มาถึงจุดที่คล้ายคลึงกับบริบทของคำถาม: ด้วยเหตุผลใดก็ตาม (โดยปกติจะรักษาเสถียรภาพของความแปรปรวนที่เหลือ) เราได้อีกครั้งแสดงขึ้นอยู่กับตัวแปร แต่เราพบว่ามีความสัมพันธ์กับตัวแปรอิสระคือไม่เชิงเส้น ดังนั้นตอนนี้เราหันมาแสดงตัวแปรอิสระอีกครั้งเพื่อพยายามทำให้ความสัมพันธ์เป็นเส้นตรง สิ่งนี้ทำได้ในลักษณะเดียวกันเพียงแค่ย้อนกลับบทบาทของ x และ y:
parms <- threepoint(y[i3], temperature[i3])
x <- box.cox(temperature, parms)
parms
ดูสไลด์เหล่านี้เกี่ยวกับ"การวินิจฉัยการถดถอย"โดย 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 ใช้ในการประมาณค่าการแปลงสภาพปกติของตัวแปรสุ่มหลายตัวแปรหรือตัวแปรหลายตัวแปร
ตรวจสอบหนังสือทั้งสองเล่มสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับทฤษฎีที่อยู่เบื้องหลังการเปลี่ยนแปลงเหล่านี้และวิธีการคำนวณ
R
และคิดเกี่ยวกับมันสักครู่ผมไม่แน่ใจว่าวิธีการหนึ่งที่จะทำเช่นนี้ได้ทั้งหมด เกณฑ์ใดที่คุณจะเพิ่มประสิทธิภาพเพื่อให้แน่ใจว่าการแปลง "เชิงเส้นมากที่สุด"? เป็นที่ดึงดูด แต่เท่าที่เห็นในคำตอบของฉันที่นี่ , R 2เพียงอย่างเดียวไม่สามารถนำมาใช้เพื่อดูว่าสมมติฐานเชิงเส้นของรูปแบบเป็นที่พอใจ คุณมีเกณฑ์ในใจบ้างไหม?