【发布时间】:2015-12-06 20:48:40
【问题描述】:
我有一个包含多个引擎的数据集,我想创建一个 for 循环函数来为每个引擎运行线性回归并提取每个回归的系数。因此,我希望第一次回归使用 engine=Google 运行六周,然后第二次使用engine=Bing 运行六周等。数据集的示例如下所示:
Engine Wk Imp Clicks lnSpend Actions CPA
google 1 100302 15791 10998 31 354.79
google 2 23893 4734 2866 16 179.18
google 3 318 16 37.83 11 3.44
google 4 7992 1980 1704.81 27 63.14
google 5 13206 3292 2732.13 26 105.08
google 6 10888 2966 2293.86 22 104.27
bing 1 23536 1808 1028.95 3 342.98
bing 2 86873 7196 2740.28 14 195.73
bing 3 54654 4398 1786.96 13 137.46
bing 4 45553 3353 1860.47 13 143.11
bing 5 41254 3322 1811.80 13 139.37
bing 6 38305 3117 1501.01 19 79.00
回归方程为actions~ spend,这将在所有引擎中保持不变。
这是我目前的代码:
for(i in unique(mydata$engine))
{
reg<- append(reg, lm(mydata$Actions~ mydata$lnspend, data=mydata[mydata$engine== i,]))
}
summary(reg)
但是,当我这样做时,回归会在将所有引擎组合在一起的完整数据集上运行。
我也尝试过使用 by 函数。我的代码是
reg<- by(mydata$engine, function(mydata) lm(Actions~ lnspend, data=mydata))
sapply(reg, coef)
运行时出现以下错误:
“unique.default(x, nmax = nmax) 中的错误”
知道怎么解决吗?
【问题讨论】:
-
你可以试试
lapply(split(df, df$Engine), function(x) coef(lm(Actions ~ lnSpend, data = x)))in base R -
是的,这行得通,谢谢!你知道我如何提取每个回归的系数吗?通常,当我提取系数时,我会执行“constc
标签: r for-loop foreach linear-regression