在Statistics::Regression
的文档中,添加观察的说明如下:
$ reg-> include(2.0,[1.0,3.0,-1.0]);
然后,只需对自己的数据运行回归:
my @obs;
observations are like: %oneobs= %{$obs[1]};
...
foreach my $obshashptr (@obs) { $reg->include( $_[1], $_[3] ); }
我对%oneobs= %{$obs[1]}
感到困惑:这种符号是什么意思?此外,foreach my $obshashptr (@obs) { $reg->include( $_[1], $_[3] ); }
在做什么?有人可以通过向我展示这两个声明在不止一行中做了什么来帮助吗?
似乎$_[1]
是观察,$_[3]
包含预测变量。所以,$_[3]
是一个数组..
答案 0 :(得分:2)
%{ }
是哈希取消引用;其中的内容是对哈希的引用,并且该哈希的内容被分配给%oneobs
。
答案 1 :(得分:1)
my @obs;
是一个包含每个索引的哈希引用的数组。
run_regression("bivariate regression", $obshashptr->{someY}, [ "const", "someX" ] );
这会调用run_regression
子例程并传递3个参数。
现在检查子程序。
sub run_regression {
my $reg = Statistics::Regression->new( $_[0], $_[2] );
foreach my $obshashptr (@obs) { $reg->include( $_[1], $_[3] ); }
$reg->print();
}
子例程采用@_
数组中的参数(参见What is the meaning of @_ in Perl?)。然后创建$reg
Statistics::Regression
对象,并将2个参数传递给new
方法。 $_[0]
表示@_
数组的第一个元素,在本例中为bivariate regression
。 $_[2]
表示第三个参数。
然后foreach
行循环遍历数组并将数组索引处的值赋给$obshashptr
,然后对于每次迭代的数组,您调用include
Statistics::Regression
方法并{你传递2个参数。第一个是@_
的第二个索引处的值,第二个参数是@_
的第四个索引处的值。