ฉันรวมสถิติstat_poly_eq()
ในแพ็คเกจggpmisc
ที่อนุญาตคำตอบนี้:
library(ggplot2)
library(ggpmisc)
df <- data.frame(x = c(1:100))
df$y <- 2 + 3 * df$x + rnorm(100, sd = 40)
my.formula <- y ~ x
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, color="black", formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p

สถิตินี้ใช้ได้กับพหุนามใด ๆ โดยไม่มีเงื่อนไขหายไปและหวังว่าจะมีความยืดหยุ่นเพียงพอที่จะเป็นประโยชน์โดยทั่วไป ฉลาก R ^ 2 หรือปรับ R ^ 2 สามารถใช้กับสูตรรุ่นใดก็ได้ที่ติดตั้ง lm () เป็นสถิติ ggplot มันทำงานตามที่คาดไว้ทั้งกับกลุ่มและแง่มุม
แพ็คเกจ 'ggpmisc' มีให้บริการผ่าน CRAN
เวอร์ชัน 0.2.6 เพิ่งได้รับการยอมรับจาก CRAN
มันแสดงความคิดเห็นโดย @shabbychef และ @ MYaseen208
@ MYaseen208 นี้แสดงให้เห็นวิธีการเพิ่มหมวก
library(ggplot2)
library(ggpmisc)
df <- data.frame(x = c(1:100))
df$y <- 2 + 3 * df$x + rnorm(100, sd = 40)
my.formula <- y ~ x
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, color="black", formula = my.formula) +
stat_poly_eq(formula = my.formula,
eq.with.lhs = "italic(hat(y))~`=`~",
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p

@shabbychef ตอนนี้มันเป็นไปได้ที่จะจับคู่ตัวแปรในสมการกับที่ใช้สำหรับป้ายชื่อแกน หากต้องการแทนที่xด้วย say zและyด้วยhจะใช้:
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, color="black", formula = my.formula) +
stat_poly_eq(formula = my.formula,
eq.with.lhs = "italic(h)~`=`~",
eq.x.rhs = "~italic(z)",
aes(label = ..eq.label..),
parse = TRUE) +
labs(x = expression(italic(z)), y = expression(italic(h))) +
geom_point()
p

การเป็นตัวอักษรกรีกทั่วไปในการแยกวิเคราะห์อาร์สามารถใช้ทั้งใน lhs และ rhs ของสมการได้
[2017-03-08] @elarry แก้ไขเพื่อตอบคำถามเดิมอย่างแม่นยำยิ่งขึ้นโดยแสดงวิธีการเพิ่มเครื่องหมายจุลภาคระหว่างสมการและป้ายกำกับ R2
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, color="black", formula = my.formula) +
stat_poly_eq(formula = my.formula,
eq.with.lhs = "italic(hat(y))~`=`~",
aes(label = paste(..eq.label.., ..rr.label.., sep = "*plain(\",\")~")),
parse = TRUE) +
geom_point()
p

[2019-10-20] @ helen.h ฉันให้ตัวอย่างด้านล่างของการใช้stat_poly_eq()
กับการจัดกลุ่ม
library(ggpmisc)
df <- data.frame(x = c(1:100))
df$y <- 20 * c(0, 1) + 3 * df$x + rnorm(100, sd = 40)
df$group <- factor(rep(c("A", "B"), 50))
my.formula <- y ~ x
p <- ggplot(data = df, aes(x = x, y = y, colour = group)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p
p <- ggplot(data = df, aes(x = x, y = y, linetype = group)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p


[2020-01-21] @Herman มันอาจจะเป็นเคาน์เตอร์ที่เข้าใจง่ายตั้งแต่แรกเห็น แต่เพื่อให้ได้สมการเดียวเมื่อใช้การจัดกลุ่มหนึ่งจำเป็นต้องทำตามไวยากรณ์ของกราฟิก จำกัด การแมปที่สร้างการจัดกลุ่มให้กับแต่ละเลเยอร์ (แสดงด้านล่าง) หรือเก็บการแมปเริ่มต้นและแทนที่ด้วยค่าคงที่ในเลเยอร์ที่คุณไม่ต้องการจัดกลุ่ม (เช่นcolour = "black"
)
ดำเนินการต่อจากตัวอย่างก่อนหน้า
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point(aes(colour = group))
p

[2020-01-22] เพื่อเป็นตัวอย่างที่สมบูรณ์แบบด้วย facets แสดงให้เห็นว่าในกรณีนี้ความคาดหวังของไวยากรณ์ของกราฟิกจะเกิดขึ้นจริง
library(ggpmisc)
df <- data.frame(x = c(1:100))
df$y <- 20 * c(0, 1) + 3 * df$x + rnorm(100, sd = 40)
df$group <- factor(rep(c("A", "B"), 50))
my.formula <- y ~ x
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point() +
facet_wrap(~group)
p

latticeExtra::lmlineq()
กราฟิกให้ดู