The Nameless City

何故か製薬やSAS関連のブログ、の予定。

SAS言語とその他の統計解析言語の優位性みたいなもんに少し

言語特性

SASプロプライエタリなソフトウェアで、お値段出せば統計解析のところはまあ全部入りという事は出来ます。また、大学では結構導入されている大学は多いので、ちゃんと使えば使えます。また、遺産は大きいです。

というか、まあ、遺産動かす為に導入しているところも多いのではないでしょうか。遺産のくせに毎年結構なお値段するのはなんともなあという気がしますが、その辺りを新しい言語とかにすると拾ってはくれませんのでどうしようもねえなという気がします。
しかも、正直使われてるのか微妙なライセンスもあるんだよなあ大学。


Rは、大学では使っている話は聞きます。また、WebでA/Bテストや!とか言っている人が使ってるのも見ました。
最新の統計手法とかがRでプログラムされている、という状況はあるわけで、その手法を活かすならまあRという選択肢はあるかなと思います。
欠点は、これはSAS言語以外だとなんですが、データが大きくなってくるとオンメモリにデータを展開するところが問題になってくる、ってところですかね。もちろん回避策はあるんですが、SAS言語より工夫が必要な局面はあって、スケールに依存しないプログラムを書くが難しいのはあります。
余談ながら、SpotfireにはTERRという製品があり、Rとの互換性を保ちつつ結構高速なエンジンらしいっす(元々はS-PLUSの改造版)。
関数型言語というよりはScheme系言語と言われるなあと思いますが、簡単に言えば、関数の副作用がチョコチョコある為で、結構書いているのを見ても手続き型に近いし、大きな製品を作るのには向いていないです。が、解析目的でプログラムを一本仕上げる、とかはいいのではないかと思います。



Pythonは、厳密に言えば統計解析用言語というわけではなく、LAPACK/BLASを利用したNumPyやSciPyのライブラリが使える、あと、RDBからデータ引っ張って加工するに楽なpandasというパッケージがあって、機械学習がscikit-learnというパッケージがあるので人気です。もうひとつ歴史を言えば、LinuxでのパッケージインストーラーなんかにPythonが使われていたりしたという事もあり、その汎用性というか手軽さからDjangoに代表されるWebサービスフレームワークなんかもあるというので、海外に結構使用者が多かったのも一つあります。「流石にPearlよりPythonの方が色々全部入りでいいよな」という事で。
日本では、RubyRoRの流れが強かった事もあり、Rubyの方が強いのですが海外ではPythonだよね、という風に見られていた歴史がありましたが、機械学習のscikit-learnで日本でも一気に利用者が増えた気がします。
余談ですが、他言語との連携にも強い(やり方が確立されている)というのが一つあり、その一つの例がLAPACK/BLASのNumPyへの組み込みで、他にもPythonの高速化にはC言語ライブラリで実装した上でPythonに連携、みたいな事やってたりします。Anaconda、LAPACK/BLASののIntel版であるIntelMKLが簡単に導入出来るというので、わりと強いんですが、IntelMKLと素のPythonを組み合わせたりするのは可能っちゃ可能です。
欠点は、「元気があるので色んなやり方がゴチャゴチャと両立してたりする」「Anacondaが商用利用が有償」という事で、Anaconda使わない場合のIntelMKLとの連携とかACMLとの連携とかが結構ちゃんとしないと分かりづらい、環境構築の流派が面倒臭い、Linuxの場合はLinuxディストリビューションが入れているPythonと別に入れるような環境構成を頑張らないといけないとか、アプリインストールしたらOKではないのが困りどころです。まあOSSなので仕方ない。

優位性みたいなものは、あまり気にしなくて、「利便性」とかを考えて選択したらいいと思いますよ。

統計解析手法の先端を行くというのであれば、それが実装されている言語を選択するのが無難です。
まあそうでないところは遺産と相談ですね。
生物統計なんかでは、RでもBIOSTAT系のやつ入れればいいとは思いますが、この辺りのライブラリ選択・手法選択に注意が必要なので、誰かが治験分野用ライブラリ一覧とかをメンテしてるのを出して貰えればいいんじゃないでしょうか。
機械学習なら今のところはPythonになってくると思います。
ただ、RとPythonは補完関係でもあり、両方やっとくと良いんじゃないでしょうか。片側で無理にやらずに。確かpandasって、Rのデータフレームからのパクリだったかなと。
OSSなんでタダですしね。


SASは言語的にかなり孤立してますし、古い言語なので、現代のプログラミング言語が着想は得たとしても補完関係としてはちょっと遠いという不利な点はあります。が、使われてるところは使われているし、今後もある程度カネがある業界では生き続けるとは思います(メインフレームがごとくしぶとく生き残る要素もあります。高障害耐性、と言えば聞こえがいいですが、メモリで難儀するというケースが少ない)。