Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl

統計解析・科学技術計算 Rstats入門

Perlで統計解析・科学技術計算をするためのRstatsというモジュールを現在作成しています。Rstatsは、統計解析・科学技術計算のための言語であるR言語を、Perlの上に実装することが目標です。

Perlは汎用的な言語であり、テキスト処理が得意な言語です。しかし、一方、統計解析や科学技術計算は得意ではありません。その大きな原因のひとつは使いやすいモジュールの不在です。

そこで、みなさんが、統計解析でなじみのあるR言語の機能を、Perlの上で実装することで、負担を減らして、学習できるようにしたいと考えました。

実装する量が膨大ということと、手探りで実装していること、Perl言語との相性を考えないといけないなど、長い道のりになりそうですので、基本的な計算の部分だけを、先にドキュメントとして、少しづつ、書いていくことにします。

僕は現在、Rstatsを実装するために、必要だと考え、物理、数学、情報工学などなどの勉強をしています。

Rstatsのインストール

Rstatsは、WindowsでもUnixでも簡単にCPANからインストールして利用することができます。Windowsで動かす場合は、ActivePerlかStrawbery Perlをインストールしてください。Perl 5.10.1以上であれば、動かすことができます。

cpan Rstats

あるいはcpanmがインストールされているなら

cpanm Rstats

使い方

簡単な使い方。

use strict;
use warnings;

use Rstats;

# ベクトル
my $x1 = c_(1, 2, 3);
my $x2 = c_(5, 6, 7);
my $x3 = -c_(8, 9, 10);

my $x4 = $x1 + ($x2 * $x3);

print $x4;

# 1~10までを要素に含むベクトルの作成
my $x5 = C_('1:10');
print $x5;

# sinを計算
my $x6 = c_(pi / 4, pi / 2);
my $x7 = r->sin($x6);
print $x7;

c_」関数で、ベクトルを作成することができます。作成したベクトルは、四則演算を行うことができます。

C_」関数で、数の並びを自動で作成することができます「'1:10'」という表現で1~10の10個の数を表現できます。

「c_」や「C_」など、関数名の後ろにわざわざアンダーバーが後ろにつけているのは、一文字の関数に関するPerlの制約によります。Perlでは、「-c()」と書いた場合に、c関数のマイナスとは、理解されずに、「-c」というファイル演算子と理解されてしまうからです。これは頻繁に生じる間違いですので、あきらめて「c_」「C_」という関数名にしています。

R言語に対応する関数は、「r」オブジェクトから「r->sin(...)」のように呼び出すことができます。

出力結果は次のようになります。

[1] -39 -52 -67
[1] 1 2 3 4 5 6 7 8 9 10
[1] 0.707106781186547 1

Rstats入門

Rstatsを使って、統計解析・科学技術計算を行うための入門です。基本的なことを解説します。

Giblog