同一数据框中的多个线性模型

时间:2019-05-02 14:21:14

标签: r lm

我有一个获取数据帧的函数,第一列必须为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

这可以工作,但是我想这是一种更好的方法

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

1 个答案:

答案 0 :(得分:0)

阿尔里亚解决了,看着这个post 我将所有模型放入类似的列表中,并用lapply运行所有模型

public class SellRepository {

public SellRepository(Application application) {

}

    public List<LambdaSellRequestClass> getSellItemList(int userId) throws ExecutionException, InterruptedException {

        return new SellRepository.GetSellItemListAsync(SellRepository.this).execute(userId).get();

    }

   private static class GetSellItemListAsync extends AsyncTask<Integer, Void, List<LambdaSellRequestClass>> {

        List<LambdaSellRequestClass> list = new ArrayList<>();      

        public GetSellItemListAsync() {

        }

        @Override
        protected List<LambdaSellRequestClass> doInBackground(Integer... integers) {

            final int userID = integers[0];


          list =     

     lambdaFunctionsCalls.getSellItemByUser_lambda(requestClass).getSellItems();

            return list;
        }
  }