我正在开发和优化使用lm()函数和随后的step()函数进行优化的线性模型。我通过使用0和1的随机生成器(每个有50%的机会)向我的数据框添加了一个变量。我使用这个变量将数据框分成一个训练集和一个验证集。如果一个记录没有分配给训练集,它将被分配到验证集。通过使用这些子集,我可以估计模型的拟合程度(通过对验证集中的记录使用预测函数并将它们与原始值进行比较)。我对优化模型的系数以及预测和实际结果分布之间的KS检验结果感兴趣。根据循环中的循环编号生成数据框的变量名称R
我所有的代码工作正常,但是当我想测试我的模型是否对我选择的子集敏感时,我遇到了一些问题。要做到这一点,我想创建一个for(我在1:10)循环,每次使用不同的随机子集。这对我来说是一个很大的挑战(我以前从未在R中使用过for循环)。
这里的问题(当然实际上有很多问题,但这里是其中之一):
我想,这对于在一个独特的名字每次循环的运行独立dataframes(例如:RUN1, Run2,Run3)。我已经能够使用粘贴((“Run”,1:10,sep =“”)创建一个带有不同字符串的变量,但是这只是给你一个字符串列表。我如何使用这些字符串作为我的子集)的数据帧?
我期望遇到的另一个问题: 然后,我想使用每个运行的拟合系数,并将它们导出到Excel通过使用coef(函数),我已经能够检索系数,但是由于优化算法的原因,模型中包含的系数数量可能会发生变化,这几乎肯定会给我带来一些麻烦,将它们粘贴到同一个数据帧中,对此有何想法?
感谢您的帮助。
一个更简单的替代方案甚至可以是在你的循环中创建名称,使用'assign(paste(“run”,i,sep =“”),d.frame)'。这样可以避免任何问题,如果您决定更改运行次数,但忘记随时随地更改号码。 – Edward 2012-07-24 19:58:03
感谢您快速回复我 – 2012-07-24 20:11:44
事实上,我设法同时解决了第一个问题和第二个问题(无需创建10个不同的数据框)。我所做的是将不同运行的系数导出到一个数据帧,然后将该数据帧合并到空数据帧中(如第一次运行),如下所示: – 2012-07-25 15:04:36