R 错误:自动批不支持lm类型的对象

R 错误:自动批不支持lm类型的对象,r,ggplot2,R,Ggplot2,我试图创建一个简单的函数,它接受两个参数: 一个线性模型和一个与颜色对应的字符串,按顺序排列 它应该为该线性模型创建残差vs拟合和Q-Q图,并根据字符串参数为点上色,如下所示: 这里有一些东西可以让你开始。来自autoplot的错误消息清楚地表明它无法处理lm对象。只需提取残差和拟合值,然后绘制: answer7 <- function(my_lm, color_str){ resids <- residuals(my_lm) fitted <- fitted(

我试图创建一个简单的函数,它接受两个参数:

一个线性模型和一个与颜色对应的字符串,按顺序排列

它应该为该线性模型创建残差vs拟合和Q-Q图,并根据字符串参数为点上色,如下所示:


这里有一些东西可以让你开始。来自
autoplot
的错误消息清楚地表明它无法处理
lm
对象。只需提取残差和拟合值,然后绘制:

answer7 <- function(my_lm, color_str){
    resids <- residuals(my_lm)
    fitted <- fitted(my_lm)

   p_vs_r <- ggplot(data = NULL, aes(x = fitted, y = resids))+
        geom_point(colour = color_str)

   qq_r <- ggplot(data = NULL, aes(sample = resids))+
        stat_qq(colour = color_str)

   plot(p_vs_r)
   plot(qq_r)

}

answer7使用
ggfortify
时不应出现错误,这使
autoplot
能够使用更多不同的对象类型

library(ggplot2)
library(ggfortify)

demo_lm <- lm(dist ~ speed, data=cars)

answer7 <- function(my_lm) 
{
  autoplot(my_lm, which = 1:2) +
    theme_bw()
}
answer7(demo_lm)
库(ggplot2)
图书馆(GGF)

演示为什么要使用
autoplot
?是否必须为
ggplot2
编写此函数?@bouncyball是的。罗兰我不确定,但我认为就我所知,对于残差vs Fitted和QQ绘图,ggplot2只提供了
autoplot
的通用方法,而没有。如果你想在这里使用它,你需要找到一个定义
lm
方法的包,或者自己编写一个。虽然不推荐,但是可以强制导出
autoplot.lm
。例如,
ggfortify:::autoplot.lm(lm(mpg~wt,mtcars),它=1:2)
library(ggplot2)
library(ggfortify)

demo_lm <- lm(dist ~ speed, data=cars)

answer7 <- function(my_lm) 
{
  autoplot(my_lm, which = 1:2) +
    theme_bw()
}
answer7(demo_lm)