ฉันมีข้อมูลประเภทเดียวกัน 92 ชุด
ฉันต้องการสร้างเมทริกซ์สหสัมพันธ์สำหรับสองชุดค่าผสมที่เป็นไปได้
เช่นฉันต้องการเมทริกซ์ 92 x92
องค์ประกอบดังกล่าว (ci, cj) ควรมีความสัมพันธ์ระหว่าง ci และ cj
ฉันจะทำอย่างไร?
ฉันมีข้อมูลประเภทเดียวกัน 92 ชุด
ฉันต้องการสร้างเมทริกซ์สหสัมพันธ์สำหรับสองชุดค่าผสมที่เป็นไปได้
เช่นฉันต้องการเมทริกซ์ 92 x92
องค์ประกอบดังกล่าว (ci, cj) ควรมีความสัมพันธ์ระหว่าง ci และ cj
ฉันจะทำอย่างไร?
คำตอบ:
ตัวอย่าง,
d <- data.frame(x1=rnorm(10),
x2=rnorm(10),
x3=rnorm(10))
cor(d) # get correlations (returns matrix)
คุณสามารถใช้แพ็คเกจ 'corrplot'
d <- data.frame(x1=rnorm(10),
x2=rnorm(10),
x3=rnorm(10))
M <- cor(d) # get correlations
library('corrplot') #package corrplot
corrplot(M, method = "circle") #plot matrix
ข้อมูลเพิ่มเติมที่นี่: http://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html
ครฟังก์ชั่นจะใช้คอลัมน์ของเมทริกซ์ในการคำนวณของความสัมพันธ์ ดังนั้นจำนวนแถวที่จะต้องเหมือนกันระหว่างเมทริกซ์ของคุณxและเมทริกซ์ปี เช่น:
set.seed(1)
x <- matrix(rnorm(20), nrow=5, ncol=4)
y <- matrix(rnorm(15), nrow=5, ncol=3)
COR <- cor(x,y)
COR
image(x=seq(dim(x)[2]), y=seq(dim(y)[2]), z=COR, xlab="x column", ylab="y column")
text(expand.grid(x=seq(dim(x)[2]), y=seq(dim(y)[2])), labels=round(c(COR),2))
นี่คือตัวอย่างของป้ายชื่อแถวและคอลัมน์ที่กำหนดเองบนเมทริกซ์สหสัมพันธ์ที่คำนวณด้วยเมทริกซ์เดียว:
png("corplot.png", width=5, height=5, units="in", res=200)
op <- par(mar=c(6,6,1,1), ps=10)
COR <- cor(iris[,1:4])
image(x=seq(nrow(COR)), y=seq(ncol(COR)), z=cor(iris[,1:4]), axes=F, xlab="", ylab="")
text(expand.grid(x=seq(dim(COR)[1]), y=seq(dim(COR)[2])), labels=round(c(COR),2))
box()
axis(1, at=seq(nrow(COR)), labels = rownames(COR), las=2)
axis(2, at=seq(ncol(COR)), labels = colnames(COR), las=1)
par(op)
dev.off()
image(x=seq(dim(x)[2]), y=seq(dim(y)[2]), z=COR, col=rev(heat.colors(20)), xlab="x column", ylab="y column")
image
ฟังก์ชั่นไม่ได้โดยอัตโนมัติใช้เวลาแถวและคอลัมน์ชื่อนี้จึงต้องมีการเพิ่ม
มีวิธีอื่นในการบรรลุสิ่งนี้: ( พล็อตเมทริกซ์สหสัมพันธ์ลงในกราฟ ) แต่ฉันชอบเวอร์ชันของคุณที่มีความสัมพันธ์ในช่อง มีวิธีเพิ่มชื่อตัวแปรในคอลัมน์ x และ y แทนที่จะเป็นเพียงตัวเลขดัชนีเหล่านั้นหรือไม่? สำหรับฉันนั่นจะทำให้เป็นโซลูชันที่สมบูรณ์แบบ ขอบคุณ!
แก้ไข: ฉันพยายามแสดงความคิดเห็นในโพสต์ของ [Marc in the box] แต่ฉันไม่รู้อย่างชัดเจนว่าฉันกำลังทำอะไรอยู่ อย่างไรก็ตามฉันจัดการเพื่อตอบคำถามนี้ด้วยตัวเอง
ถ้า d คือเมทริกซ์ (หรือเฟรมข้อมูลเดิม) และชื่อคอลัมน์เป็นสิ่งที่คุณต้องการการทำงานต่อไปนี้:
axis(1, 1:dim(d)[2], colnames(d), las=2)
axis(2, 1:dim(d)[2], colnames(d), las=2)
las = 0 จะพลิกชื่อกลับสู่ตำแหน่งปกติของฉันยาวฉันจึงใช้ las = 2 เพื่อทำให้มันตั้งฉากกับแกน
แก้ไข 2: เพื่อระงับ image () ฟังก์ชั่นการพิมพ์ตัวเลขบนเส้นตาราง (มิฉะนั้นจะซ้อนทับป้ายกำกับตัวแปรของคุณ) ให้เพิ่ม xaxt = 'n' เช่น:
image(x=seq(dim(x)[2]), y=seq(dim(y)[2]), z=COR, col=rev(heat.colors(20)), xlab="x column", ylab="y column", xaxt='n')
cor
ฟังก์ชั่นหรือrcorr
ฟังก์ชั่นในHmisc
แพ็คเกจ