如何在 xyplot 中打印每个面板的 R^2

问题描述 投票:0回答:1

如果我正在绘制一系列回归模型。

xyplot(
  Petal.Width  ~ Petal.Length | Species,
  data = iris,
  panel = function(x, y, ...) {
    panel.xyplot(x, y, ...)
    
    mod1 <- lm(y~x)
    panel.abline(mod1, col='#0080ff')
    
    mod2 <- lm(y~poly(x, 2))
    panel.curve(predict(mod2, newdata=data.frame(x=x)), col='#ff8000', lwd=2)
    
    mod3 <- lm(y~poly(x, 3))
    panel.curve(predict(mod3, newdata=data.frame(x=x)), col='#ff00ff', lwd=2)
  },
  grid = TRUE
)

如何在每条曲线旁边添加相关的 R 平方?谢谢

r plot model lattice
1个回答
0
投票

您可以使用面板功能中的

panel.text()
来完成此操作。

library(lattice)
xyplot(
  Petal.Width  ~ Petal.Length | Species,
  data = iris,
  panel = function(x, y, groups, ...) {
    panel.xyplot(x, y, ...)
    mod1 <- lm(y~x)
    mod2 <- lm(y~poly(x, 2))
    mod3 <- lm(y~poly(x, 3))
    panel.abline(mod1, col='#0080ff')
    panel.curve(predict(mod2, newdata=data.frame(x=x)), col='#ff8000', lwd=2)
    panel.curve(predict(mod3, newdata=data.frame(x=x)), col='#ff00ff', lwd=2)
    
    r21 <- sprintf("Rsq = %.2f", summary(mod1)$r.squared)
    r22 <- sprintf("Rsq = %.2f", summary(mod2)$r.squared)
    r23 <- sprintf("Rsq = %.2f", summary(mod3)$r.squared)
    panel.text(1, 2.5, r21, adj=c(0,.5), col='#0080ff')
    panel.text(1, 2.35, r22, adj=c(0,.5), col='#ff8000')
    panel.text(1, 2.2, r23, adj=c(0,.5), col='#ff00ff')
  },
  grid = TRUE
)

创建于 2024-04-04,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.