如何以图形方式比较 R 中多元回归的预测值和实际值?

机器算法验证 r 回归 多元分析 多重回归
2022-04-16 21:04:48

我正在尝试编写一个函数来以图形方式显示线性回归中的预测与实际关系。到目前为止,我所拥有的对于线性模型来说效果很好,但我想以几种方式对其进行扩展。

  1. 处理 glm 模型
  2. 处理预测值中的 NA

到目前为止,我所拥有的似乎是一个很好的解决方案,还是在某处已经实现了这个包?

DF <- as.data.frame(na.exclude(airquality))
DF$Month <- as.factor(DF$Month)
DF$Day <- as.factor(DF$Day)

my_model <- lm(Ozone~Solar.R+Wind+Temp+Month+Day,DF)

PvA<- function(model,varlist=NULL,smooth=.5) { #Plot predicted vs actual for a model

    indvars <- attr(terms(model),"term.labels")

    if (is.null(varlist)) {
        varlist <- indvars
    }

    Y <- as.character(as.list(attr(terms(model),"variables"))[2])
    P.Y <- paste('P',Y,sep='.')

    DF <- as.data.frame(get(as.character(model$call$data)))
    DF[,P.Y] <- predict.lm(model)

    par(ask=TRUE)
    for (X in varlist) {
        print(X)
        A <- na.omit(DF[,c(X,Y)])
        P <- na.omit(DF[,c(X,P.Y)])
        plot(A)
        points(P,col=2)
        lines(lowess(A,f=smooth),col=1)
        lines(lowess(P,f=smooth),col=2)
    }

}
PvA(my_model)
1个回答

除了@mpiktas 的评论,你还可以看看 Frank Harrell 的rms包。优点是它可以同时处理 LM 和 GLM 以进行模型拟合和预测;参见例如plot.Predict()函数。如果您打算在回归建模方面做认真的工作,那么这个包和它的配套Hmisc真的很棒。