lm()帧和for循环

lm()帧和for循环,r,dataframe,for-loop,lm,R,Dataframe,For Loop,Lm,我有数据帧DFMyDataBase: DATE AUDCAD AUDCHF AUDJPY AUDNZD (...) 05/01/2017 0.965960 0.742230 85.315000 1.048500 (...) 08/01/2017 0.971760 0.746410 85.353000 1.048140 (...) 09/01/2017 0.975070 0.7

我有数据帧
DFMyDataBase

DATE          AUDCAD      AUDCHF       AUDJPY     AUDNZD      (...)
05/01/2017  0.965960    0.742230    85.315000   1.048500      (...)
08/01/2017  0.971760    0.746410    85.353000   1.048140      (...)
09/01/2017  0.975070    0.749300    85.307000   1.054290      (...)
10/01/2017  0.980720    0.754540    85.873000   1.054380      (...)
11/01/2017  0.983750    0.756540    85.861000   1.053650      (...)
12/01/2017  0.983320    0.756070    85.822000   1.051750      (...)
(...)   
和数据帧
DFLM

FirstSymbol     SecondSymbol    PValue     DickeyFullerCV
     AUDCAD           AUDCHF
     AUDCAD           AUDJPY
     AUDCAD           AUDNZD
     AUDCAD           AUDUSD
      (...)            (...)

基于存储在
DFLM
中的名称对构建lm(),这些名称对表示
DFMyDataBase
中的列名。
DFLM
的第一列表示因变量,第二列表示自变量。

听起来您希望基于存储在
DFLM
中的名称对构建公式,这些名称表示
DFMyDataBase
中的列名,然后使用这些公式作为在每对上运行
lm
的基础。我进一步猜测,您希望
DFLM
的第一列表示因变量,第二列表示自变量

在这种情况下,你可以这样做

f_列表调用:
#>lm(公式=AUDCAD~AUDCHF,数据=DFMyDataBase)
#> 
#>系数:
#>(截取)澳元
#>     0.06269      1.21739

摘要(型号[[3]]
#> 
#>电话:
#>lm(公式=AUDCHF~AUDNZD,数据=DFMyDataBase)
#> 
#>残差:
#>          1          2          3          4          5          6 
#> -0.0037091  0.0010088 -0.0052919 -0.0001864  0.0029046  0.0052740 
#> 
#>系数:
#>估计标准误差t值Pr(>t)
#>(截距)-0.8210 0.7342-1.118 0.326
#>澳元1.4944 0.6980 2.141 0.099。
#> ---
#>签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
#> 
#>剩余标准误差:4个自由度上的0.004446
#>倍数R平方:0.534,调整后的R平方:0.4175
#>F统计量:1和4 DF上的4.583,p值:0.09899
等等

请注意,在示例数据框中,您的第四行包含两次相同的列名—不清楚这种情况下您打算使用什么。我对输入做了一些修改,如下所示


数据

DFMyDataBase 1 05/01/2017 0.96596 0.74223 85.315 1.04850
#> 2 08/01/2017 0.97176 0.74641 85.353 1.04814
#> 3 09/01/2017 0.97507 0.74930 85.307 1.05429
#> 4 10/01/2017 0.98072 0.75454 85.873 1.05438
#> 5 11/01/2017 0.98375 0.75654 85.861 1.05365
#> 6 12/01/2017 0.98332 0.75607 85.822 1.05175
DFLM
#>第一个符号第二个符号
#>1澳元CAD澳元CHF
#>2澳元/日元
#>3澳元瑞士法郎澳元新西兰元

听起来您希望基于存储在
DFLM
中的名称对构建公式,这些名称对表示
DFMyDataBase
中的列名,然后使用这些公式作为在每对上运行
lm
的基础。我进一步猜测,您希望
DFLM
的第一列表示因变量,第二列表示自变量

在这种情况下,你可以这样做

f_列表调用:
#>lm(公式=AUDCAD~AUDCHF,数据=DFMyDataBase)
#> 
#>系数:
#>(截取)澳元
#>     0.06269      1.21739

摘要(型号[[3]]
#> 
#>电话:
#>lm(公式=AUDCHF~AUDNZD,数据=DFMyDataBase)
#> 
#>残差:
#>          1          2          3          4          5          6 
#> -0.0037091  0.0010088 -0.0052919 -0.0001864  0.0029046  0.0052740 
#> 
#>系数:
#>估计标准误差t值Pr(>t)
#>(截距)-0.8210 0.7342-1.118 0.326
#>澳元1.4944 0.6980 2.141 0.099。
#> ---
#>签名。代码:0'***'0.001'***'0.01'*'0.05'.'0.1''1
#> 
#>剩余标准误差:4个自由度上的0.004446
#>倍数R平方:0.534,调整后的R平方:0.4175
#>F统计量:1和4 DF上的4.583,p值:0.09899
等等

请注意,在示例数据框中,您的第四行包含两次相同的列名—不清楚这种情况下您打算使用什么。我对输入做了一些修改,如下所示


数据

DFMyDataBase 1 05/01/2017 0.96596 0.74223 85.315 1.04850
#> 2 08/01/2017 0.97176 0.74641 85.353 1.04814
#> 3 09/01/2017 0.97507 0.74930 85.307 1.05429
#> 4 10/01/2017 0.98072 0.75454 85.873 1.05438
#> 5 11/01/2017 0.98375 0.75654 85.861 1.05365
#> 6 12/01/2017 0.98332 0.75607 85.822 1.05175
DFLM
#>第一个符号第二个符号
#>1澳元CAD澳元CHF
#>2澳元/日元
#>3澳元瑞士法郎澳元新西兰元

不清楚您想做什么。请澄清问题。另外,请阅读标签页顶部的张贴说明。您不清楚要做什么。请澄清问题。同时阅读标签页顶部的张贴说明。为什么
eval
,而不只是将公式传递到
lm
?另外,请考虑<代码>改写< <代码> > <代码> >公式< /代码> +>代码>粘贴< /代码> .@ PaFaIT,如果直接传递公式,它仍然有作用,除了“代码”> LM对象的“调用”成员是错误的,因为公式是由NSE捕获的。再次,不确定为什么需要代码> EVA或<代码>调用< /代码>。在没有@Parfait的情况下效果很好:@Parfait当我在Rextester上运行该代码时,每个列表项都会打印出来,显示每个模型的调用和系数,但是每个模型的调用都是
lm(formula=x,data=DFMyDataBase)
,而不是例如
lm(formula=AUDCHF~AUDNZD,data=DFMyDataBase)
如果使用my
eval
version运行它,您将获得公式中的实际列名,就像您手工编写一样,如我的示例所示。在许多情况下,这并不是一个交易破坏者,但对我来说,最好看到变量在调用中回归,而不是现在理解未替代的
formula=x
!谢谢我回避了
eval
,但它有它的用例。为什么
eval
不只是将公式传递到
lm
?另外,请考虑<代码>改写过<代码> AS。公式< /代码> +>代码>粘贴< /代码> .@ PyFaIT,如果您直接传递公式的话