2013-03-01から1ヶ月間の記事一覧

sambaのマウント

Ubuntu では、GNOME のファイルマネージャから samba のネットワークドライブをマウントして、gedit などから透過的にファイルを読み書きできる。しかし、Java 製のアプリケーションからはファイルにアクセスできなかったので、古典的にマウントしたほうが便…

GNU screen を使う

ラボでは、計算用サーバに ssh でログインして、いろいろなジョブを走らせている。ジョブの実行中に他の仕事をしたり、ジョブを投げる前にシステムの負荷を top で確認して並列数を決めたりする(80 CPU の恐るべきシステムなのだが、最近は load average が …

Plink

Ubuntu では、association study に用いる plink コマンドは putty-tools に含まれている plink コマンドと名前がぶつかるため、p-link に改名されていることに注意。

確率分布の「読み方」

ガンマ関数とか恐ろしげなものがアタマについているとギョッとするが、そこに変数が入っていなければ、単なる正規化のための定数に過ぎない。変数が入っている部分にまずは注目。

OKI のレーザプリンタ C310dn を Ubuntu 12.04 から使う

この機種は Postscript に対応しておらず、hyperc なる独自プロトコルを利用しているらしい。Linux 用の純正ドライバはないが、foo2hyperc というフィルタがあるようで、printer-driver-foo2zjs パッケージに含まれている。これを追加した上で、「設定」から…

Ubuntu 12.04 の UI を昔風に戻す

Ubuntu 12.04 の UI は Unity なる3Dデスクトップになっているのだが、やはり好みに合わない。その上、ラボのワークステーションはマルチモニタにしているせいか、しばしばウィンドウの中が真っ白になったり、ランチャーの背景が砂嵐になるなど、3D composit…

Relative risk と Odds ratio

前向き(prospective)研究では relative risk が直接計算できるが、後ろ向き(retrospective)研究である疾患対照研究(case control study)では odds ratio しか計算できない。しかし後者で前者を近似できる、という話を学部の頃に習ったときは、なぜなのか分か…

Sidak法からBonferroni法へ

N回独立な検定を行ったところ、p値の最小値としてpminを得たとする。これよりも「珍しい」事象は「p値の最小値として、pminよりも小さい値を得た」である。これは「全てのp値がpminよりも大きかった」事象の余事象だから、その確率はで与えられる。多重検定…

ベクトル化されたif

以下の関数は、ベクトルに対しては期待した動作をしない。 mysqrt <- function(x) { if (x > 0) sqrt(x) else 0 } そこで、ifelse を使って mysqrt2 <- function(x) { ifelse(x > 0, sqrt(x), 0) } のようにすれば動く。ただ、sqrt(x) が x のすべての要素に…

R は遅延評価!?

R

R で関数の実行時間を測定する system.time は、 system.time(rnorm(10000000)) のように使う。「ふつう」のプログラミング言語の感覚だと、rnorm が評価されてから system.time が呼び出されるはず。経過時間を測ろうと思ったら、rnorm を評価する前に現在…

k番目の値の分布

昨日の勉強会で、Benjamini-Hochberg法に関連して、次のような問題を考えた。『[0, 1]の範囲で一様乱数をN個発生させたときに、k番目の値はどういう分布を取るか』シミュレーションするのは簡単だが、この分布には名前が付いているのだろうか? 標本の「k番目…

確率密度関数の変数変換

確率密度関数 f(x) は、確率変数 X が x ちょうどを取るときの確率ではない。微笑領域の幅 dx を掛けたときに確率になるようになっている。これが「密度」の意味するところ。したがって変数変換をする時は、ヤコビアンを掛けることになる。詳しくは、確率分…

GNU Parallel が便利

GNU Parallel を使ってみた。for ループと違って、並列実行できるのがよい。並列実行だけなら xargs -P でもいけるが、引数置換が豊富なのがよい。そのままファイル名を渡す {} に加えて、{.} で拡張子より前だけ、{/}でディレクトリ除去だけ、{/.} でディレ…

R メモ

R

指定した条件を満たす要素の数を数える。 m <- cbind(0:20, 1:3) sum(m[,1] %% 2 == 0 & m[,2] == 2) # => 3 sum(c(NA, NA, TRUE)) # => NA sum(c(NA, NA, TRUE), na.rm=T) # => 1 NA が含まれている場合、na.rm=T にしないと NA になってしまう。

UNIX コマンドメモ

less -S とすると、右端で折り返さずに、表示が打ち切られる。sam ファイルのように一行が長いときに便利。ls -1 とすると、1ファイル1行が強制される。

mapply について, list 要素の置き換え

R

mapply について mapply は、Haskell で言うところの zip して map。 > mapply("*", 1:10, c(-1, 1)) [1] -1 2 -3 4 -5 6 -7 8 -9 10 list の要素の置き換え [[]] と [] の違いについて、まだ腑に落ちていないのだが、実際の使い方としては a <- list(1:10, …

サンプリングのアルゴリズム

n個あるうちからk個取り出したい。R だと sample 関数を使うだけなのだが、その仕組みが気になる。重複を許す場合(with-replacement)は簡単で、1からnまでの一様乱数をk個作るだけ。計算量はO(k)。重複を許さない場合はどうする? ソースコードを見る前に考え…

R は column major, apply の第2引数, 代入演算子

R

C 系言語を普段使っている私が、R で引っかかったところをメモ。 R の array は column major C 言語だと、row major。 a <- array(1:24, c(2, 3, 4)) として作った場合、a[1,1,1], a[2,1,1], a[1,2,1], a[2,2,1], a[1,3,1]....という順番になる。matrix も…