การแปลง ILR (Isometric Log-Ratio) ใช้ในการวิเคราะห์ข้อมูลองค์ประกอบ การสังเกตใด ๆ คือชุดของค่าบวกที่รวมเข้ากับความสามัคคีเช่นสัดส่วนของสารเคมีในส่วนผสมหรือสัดส่วนของเวลาทั้งหมดที่ใช้ไปในกิจกรรมต่าง ๆ sum-to-unity ไม่เปลี่ยนแปลงหมายความว่าแม้ว่าอาจมีองค์ประกอบk≥2สำหรับการสังเกตแต่ละครั้ง แต่ก็มีเพียงค่าk−1เป็นอิสระตามหน้าที่ (เรขาคณิตการสังเกตอยู่บนk−1มิติมิติในkมิติปริภูมิแบบยุคลิดRk. ธรรมชาติอย่างง่าย ๆ นี้มีให้เห็นในรูปสามเหลี่ยมของแผนการกระจายของข้อมูลจำลองที่แสดงด้านล่าง)
โดยทั่วไปแล้วการแจกแจงของส่วนประกอบจะกลายเป็น "nicer" เมื่อมีการแปลงไฟล์บันทึก การแปลงนี้สามารถปรับขนาดได้โดยการหารค่าทั้งหมดในการสังเกตด้วยค่าเฉลี่ยเรขาคณิตก่อนบันทึก (เท่ากับบันทึกของข้อมูลในการสังเกตใด ๆ จะถูกจัดกึ่งกลางโดยการลบค่าเฉลี่ย) ซึ่งเป็นที่รู้จักกันในชื่อการแปลง "อัตรากึ่งกลางบันทึก" หรือ CLR ค่าผลลัพธ์ยังคงอยู่ภายในไฮเปอร์เพลนในRkเนื่องจากการขยายทำให้การรวมของบันทึกเป็นศูนย์ ILR ประกอบด้วยการเลือกพื้นฐานแบบดั้งเดิมใด ๆ สำหรับไฮเปอร์เพลนนี้: พิกัดk−1ของการสังเกตแต่ละครั้งที่เปลี่ยนรูปกลายเป็นข้อมูลใหม่ เท่าไฮเปอร์เพลหมุน (หรือสะท้อน) ให้ตรงกับเครื่องบินหายไปกับkthประสานงานและเป็นหนึ่งในการใช้งานครั้งแรกk−1พิกัด (เพราะการหมุนและการสะท้อนรักษาระยะห่างพวกเขาจะisometriesดังนั้นชื่อของขั้นตอนนี้.)
Tsagris, Preston และ Wood กล่าวว่า "ตัวเลือกมาตรฐานของ [เมทริกซ์การหมุน] Hคือเมทริกซ์ย่อยของ Helmert ที่ได้จากการเอาแถวแรกออกจากเมทริกซ์ Helmert"
เมทริกซ์คำสั่ง Helmert ของkถูกสร้างขึ้นในลักษณะที่เรียบง่าย (ดูตัวอย่าง Harville p. 86) แถวแรกของมันคือ1วินาที แถวถัดไปเป็นหนึ่งในที่ง่ายที่สุดที่สามารถทำฉากกับแถวแรกคือ(1,−1,0,…,0) ) แถวJเป็นหนึ่งในวิธีที่ง่ายที่สุดที่มีมุมฉากกับแถวก่อนหน้าทั้งหมด: รายการแรกของj - 1คือ1วินาที, ซึ่งรับประกันได้ว่าเป็นมุมฉากกับแถว2 , 3 , … , j - 1และของJTHรายการถูกตั้งไว้ที่1 - jที่จะทำให้มันตั้งฉากกับแถวแรก (นั่นคือรายการที่จะต้องรวมศูนย์) แถวทั้งหมดจะถูกลดขนาดเป็นความยาวหน่วย
ที่นี่เพื่อแสดงให้เห็นถึงรูปแบบเป็นเมทริกซ์เฮลเมอร์4 × 4ก่อนที่จะลดแถว:
⎛⎝⎜⎜⎜11111- 11110- 21100- 3⎞⎠⎟⎟⎟.
(แก้ไขเพิ่มสิงหาคม 2017) แง่มุมที่ดีอย่างหนึ่งของ "ความแตกต่าง" เหล่านี้ (ซึ่งอ่านทีละแถว) คือความสามารถในการตีความ แถวแรกถูกลบทิ้งเหลือk - 1แถวที่เหลือเพื่อแสดงข้อมูล แถวที่สองเป็นสัดส่วนกับความแตกต่างระหว่างตัวแปรที่สองและที่หนึ่ง แถวที่สามเป็นสัดส่วนกับความแตกต่างระหว่างตัวแปรที่สามและสองคนแรก โดยทั่วไปแถวJ ( 2 ≤ j ≤ k ) สะท้อนความแตกต่างระหว่างตัวแปรJและสิ่งที่อยู่ข้างหน้าตัวแปร1 , 2 , … , j - 1. สิ่งนี้ทำให้ตัวแปรแรกj = 1เป็น "ฐาน" สำหรับความต่างทั้งหมด ฉันพบว่าการตีความเหล่านี้มีประโยชน์เมื่อติดตาม ILR โดยการวิเคราะห์ส่วนประกอบหลัก (PCA): ช่วยให้การตีความการโหลดอย่างน้อยคร่าว ๆ ในแง่ของการเปรียบเทียบระหว่างตัวแปรดั้งเดิม ฉันได้แทรกบรรทัดลงในการR
ใช้งานilr
ด้านล่างซึ่งให้ชื่อตัวแปรที่เหมาะสมกับเอาต์พุตเพื่อช่วยในการตีความนี้ (สิ้นสุดการแก้ไข)
เนื่องจากR
มีฟังก์ชั่นcontr.helmert
ในการสร้างเมทริกซ์ดังกล่าว (แม้ว่าจะไม่มีการปรับสเกลและด้วยแถวและคอลัมน์ที่ถูกทำให้เป็นโมฆะและถ่ายโอน) คุณไม่จำเป็นต้องเขียนโค้ด (ง่าย) เพื่อทำเช่นนั้น เมื่อใช้สิ่งนี้ฉันได้ใช้ ILR (ดูด้านล่าง) ในการออกกำลังกายและทดสอบฉันสร้างการดึงอิสระ1000ครั้งจากการแจกแจง Dirichlet (ด้วยพารามิเตอร์1,2,3,4 ) และวางแผนตารางเมทริกซ์สแคตเตอร์ นี่k=4 4
จุดทั้งหมดอยู่ใกล้กับมุมซ้ายล่างและเติมแพตช์สามเหลี่ยมของพื้นที่การพล็อตตามลักษณะของข้อมูลประกอบ
ILR ของพวกเขามีเพียงสามตัวแปร, พล็อตเป็นเมทริกซ์กระจายอีกครั้ง:
สิ่งนี้จะดูดีกว่า: scatterplots ได้รับรูปร่าง "รูปวงรีเมฆ" ที่มีลักษณะเฉพาะมากขึ้นตอบสนองต่อการวิเคราะห์อันดับสองได้ดีขึ้นเช่นการถดถอยเชิงเส้นและ PCA
Tsagris และคณะ พูดคุยเรื่อง CLR โดยใช้การแปลง Box-Cox ซึ่งสรุปลอการิทึม (บันทึกคือการแปลง Box-Cox พร้อมพารามิเตอร์0 ) มันมีประโยชน์เพราะตามที่ผู้เขียน (ถูกต้อง IMHO) ให้เหตุผลในหลาย ๆ แอปพลิเคชันข้อมูลที่ควรจะกำหนดการเปลี่ยนแปลงของพวกเขา ข้อมูลเหล่านี้ Dirichlet พารามิเตอร์ของ1/2 (ซึ่งเป็นครึ่งทางระหว่างไม่มีการเปลี่ยนแปลงและการเปลี่ยนแปลงเข้าสู่ระบบ) ผลงานที่สวยงาม:
1/2
การวางนัยทั่วไปนี้ใช้งานในilr
ฟังก์ชั่นด้านล่าง คำสั่งในการสร้างตัวแปร "Z" เหล่านี้เป็นเพียงแค่
z <- ilr(x, 1/2)
ข้อดีอย่างหนึ่งของการแปลง Box-Cox คือการบังคับใช้กับการสังเกตที่มีค่าศูนย์จริง: มันยังคงถูกกำหนดหากพารามิเตอร์นั้นเป็นค่าบวก
อ้างอิง
Michail T. Tsagris ไซมอนเพรสตันและแอนดรู TA ไม้, การเปลี่ยนแปลงอำนาจข้อมูลที่ใช้สำหรับข้อมูล compositional arXiv: 1106.1451v2 [stat.ME] 16 มิถุนายน 2554
เดวิดเอ Harville, เมทริกซ์พีชคณิตจากมุมมองของนักสถิติ Springer Science & Business Media, 27 มิ.ย. 2551
นี่คือR
รหัส
#
# ILR (Isometric log-ratio) transformation.
# `x` is an `n` by `k` matrix of positive observations with k >= 2.
#
ilr <- function(x, p=0) {
y <- log(x)
if (p != 0) y <- (exp(p * y) - 1) / p # Box-Cox transformation
y <- y - rowMeans(y, na.rm=TRUE) # Recentered values
k <- dim(y)[2]
H <- contr.helmert(k) # Dimensions k by k-1
H <- t(H) / sqrt((2:k)*(2:k-1)) # Dimensions k-1 by k
if(!is.null(colnames(x))) # (Helps with interpreting output)
colnames(z) <- paste0(colnames(x)[-1], ".ILR")
return(y %*% t(H)) # Rotated/reflected values
}
#
# Specify a Dirichlet(alpha) distribution for testing.
#
alpha <- c(1,2,3,4)
#
# Simulate and plot compositional data.
#
n <- 1000
k <- length(alpha)
x <- matrix(rgamma(n*k, alpha), nrow=n, byrow=TRUE)
x <- x / rowSums(x)
colnames(x) <- paste0("X.", 1:k)
pairs(x, pch=19, col="#00000040", cex=0.6)
#
# Obtain the ILR.
#
y <- ilr(x)
colnames(y) <- paste0("Y.", 1:(k-1))
#
# Plot the ILR.
#
pairs(y, pch=19, col="#00000040", cex=0.6)