Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成不带for循环的回归模型数组_R_Data.table_Linear Regression - Fatal编程技术网

生成不带for循环的回归模型数组

生成不带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

我有一个列Y、X1、X2和V的数据集。虽然Y、X1和X2是连续的,但V是一个分类变量。假设V有10个类别,我想创建10个线性回归模型,并将结果(系数、p值、R-Sq等)存储在另一个表中。有没有一种不使用for循环而使用data.table的方法?谢谢。

正是针对这类问题而存在的。它将模型的输出“整理”成整洁的数据框架,便于存储和比较。下面是一个使用
扫帚
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值等。参见