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)
如果使用myeval
version运行它,您将获得公式中的实际列名,就像您手工编写一样,如我的示例所示。在许多情况下,这并不是一个交易破坏者,但对我来说,最好看到变量在调用中回归,而不是现在理解未替代的formula=x
!谢谢我回避了eval
,但它有它的用例。为什么eval
不只是将公式传递到lm
?另外,请考虑<代码>改写过<代码> AS。公式< /代码> +>代码>粘贴< /代码> .@ PyFaIT,如果您直接传递公式的话