Простой способ добавления нескольких значений R ^ 2 в графическую матрицу - PullRequest
0 голосов
/ 04 сентября 2018

Итак, у меня есть простая мультиплоттерная / графическая матрица следующего вида:

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 голосов
/ 04 сентября 2018

Вы можете сделать что-то вроде этого (поскольку вы не предоставляете пример данных, я использую набор данных 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

...