如何使用J创建一个计算相关/相关矩阵的函数?

Siyao Gu

我已经自己编写了以下代码,该代码逐步计算了相关/相关矩阵:

a=: 1 2 3
b=: 2 3 4
getmean=: +/%#
getmdevn=: -getmean
getvariance1=: (getmean@:*:)@getmdevn

getvariance1 a
getvariance1 b
corr_a_b=: getmean (a*b) - getmean a * getmean b

使用单个函数在J中计算相关/相关矩阵的最佳方法是什么?还是有什么办法可以将我所有的代码组合成一个函数?

PS我刚刚在J中找到了一些库,例如'numeric'。但是,似乎没有在线有关这些库的文档。有人知道在哪里可以找到这些库的详细信息吗?

丹·布朗

出于实际目的,@ EelVex是正确的,您应该使用J附带的库,因为它们封装了JSoftware认为的“最佳实践”。

但是,出于教学,思想和美学的原因,我是奥列格·科布琴科Oleg Kobchenko)胜利的忠实拥护者

 corr =: (+/@:* % *&(+/)&.:*:)&(- +/%#) 

正如我在2013年提到的那样,它包含J中所有主要成分的样本:

  • 叉子 f g h
  • f g
  • 在顶上 f@:g
  • 撰写 f&g
  • f&.:g

除了之外&,每个选项中只有一个。对于一个非常真实,非常普遍的计算。整齐!

而且,如果您可以阅读J,则相对于标准数学符号而言,这是一个明显的改进,因为您可以从字面上看到该公式背后的一些对称性:左叉齿是乘积(+/@:*)的和,右叉是乘积()的和。总和(*&(+/))。

整个中叉是一只优雅的蝴蝶,有美丽的对称翅膀(在头上有触角%!)。

   c=:+/@:* % *&(+/)

   5!:4<'c'
         +- / --- +
  +- @: -+- *      
  +- %             
--+      +- *      
  +- & --+- / --- +
 

再加上整个事情在代数上减少了。这也就意味着,相反,你必须将标准的数学符号X S和ÿ S和X S和ȳ的疏散所有的地方,在corr很明显,我们做的第一件事情是规范变量,此后所有我们曾经处理过的是增量,因此我们不受规模,度量单位等变化的影响。

作为J表示法进一步阐明基本数学结构的又一个示例,Oleg进一步简化了步骤,并切下了这个jem

Cr=: +/@:*&(% +/&.:*:)&(- +/ % #)

正如我在2013年主题中稍后讨论的那样,由于其结构对称性,我仍然更喜欢原始版本,但是此版本也有其优点:很明显,相关性只是一系列标准化/标准化后的线性组合

sum             =:  +/         
of              =:  @          
the_product     =:  *          
after           =:  &          
scaling         =:  % +/&.:*:
after           =:  &          
standardizing   =:  - +/%#


corr =: sum of the_product after scaling after standardizing

我们通过尝试各种表达自己的方式来获得对数学的了解

但是,出于实际目的,我再次建议您遵循@EelVex答案中的建议。正如亨利·里奇(Henry Rich)在奥列格(Oleg)发现这些美丽形式的线索中所观察到的:

认为这两种形式中的任何一种都不对实际工作有用,因为它们涉及减去大的近似相等的数字,但是我通过编写它们了解了一些有关计算的知识

其中奥列格则证明具体:

运行Wikipedia稳定性测试很容易看出来

   CR=: (+/@:* % *&(+/)&.:*:)&(- +/ % #)

  0j20":CR/900000000(+,:-)1+i.1000000
_1.00000000000000000000

  COR f.
(+/ % #)@:*&(- (+/ % #)) % *&(%:@(+/ % #)@:*:@:- (+/ % #))

  0j20":COR/900000000(+,:-)1+i.1000000
_1.00000000000000000000

  0j20":c/900000000(+,:-)1+i.1000000
1.00000229430253350000

  load'stats'
  0j20":corr/900000000(+,:-)1+i.1000000
_0.99999999999619615000

但是,那不是重点。最终,我认为June Kim在2007年总结得最好

当我尝试将数学表达式转换为J表达式时,我常常非常高兴地发现该表达式中的隐藏模式。

有时,它使我找到了新见解的道路。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章