首页 > 解决方案 > 在绘图矩阵中添加多个 R^2 值的简单方法

问题描述

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

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  

在此处输入图像描述

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

谢谢!

更新:

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

标签: rplotlinear-regressionplotmatrix

解决方案


你可以做这样的事情(因为你不提供我使用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)

在此处输入图像描述


更新

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

例如,您可以执行如下所示的操作。请注意,这不是很有用,因为很难(不可能)避免重叠的文本和点。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)

在此处输入图像描述


推荐阅读