生成不带for循环的回归模型数组
我有一个列Y、X1、X2和V的数据集。虽然Y、X1和X2是连续的,但V是一个分类变量。假设V有10个类别,我想创建10个线性回归模型,并将结果(系数、p值、R-Sq等)存储在另一个表中。有没有一种不使用for循环而使用data.table的方法?谢谢。正是针对这类问题而存在的。它将模型的输出“整理”成整洁的数据框架,便于存储和比较。下面是一个使用生成不带for循环的回归模型数组,r,data.table,linear-regression,R,Data.table,Linear Regression,我有一个列Y、X1、X2和V的数据集。虽然Y、X1和X2是连续的,但V是一个分类变量。假设V有10个类别,我想创建10个线性回归模型,并将结果(系数、p值、R-Sq等)存储在另一个表中。有没有一种不使用for循环而使用data.table的方法?谢谢。正是针对这类问题而存在的。它将模型的输出“整理”成整洁的数据框架,便于存储和比较。下面是一个使用扫帚和dplyr解决几乎相同问题的示例。它使用dplyr通过一个分类变量对数据进行分组,为每个组拟合一个模型,并用几行代码将系数提取到data.fram
扫帚
和dplyr
解决几乎相同问题的示例。它使用dplyr
通过一个分类变量对数据进行分组,为每个组拟合一个模型,并用几行代码将系数提取到data.frame中。我不熟悉数据表的分组操作,但可能会对包执行类似的操作
此外,broom
具有augment
功能,可用于计算拟合优度指标和其他汇总统计数据
或者,如果您想在不安装其他软件包的情况下执行此操作,您可以将数据帧拆分为一个列表(使用split
函数),lappy
将建模过程转换为列表,提取结果(可能通过另一个lappy
从lm
对象提取信息,)然后将其全部绑定在一起。您需要的是
提供的基本R函数
# make up some sample data
dataSet <- data.frame(Y = iris$Sepal.Length,
X1 = iris$Sepal.Width,
X2 = iris$Petal.Length,
V = iris$Species)
# apply the `lm` function by the value of `V`
by(data = dataSet[c("Y","X1","X2")],
INDICES = dataSet$V,
FUN = lm,
formula = Y ~ .)
#编写一些示例数据
数据集请参见nlme包中的lmList
。有关如何在询问SO问题时提供可复制示例的信息,请参阅。谢谢。我试过lmList,成功了。我只得到了系数,但我确信我能找出如何得到R-Sq,p值等。参见