首页 > 解决方案 > 同一数据框中的多个线性模型

问题描述

我有一个接受数据框的函数,第一列必须是 Y,用户选择哪一列是 X。我需要在同一个 data.frame 中运行多个线性模型(找到哪个 lm 对我的用户有最好的结果)。

使用 mtcars 数据集,我只有一个线性模型:

    results_LM <- function(data, var) {
        fm1 <- as.formula(paste(colnames(data)[1], "~", var))
        lm1(fm, data = data)
        return(lm1)
    }

    fit <- results_LM(mtcars, "disp")

我将对要测试的每个线性模型执行相同的操作(并存储在我稍后将使用的最终列表中):

    results_LM <- function(data, var) {
        fm1 <- as.formula(paste(colnames(data)[1], "~", var))
        lm1(fm, data = data)

        fm2 <- as.formula(paste(colnames(data)[1], "~", var, "+ I(", var, "^2)"))
        lm2(fm, data = data)

        all_lm <- list("FirstLM" = lm1, "SeconLM" = lm2)

        return(all_lm)
    }

这适用于 fm3, lm3... fm99, lm 99

这会起作用,但我想这是一个更好的方法来做到这一点

关于如何在同一数据框中运行多个线性模型的任何想法?

标签: rlm

解决方案


已经解决了,看着这篇文章, 我把我所有的模型都放在了一个列表中,并使用 lapply 来运行它们

results_LM <- function(data, var) {
       formulas <- list(as.formula(paste(colnames(data)[1], "~", var),
                        as.formula(paste(colnames(data)[1], "~", var, "+ I(", var, "^2)")))

       models <- lapply(formulas, lm, data = data)

       return(models)
    }

推荐阅读