2012年12月21日金曜日

困ってしまうのはお姉さんだけではないというお話。



生存を説明してくれるかもしれない要因が30個。
これが生存時間にどのくらい関連しているかを確認するために多変量解析をしようとする。
サンプルは500人分くらいあって、全部イベントが起きている。
この時、34個全てを入れるモデル。
生存を説明してくれるかもしれない要因が30個。
これが生存時間にどのくらい関連しているかを確認するために多変量解析をしようとする。
サンプルは500人分くらいあって、全部イベントが起きている。
この時、34個全てを入れるモデル。
1つ外すモデル。
2つ外すモデル。
ひとつひとつを入れるか入れないかで2^34-1通り出来る。

そして、Rを開き、
library(survival)
をうつ。
summary(coxph(Surv(time,event)~treatment,data=data))だったよね。

そして、解析を始めようとするが、ちょっと待った。

2^30-1とはいかほどの数字なのか。

おもむろにgoogleを開き、上の数値を打ち込む。
すると、

2^30-1=1 073 741 823
実感が全くわかないので1時間(3600秒で割ってみる。)
(2^30-1)/3600= 298 261.617
結構な時間がかかるらしい。
何日なのか。
(2^30-1)/3600/24=12 427.5674
何十年のレベルらしい・・・。
(2^30-1)/3600/24/365.25=34.0248252

お父さん。僕、お父さんになれるよ?
ひとつの解析が1秒とすれば34年かかるらしい。
その間にもっと良いパソコン出るよ!

こんな時、変数選択という概念を利用すると便利です。
すべての組み合わせを試して見るわけでは無いですが、それに近い答えが出てきます。
困ってしまうのはお姉さんだけではないというお話。

こちら


2012年12月3日月曜日

モノグラム


正直全く知らなかったが、ノモグラムというものがあるらしい。

すでに調べておられる方がおられたので

http://d.hatena.ne.jp/isseing333/20110308/1299562794

とかwikiなら

http://goo.gl/ZoHUz
とか
http://en.wikipedia.org/wiki/Nomogram
とか。(したが英語)


今は計算機が発達しているので、これに頼る必要はないと感じるし、電卓でさえ今は105円で手に入るからなあ。。。

対数尺?(見たことがない)などと同じように時代と共に廃れていく方法なのかもしれないですね・・・。



2012年11月28日水曜日

近況

二週間くらい書いていなかったことになるか。反省。

この2週間は同僚の先生方の学会前ということもあり、かなり、頼まれごとが多く、12月に検討会をする臨床試験のサンプルサイズをいろいろな場合で計算してシミュレーションしてみたりとこの6か月で一番忙しかったです。次から次にデータに出会えるので楽しいのですが、そろそろ質問によっては同じような質問も多くなってきて、それらを少しずつでいいからまとめていくようなこともしないとなとおもっているところであります。

研究の方は論文化を先生にしりをたたかれながらやっています。
12月中旬に今期の報告も作らないとダメだし、2月にその発表会もあるし、なかなか忙しいな・・・。

まあ追われているのは別に嫌いではないんだけど、ちょっと時間が不足気味。

最近誰に会っても太った?って聞かれるし、どうにかしたいなー。

というか肥満も早死のリスクなんだから研究する前に何とかしろよ。って話だよね。

多分肥満遺伝子ってのがあって、僕にはどうしようもないんだ!←

とりあえずそんなこんなで明日は発表です。

あまり統計は関係ないのですが、今所属しているところの関係で発表の機会をいただきました。

1月にも同じ内容でワークショップで発表できるみたいだし、少しこっちのこともやっていかないとな・・・(奇跡的にも日本語の発表なので九死に一生を得ている)

とりあえずいっぱいいっぱいになるまで走り続けましょう。

いろんな人に迷惑を掛けながら、自分のバランスとれる仕事量とかを探させてもらいます。

今のうちに無理をして。

死にかけて。

2012年11月13日火曜日

ブートストラップとかとか。

比較的小サンプルでのcox回帰などを用いた検討では実データでのHRなどに加えてブートストラップなどを使ってconcordance indexなどを検討する事もおおい。

このブートストラップ、まだ医師の先生方には全くといっていいほど浸透していない知識なので、説明がすごく難しい。

フェイズ1で増量デザインがベイズ流ロジスティックを使いますと言われて先生方がああ、そうですか。といってしまうのと一緒である。

このあたりをうまく数式を使わずに説明する方法を考えなくてはならないなーとおもっている。

そんな疑問もありつつ、あまりそれには取り掛かれなかった今日。

少しずつ仕事が増えてきている。

研究も少しずつ進めよう。

止まらないように、少しでも前進。

期日は近い。

2012年11月12日月曜日

日報

大きな仕事が入ってきた。ちょっとデータ的にも1000以上あるので計画を立ててから解析しよう。
研究も少しだけ進めた。毎日少しずつでも勧める。足踏みでもいいから。
疫学について勉強する必要がありそうだ。
入る前とは少し違うイメージ。ただそれも求められるならやりましょう。

以上。

並べ替える時はsortをいきなり使わないように。

データをソートするときは、sortを用いるのではなく、一度orderで順位を確認したあと、それを用いてソートする癖をつけよう。

そうでないと、2変量以上の時データがぐちゃぐちゃになってよくわからなくなる。

分割表で0のセルがあるとRcmdrでは解析できない。

Rコマンダでは背景因子の分析をするときに2*2で0のセルが一つ以上あれば解析できない。

多分内部ではchisq.testを使っているからだと思うが、医学のデータではかなり少数の検討をしなければならないこともあり、0のセルがあってもやるしかないこともある。

その時はコマンドfisherを使ってやるべきなのだが、僕がいつも使っているfisherというものは群馬大学の青木先生という方が作って公開しているもので、このページにかいている。
http://aoki2.si.gunma-u.ac.jp/R/fisher.html

ここの


source("http://aoki2.si.gunma-u.ac.jp/R/src/fisher.R", encoding="euc-jp")

という1分をRの画面に貼り付ければ出来る。(RコマンダではなくRコマンダではなく本体)

そして

x <- matrix(c(50,30,20,40), byrow=TRUE, ncol=2)
fisher(x)

とすれば計算してくれる。

xは行列、ここでは2*2の分割表を指定する。

byrowってのは行を優先してください。

ncol=2というのは列は2までにしてください。ってこと。


数字をc()で囲んでいるのはおまじないとして覚えてください。

あと、もしかするとfisher(x)とするとエラーが出てしまう可能性があります。

大概の場合そのエラーの文章をコピーしてgoogle先生に見てもらうと同じエラーを起こしている人がかならずいます。

確認してみてください。