0

可能重复:
将变量向量传递给 lm() 公式

我显然是 R 的新手,所以很抱歉;)

我正在尝试实现一个交互式 QLR 类型测试,但是因为我的代码将成为纸质文件的一部分,所以我真的想将它作为一个函数放在一个单独的文件中。

目标是对模型的所有观察结果进行迭代 F 检验,以发现结构中断,直到找到(假设)五个左右的结构中断并将其作为二元虚拟变量在模型中实施。交互将被测试并手动添加。

很抱歉还没有代码,因为我还没有真正编写函数。但这是我想象它的工作方式:

  1. 有一个包装函数接收模型和变量(我也可以只访问我猜的全局对象?)作为参数。

  2. 然后它调用 QLR 函数。它返回具有最高 F 值的索引,以及第一个具有 QLR 显着性的索引之后的日期索引。)

    原因是如果我在先前找到的虚拟变量已经为 1 的区间内测试一个虚拟变量为 1,则 F 检验会给我一个多重共线性错误。因此,如果我的初始虚拟变量的索引非常低,之后我不会找到任何休息时间。如果它是 500 并且我在之后的所有日期将它设置为 1,那么下一次迭代只能找到索引小于 500 的显着 F 值。

  3. 然后包装器调用一个函数来创建一个虚拟时间序列,该时间序列在第一个索引之前为 0,然后是 1,然后在达到第二个索引时再次为 0。

    假设最显着的 F 值在索引 500 处,而另一个显着值在 1000、1500 和 2000 等处。然后虚拟函数将在 500-999 的区间内将虚拟值设置为 1。

  4. 具有虚拟变量 D1 的新模型将返回给 QLR 函数,该函数对新变量 D2 重复该过程,依此类推。

现在我意识到这有点令人费解,它会给我提供开关类型的假人,让我在日期对模型产生总体影响,而不是效果的影响。但这在上下文中很好,我真的不知道如何解决 LHT 函数中的多重共线性问题。

无论如何,我需要实现的是能够生成模型并将其动态传递给 QLR 函数,并将新的虚拟变量动态添加到模型中。

我希望它不限于一定数量的假人,因为我事先不知道有多少人可能会显着测试 QLR。因此,我还需要能够添加具有动态名称的变量。我想我可以把它作为一个向量来做,必须有一个 add-row 函数,对吧?

您将如何将模型+变量动态传递给函数?

4

0 回答 0