在绘图矩阵中添加多个R ^ 2-值的简单方法

时间:2018-09-04 10:41:26

标签: r plot linear-regression plotmatrix

所以我有一个简单的多图/图矩阵,其形式如下:

DATA_SE <- read.table("DEWRATES_SE_15-17.txt", sep = "\t", dec = ".", header = T)
multiplot_SE <- pairs(~SE_21+SE_25+SE_26, data = DATA_SE, main = "Tauraten_Selhausen")
multiplot_SE  

enter image description here

有什么方法可以将r平方值(对于简单的lm-modell)添加到我的每个图中?

谢谢!

更新

是否可以为绘图面板的x和y轴设置固定限制? 我只需要将它们全部设置为相同的值(即使对于x-和y)!

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作(因为您未提供示例数据,我正在使用iris数据集进行演示):

panel.rsquared <- function(x, y) {
    fit <- lm(y ~ x)
    usr <- par("usr")
    on.exit(par(usr))
    par(usr = c(0, 1, 0, 1))
    text(0.5, 0.5, sprintf(
        "R squared = %4.3f\n Adj. R squared = %4.3f",
        summary(fit)$r.squared,
        summary(fit)$adj.r.squared))
}   

pairs(iris[, -ncol(iris)], upper.panel = panel.rsquared)

enter image description here


更新

根据您的评论,您可以定义任何上/下面板功能以满足您的需求。

例如,您可以执行类似下面的操作。请注意,这不是很有用,因为避免(不可能)避免文本和点重叠。这是pairs的整体思想(和强度),当配置上面板显示注释/文本和下面板显示绘图时。这样一来,您就避免了多余的工作(在原始的绘图中重复了,因此是多余的)。

无论如何,它的价值:

panel.plot_withrsquared <- function(x, y) {
    points(x, y)
    fit <- lm(y ~ x)
    usr <- par("usr")
    on.exit(par(usr))
    par(usr = c(0, 1, 0, 1))
    text(0.1, 0.8,
        sprintf("R squared = %4.3f",summary(fit)$r.squared),
        adj = 0, cex = 0.8)
    }

pairs(
    iris[, -ncol(iris)],
    upper.panel = panel.rsquared,
    lower.panel = panel.plot_withrsquared)

enter image description here