[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:003987] GAnalysis::covariance のバグ
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:003987] GAnalysis::covariance のバグ
- From: Fumitaka MATSUBA <matsuba@xxxxxxxxxxxxxxxxxx>
- Date: Wed, 7 Sep 2016 11:21:12 +0900
�Ƿ����ޡ��Ǿ Ruby �Τߤʤ��� ���M2 �ξ���Ǥ���
GAnalysis::corelation ��äƤ��Ƶ�������ΤǤ�����GAnalysis::covarinace �˥Х��Ĥ��ޤ�����
�ѥå������Ƥߤޤ����Τǡ�ź��������ޤ� (�ʸ������������)��GPhys �ΥС�������1.5.0-1 �Ǥ���
����nary.div!(ndiv-1) �Ȥ��������ʤ������ޤ�����NArrayMiss#div! ���ɤ������Ǥʤ��褦�Ǥ���
irb �ǻ�������ʲ��Ǥ���������nary ��NArrayMiss��ndiv ��NArray::LINT �����������ޤ��Τǡ�
�������碌�Ƥ��ޤ���������Ƥ����ȡ�ruby-narray-miss (debian �ѥå�����) �ΥС�������1.2.8-3
�ߤ����Ǥ���
---------- irb �¹���������---------
irb(main):001:0> require 'numru/gphys'; include NumRu
=> Object
irb(main):002:0> a = NArrayMiss[10.0, 20.0, 30.0]
=> NArrayMiss.float(3):
[ 10.0, 20.0, 30.0 ]
irb(main):003:0> b = NArray[20, 40, 60]
=> NArray.int(3):
[ 20, 40, 60 ]
irb(main):004:0> a.div!(b) <---- ����åɤΤĤ�
=> NArrayMiss.float(3):
[ 0.5, 0.5, 0.5 ]
irb(main):005:0> a
=> NArrayMiss.float(3):
[ 10.0, 20.0, 30.0 ] <---- �ºݤˤ���Ǥ������ʤ�
---------- irb �¹������ޤ�----------
�ޤ��������ơ�����������ꤹ��ư��ޤ���������̾��������顼�ˤʤ�����
GAnalysis::covariance �ǤϽ������������Ф��ơ�GAnalysis::corelation �Ǥϼ�����ʤ�
�Τǡ�NArray#sum(*dims) �¹Ի��˥��顼���Фޤ����ʤΤǡ����������Ǥ������ˤ��Ƥߤޤ���
(�Ȥ��äƤ⥳�ԡ���������Ǥ�������
�ʲ��������Ƥߤޤ����ѥå�Ǥ��������ʤ������������������������Ǥ���
---------- �ѥå��������---------
--- covariance.rb.org 2016-08-30 15:39:35.806303482 +0900
+++ covariance.rb 2016-08-30 15:37:37.692734362 +0900
@@ -48,7 +48,8 @@
nary /= (ndiv-1)
return UNumeric.new(nary, units), ndiv
else
- nary.div!(ndiv-1)
+ ndiv = ndiv.sum(*dims)
+ nary = nary.div!(ndiv-1)
vary = VArray.new(nary,
{"long_name"=>"covariance","units"=>units.to_s},
"covariance")
@@ -79,6 +80,12 @@
gphys0 = gphys0.copy.replace_val(val0)
gphys1 = gphys1.copy.replace_val(val1)
+ if dims.length == 0
+ dims = Array.new
+ gphys0.rank.times{|i| dims.push i }
+ else
+ dims = dims.map{|dim| gphys0.dim_index(dim) }
+ end
covariance, ndiv = gphys0.covariance(gphys1,*dims)
return covariance/(gphys0.stddev(*dims)*gphys1.stddev(*dims)),
mask.to_type(NArray::LINT).sum(*dims)
end
---------- �ѥå�����ޤ�----------
--
��� �˹�Fumitaka MATSUBA)
��������� ��ظ��� �����ʳ�칶
�����ض��� ���ݳظ��漼 M2
E-mail: matsuba@xxxxxxxxxxxxxxxxxx