お昼ご飯を食べに出たついでに、近くの『聖地』にお参りに行きました。写真は冨田勲先生が使っていたシンセサイザーです。
iPodから送信
Morning walk
今朝通勤中に職場近くの神社に立ち寄りました。初詣でられの準備が進んでいます。
HSP
「ヒートショック」という言葉も、ヒートショック・プロテインという物質群が報告・研究されていた時とは、全く異なる意味合いで普及してしまったな
皇居のお堀
今朝の皇居のお堀の様子です
誓いの碑
今日厚生労働省に行きました。敷地に入ったすぐ傍に誓いの碑があります。過去の薬害のような事を二度と起こさないと言う、役人の心構えが書かれています。私の職責も目指すところはコレと同じです。
iPodから送信
IBM Watson
試した時の、記録です。
1.まずはログイン
2.アプリを実行するスペースとかの設定(実はこの時は間違っていて、アップロードするphpファイルをタイプしているが、IBM側のワークスペースに設定したアプリの名前を入れなくてはいけなかった。で、phpファイルはどうやって指定するかと言うと、指定しなくてよいようです。このbluemixコマンドをタイプしているディレクトリのファイルがすべてIBM側に送られるらしいです。)
3.起動確認
Shoko Ikeda
今週はレビュー業務(他の人の作成した書類を読んでコメントする)が多く、書類に目を通しながら音楽を楽しむ時間を多くとりました。仕事をしながら、これらのアルバムを聴きました。
Play Visual Recognition of IBM Watson
こちらのページで、IBM Watsonで誰かが学習させた画像認識をとりあえず試してみました。
<https://visual-recognition-demo.ng.bluemix.net/>
- 牛。まずは、こちら。自信を以て正解を出しています。
- 次は、お台場の自由の女神。これも何が写っているのか正確に答えています。
- つぎはこちら。食事をする場所だという事、それぞれのヒトの性別や年齢もおおむね妥当。(私は少し年上にみられていましたが)でも、一人認識されていませんね。
- ちょっと、意地悪してこちら。場所のロッカールームはおまけで正解。写っているのは「執事」ですか?
Formatting for the Lancet
Formatting for the Lancet
物は試しというレベルですが、リサーチの結果をthe Lancetに投稿しようとして原稿をフォーマットし直しています。(この作業、たとえば初回のスクリーニング時点では自由フォーマットにするとか、あるいは、各誌で打ち合わせた基本フォーマットを定めてどこの雑誌も同じフォーマットで受け付けるとか、なんか簡素化できないものかとも思いますが)
え?小数点を中ぽちに?
次がformatting guidelineの一部です。<http://www.thelancet.com/pb/assets/raw/Lancet/authors/tln-information-for-authors.pdf>
なかなか厄介なリクエストです。大変多くの数字(ほとんどは小数点を含む)が本文に出てきます。ところが、いわゆる小数点は文末のピリオドと同じ記号を使用していますので、単純にピリオドを中ぽちへ全部置換すると今度は文末のピリオドも中ぽちになってしまいます。
ワイルドに行こう
こういう時はワイルドカードを使用した置換なのですが意外に苦労しました。ワードのワイルドカードを使用した特殊文字への置換と言う技を普段使用していないので要領が解りません。ですので、どうやったかを記録します。
「・」が出てこないじゃないか
the Lancetのformatting guidelineに記載のあるAlt+0183では「・」が出てきません。wordの置換の説明を見ますと、置換後に特殊文字にする場合は「^183」のような記載をするらしいのですが、これだとなぜか置換後は半角カタカナの「キ」になります。仕方ないので、まずは記号を特殊文字のパネルから探してクリップボードにコピーです。
ワイルドカード
で、いろいろ工夫すると次のようになりました。まず、検索・置換画面のオプションで「ワイルドカードを使用する」にチェックを入れます。検索対象を()でくくることで、それを置換後に使用する際に、\1とか\2とかで(その塊)はそのままという扱いができるようです。数字は何個目の塊かを示します。一応これで数字に囲まれたピリオドを、中ぽちに置換することができます。今回はR version 3.3.3とかいうのも中ぽちになりましたが、そこは許しましょう。
Case Crossover Design (2)
Case Crossover Design – (2)
Relative Riskの計算の流れ
前回のコードを少し詳しく見てゆきます。
コーヒーの一時的な効果は、飲んでから1時間継続すると仮定します。Vector c には、AMIで救急外来を受診した患者さんから聞き取った、コーヒーを飲んでからAMI発症までの時間(hr)を代入します。
- t<-c(9,1/3,3,22,6,7,12,5,0.5,24)
1年間に何杯のコーヒーを飲むかという頻度(杯/year)をfrqに代入します。今回のこの値の使い方に基づき、一般化してこのスクリプトを使用する上では、1年あたりのTransient effect time(hr)がfrqという見方の方が良いだろうと思います。
- frq<-c(730,365,36,1820,2920,24,730,730,3650,365)
Tには、1年間は何時間かという値を入れます。今回は全症例1年を観察期間にしたので定数になっていますが、一般化する上では、評価の対象にした観察期間と理解すると良いだろうと思います。症例ごとに観察期間が違う場合はTもベクターにできると思います。
- T<-365*24
efftimeには、AMIの発症がコーヒーを飲んで1時間以上経過していたらfalse (0), 1時間未満であればtrue(1)というフラグを代入します。Transient effect timeを1hrにしていますので、判定の条件は t>=1を使用していますが、Transient effect timeが2hrなら判定条件をt>=2にしたらよいでしょう。その際もフラグ(返り値)は 0, 1のままで結構です。
- efftime<-ifelse(t>=1,0,1)
RRの計算
Mantel-Haenszelの計算式からRR (relative risk) を計算します
としましたので、次の式になります。
- rr<-sum(efftime*(T-frq))/sum((1-efftime)*frq)
分散を求める式では
この部分をコード化すると
- var.log<-sum(frq*(T-frq))/(sum(efftime*(T-frq))*sum((1-efftime)*frq))
標準誤差は分散の平方根で以下のようになります
- se.log<-sqrt(var.log)
- lo.log<-log(rr)-1.96*se.log
- hi.log<-log(rr)+1.96*se.log
- lo<-exp(lo.log)
- hi<-exp(hi.log)
ORの計算
オッズ比は次の式で表現されますので
これをコード化すると
- or<-sum(efftime*(T-frq-(1-efftime)))/sum((1-efftime)*(frq-efftime))
分散は次のように表現されますので(元論文のこの式の「=」の左側、var[ln(RRchm)] は、おそらくvar[ln(ORchm)]の誤植だろうと思っています)
これをコード化すると次のようになります
- var.log.or<-(sum(efftime*(T-frq-1+efftime)*(efftime+ T-frq-1+efftime))/(2*(sum(efftime*(T-frq-1+efftime)))^2))+(sum(efftime*(T-frq-1+efftime)*(1-efftime+frq-efftime)+(1-efftime)*(frq-efftime)*(efftime+(T-frq-1+efftime)))/(2*sum(efftime*(T-frq-1+efftime))*sum((1-efftime)*(frq-efftime))))+(sum((1-efftime)*(frq-efftime)*(1-efftime+frq-efftime))/(2*(sum((1-efftime)*(frq-efftime)))^2))
標準誤差は分散の平方根で以下のようになります
- se.log.or<-sqrt(var.log.or)
- lo.log.or<-log(or)-1.96*se.log.or
- hi.log.or<-log(or)+1.96*se.log.or
- lo.or<-exp(lo.log.or)
- hi.or<-exp(hi.log.or)
で、集計にはこれとは別のアプローチが紹介されていましたので次の記事へつづきます