1/12/2018にTAD wind symphonyコンサートに向かう途中、荻窪駅で出口を間違えて反対側に向かってしまいました。趣のある倉庫のような門があったのでパチリ。表に回ったら「明治天皇御小休所」と書かれていました。
Windows Movie Maker 2012
子供のウィンドウズPCに動画編集アプリを入れようとしたところ、Microsoft社のMovie Makerがなぜだか「サポート終了」として、日本の同社のホームページから消えていました。無料であることに加え、ちょっとキャプションを入れるだけの様な簡単な編集には便利なアプリだったので残念、と思っていたら、ダウンロードサイトが他にありました。
<https://www.windows-movie-maker.org/>
JAMA oncology
JAMA oncology誌に昨年投稿した論文が掲載されました。
city.osaka.lg.jp
リンク先の記事は、救急隊が搬送後に自販機の飲料で一息ついたところが、ある種の大阪市民のお気に召さなかったという内容の様です。 <http://www.city.osaka.lg.jp/seisakukikakushitsu/page/0000419363.html>
九大にいた時消防署に泊まって、救急車の出動時に一緒に救急車に乗って救急の現場を見るという実習がありましたが、その時に救急隊の方からはじめに言われた注意事項を思い出しました。
曰く、「先生方が病院にいたら感じないかもしれませんが、市民の権利意識が厳しく、救急の現場でも、ガラスが飛び散っているような場所で靴を脱がずにけが人のところに向かったのを、土足で家に上がられたとクレームつけられたり、担架に患者さんを乗せて運んでいるときに、道をあけてもらおうとしたのを、患者の家族を突き飛ばしたとクレームつけられたりすることがあるので、患者さん以上に周りの人に注意して行動してください」
その当時はそうだったかもしれませんが、今では病院にいる先生方も市民の権利意識を感じる機会は多くなっているかもしれません。
IBM Watson
前回の記事では厳密にはWatsonの機能を試すところまではやっていなくて、その環境を試したところまででした。きょうは例題のtutorialを見ながら、Watsonのチャットボットとの単純な会話をするところを試してみました。
この画面からログインします。次の画面でcreate+をタップしてworkspaceを作成します。
この画面からintentsを作成します。出来上がったいくつかの単純intentsを組み合わせました。試した結果が次です。左側に縦の赤い棒線が入っているのがWatsonがしゃべっている言葉です。
Berliner Philharmoniker の「トムとジェリー」
幼い頃大好きだった「トムとジェリー」の音楽をベルリンフィルの演奏で(動画は広告のスネークプレビューです)。それにしても、犬の鳴き声をこんな風にやっていたとは。
「ららら…」で取り上げられるとこちらに訪問する方が一定程度いらっしゃるので、オリジナルのリンクも張っておきます。デジタルコンサートホールで表示すると日本からは権利の関係でこのコンサートを見ることができない旨の警告が表示されます。他の権利者が配信しているはずですが、どこで見ることができるのか私は把握しておりません。
Podcast: Play in new window | Download
Super Moon 1/2/2018
特に芸もなく月のアップを投稿します。帰宅途中、ビルの隙間に顔を出した時が大きさを実感できた瞬間なのですが、家に帰ってデジカメを取り出した時には、すでに天空に上がっていました。(Nicon D50, Af niccor 300mm Mモード F8 250 ISO 200 ホワイトバランスはオート) 撮影後にgimpでトリミング、グレー化しました。
the last day of 2017
2017年ももうすぐ終わりです。
・ 入社以来、ずっと可愛がっていただいていた元上司のAさんが職場を去ったのが何よりも残念です。難しい職場をよくまとめてくださっていただけに、今の職場の今後が心配です。(Aさんは、おそらくどこにいっても通じる様な実力者なので心配はしていません。)
・ 一方、今年はCirculation, Bone Marrow Transplantation, JAMA, Annals of Internal Medicine 誌に記事が掲載され、特にCirculation 誌はpeer reviewのあるページにfirst authorとしての掲載でした。また、これとは別のoncology領域のtop journalにもacceptされている記事があり、これもpeer reviewのあるページです。自分のリサーチがそれなりの評価を得たことで自信を持てます。
2018年みなさまのご多幸を祈念します。今後ともよろしくお願いいたします。
ACP Japan Chapter – Resident Fellow Committee から中間報告
ACP Japan Chapter のRFCの活動報告をシェアします
Case Crossover Design – (3)
Case Crossover Design – (3)
前回の記事のつづきです
Logistic regression model
このアプローチでは、観察期間を単位期間ごと(この場合は1hr)に分割して、イベントが発生した時以外は、コントロールとして、多くのcontrolと少数回のcaseを観察したcase-control studyのようにみなします。原文では[the case-crossover design can be viewed as matched case-control design with 1:M matched pairs]となっていまして、この、「みなす」というのが感覚的によくわからないのですがそういうことらしいです。例題では一人につき1年間観察して、1回AMIが発症たことにしていますので、1例の症例が、集計上8759例のcontrolと1例のcaseのように扱われます。例題では10例いますのでトータルの集計上の観察症例数は87600例と表示されます。matched pairを示す指標としてcase idを使用した、conditional logistic regression modelを用います。Formulaには[case~exposure+strata(id)]を入れます。
ちなみに、このスクリプトで使用されていますreshape2というライブラリのmeltは、こんなデータの変形をしたいと思うときに手作業でやってるようなデータの変形をやってくれる興味深い関数です。
matrix<-matrix(round(c(rr,lo,hi,or,lo.or,hi.or),2),nrow=2,byrow=TRUE)
rownames(matrix)<-c(“RR”,”OR”)
colnames(matrix)<-c(“Value”,”low 95% CI”,”high 95% CI”)
matrix
mat<-matrix(, nrow = T-1, ncol = 0)
for (i in 1:10) {
if (T%%frq[i]==0) {
exposure<-c(rep(c(1,rep(0,T/frq[i]-1)),frq[i]))[-T]
} else {
exposure<-c(rep(c(1,rep(0,trunc(T/frq[i])-
1)),frq[i]),rep(0,T-frq[i]*trunc(T/frq[i])))[-T]
}
mat<-cbind(mat,exposure)
}
commat<-rbind(efftime,mat)
library(reshape2)
data.wide<-as.data.frame(commat)
colnames(data.wide)<-c(1:10)
data<-melt(data.wide,measure=c(1:10))
colnames(data)<-c(“id”,”exposure”)
data$case<-rep(c(1,rep(0,T-1)),5)
head(data)
library(survival)
mod<- clogit(case~exposure+strata(id),data)
summary(mod)
結果として得られたodds ratioは、前記事の未調整のORと大体同じになります。
Time trend adjustment with conditional logistic regression model
Case crossover designではcase自身をcontrolとして用いるため、年齢・性別・既往歴や基礎疾患といった症例の背景因子のような交絡因子は調整されているとして扱われています。しかしながら、トレンドの交絡を避けることができません。トレンドの交絡とは?ということですが、参考にしている文献(中国論文1とMaclure文献 2)では、MIの発現は日内変動のパターンを取ることが知られていることを例にしています。そしてコーヒーを飲むのもおそらく日内変動のパターンを取りそうです。そこで、朝、昼、午後、夜に対応して1, 2, 3, 4の値を取る変数clockを導入して調整します。(ただし、例題ではAMIの発症時刻が不明ですので、データがないということでwarningが出ます。私の感覚ではvariable にmissing dataがあるとその観察は計算から除外され、自由度が減るという方がしっくりきます。)
data$clock<-c(rep(1,T/(3654)),rep(2,T/(3654)),rep(3,T/(3654)),rep(4,T/(3654)))
mod.adj<- clogit(case~exposure+clock+strata(id),data)
summary(mod.adj)