Statistical Programming

2014-01-01から1年間の記事一覧

Scalaで自己共分散と自己相関の実装

時系列解析入門 - Stats Hack!! 自己共分散も自己相関も時系列データ元々の分布(関数)の時間軸をずらした時にどれほど元のグラフと相関があるかについて計る指標。自己相関は自己共分散の値を使って求め、自己共分散と違い値の大きさが単位に依存しない(…

ScalaTestすごい楽。

試してみたのは単純な、FunSuiteクラスを継承するタイプ。 class Datates extends FunSuite { test("name of this test"){ assert(0==0,"if fail,message appears") } でもDoubleが比較に入ってくると小数点以下がちょこっと違うだけでほとんど同じ!みたい…

スピアマンの順位相関係数を実装 in Scala

この前ピアソンの相関係数を実装したので次はノンパラメトリックなスピアマンの順位相関係数を実装してみた。ピアソンの場合、外れ値の影響を大きく受けるのと、厳密にはデータが正規分布であると仮定している。つまりデータ数が小さい時は正確性に欠ける。…

sbtって別にシンプルじゃないよな。って思うのは他のビルドツールを知らないからなのだろうか。

sbtについてどしっとまとめたことがなかったからちょいとメモる。sbtのダウンロードはHomebrewを使ってちょちょいと出来る。brew install sbt、てな感じで。sbtのプロジェクトを作るにはまずルートディレクトリでsbtコマンドを実行。するとprojectフォルダな…

scala IDE for Eclipseバージョン上がりましたね。

Scala IDE for Eclipse 見た目がすっきりしたのと画面いっぱい拡大が出来るようになりました。それとベースがEclipseのケプラーに変わってましたね。ケプラーの第3法則!

ピアソンの相関係数を実装 in Scala

レコメンデーション等をするためには各アイテムの相関度などを調べる手法があり、そこで必要なのがユークリッド距離やピアソンの相関係数など。今回実装してみたのはピアソンの方。 2つの変数X,Y(X,Yに属する値のリストみたいなもん。実装ではStream[Doubl…

時系列解析入門v2 DetrendingとDifferencing

時系列解析入門 - Stats Hack!! 前回の記事では時系列解析の概要、定常性、そして自己相関について触れたから今回はその続きのDetrendingから。そもそもDetrendingとは、時系列データが持っているTrend(傾向)を取り出すことでより定常なデータを入手すること…

Juliaという名の欲張り言語

最近Juliaというプログラミング言語を知りめっさ同感した。僕らは確かに統計処理、機械学習、データマイニング等がしたいのだけれどそれと同時にスピードも欲しいしmatlabみたく手軽に書きたい。ほんと仰る通りでどの言語も一長一短なんだよ。 なぜ僕らはJul…

時系列解析入門

大雑把に言うと、時系列解析とは過去のデータから未来を予測する分野。時系列データは通常のデータと異なり各値が強い相関を持つケース(非定常性)や”誤差が累積してゆく(ランダムウォークなど)”ケースが多く存在しており回帰分析など一般的に良く知られ…

関数とメソッド in Scala

関数とメソッド。一見同じように見えるが、メソッドはオブジェクトやクラスに結びついているもの。関数はそれらに結びついていない単独な第一級オブジェクト(少なくともScala利用者の立場的には)であり値として扱うことが出来る。僕みたいなめんどくさがり…

有名な確率分布

確率分布とは確率変数と確率変数に対応したその変数の起こる確率の分布。具体例で考えるとわかりやすい。サイコロの目が確率変数で、それぞれの目の出る確率(もちろん1/6)。それらをx軸が確率変数、y軸がその変数の確率といった形で分布化したものが確率分…

ベイズ統計入門

普通の統計では統計モデルを仮定しそれによってデータをを説明する。そのモデルを規定する重要な要素がそのデータの母数(平均µ,分散σなど)。ベイズ統計ではその母数とベイズの定理を組み合わせる。 ベイズの定理 P(H|D)=( P(D|H)*P(H) ) / P(D) このHを母数θ…

意中の相手への告白がうまくいくかどうか過去の事例を解析し成否を占う。with Scala

告白したい!でもうまくいくか不安…だから掲示板にでも相談しよう…こんなケースってよくありがちだけどそれらのデータを蓄積して解析してるシステムってあんまないなーって思う。だからちょっと作ってみよう!と思い立ってのこと。とは言っても迷惑メールフ…

言語と彼女

何度見ても言い得て妙だと思う。プログラミンング言語を彼女に例えた文言。 PHP は、あなたが高校時代のある夏、不器用ながらも付き合った初めての彼女です。もっと真剣な関係を築こうとしてはいけません。この子は複雑な問題を抱えています。 Perl はPHPの…

2群の検定 with R

今まで「Scala Days」というタイトルでScalaについて主に書いてたんだけど最近python使わなくちゃいけなくなったし統計に関することもメモりたいからタイトル名を「Statistical Programming」へと変更。というわけでとりあえず統計の復習を少しばかり。 2つ…

素数とビット計算 with python

素数を求める関数を作ること自体は簡単だけど速く素数を見つけ出す計算はなるほどなと思わされた。そんなの思いつかんって。こちらが普通の素数を求める関数。特に変わったとこはなし。 prime def is_prime(n): for c in range(2,n): if n%c ==0: return Fal…

Python Introduction part2

基本的なコレクションの一つであるStringについて。 PythonのStringはScalaのものと比べるとCharの連続したものであるということがより伝わってくる。気がする…PythonのListとStringの大きな違いとしてmutablityがある。Listはmutableな一方でStringはimmuta…

Python Introduction part1

「Python来週までに使えるようにねー」 ってアルゴリズムの授業で言われたんで急ごしらえで基礎的なところの細かな違いをちゃちゃっと確認する。初っ端から飛ばしてるわこの教授…教授に言われて参考にしたサイトはこちら。 Introduction — Problem Solving w…

入力処理… Iterator continually

scala.ioをディスってる記事にちょくちょく載ってる(こっちの方がいいよ的な意味で)Iterator continuallyが良いなと思ったんでめもる。 val lines=Iterator.continually(readLine).takeWhile(_ != "finish") lines.foreach(println) これで"finish"が入力さ…

誰だよこんなの思いついたやつ

scalaのStreamを使った無限フィボナッチ数列の作り方っ★ ※StreamとはListを遅延評価にしたようなやつ。遅延評価なので実際にその値が必要になるまで評価されず、無限に要素を持つことが可能。 なんか普通に綺麗で、思いついたやつcrazyだと思う。 def fib(a:…