我有一个包含多个引擎的数据集,我想创建一个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)中的错误”
知道怎么解决吗?