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として用いるため、年齢・性別・既往歴や基礎疾患といった症例の背景因子のような交絡因子は調整されているとして扱われています。しかしながら、トレンドの交絡を避けることができません。トレンドの交絡とは?ということですが、参考にしている文献(中国論文とこちらPMID: 1985444)では、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)

 

vigiRank beyond the BCPNN signal detection

先日の記事でBCPNNは、WHOが使用しているシグナル検出方法だ、というようなことを書きましたが実はWHOは少し軸足を別のものに移してきています。その名前はvigiRank。1,2

vigiRankとはどういうものでしょうか。まずは、説明です。3

vigiRank is a data-driven predictive model for emerging safety signals. In addition to disproportionate reporting patterns, it also accounts for the completeness, recency, and geographic spread of individual case reporting, as well as the availability of case narratives. Previous retrospective analysis suggested that vigiRank performed better than disproportionality analysis alone.

曰く、新興安全性シグナルを検出する、データ駆動予測モデル。不均衡な報告パターンに加えて、個別症例報告の以下の点を考慮する。

  • 完全性 4(具体的には性別・年齢・被疑薬の使用理由・投与開始日・イベント発現日・narrative・dechallenge rechallenge情報や転帰情報の有無を織り込んだ指標)
  • 最新性 (文献では直近3年の報告の件数(割合?)が示されていました)
  • 地理的な広がり (文献では複数国からの報告が例示されていました)
  • 病歴が入手されているか(定型文や断片的な情報は未入手扱い)

単純なdisproportionality分析より優れたパフォーマンスを示す可能性が示唆されている。

使うパラメータが増えた分利用できる症例数は減りそうです。次の動画の最後の方で紹介されています。この演者は全体にわかりやすいはっきりとした発音なのですが、WHOを「ダブリュエイチオー」ではなく、「フー」と発音しているので聞き落しなく。

スライドはこちら

<http://www.imi-protect.eu/documents/PROTECTSymposium-Tutorial-Statisticalsignaldetection-UMC.pdf>

References:

1.
Watson S, Chandler R, Taavola H, et al. Safety Concerns Reported by Patients Identified in a Collaborative Signal Detection Workshop using VigiBase: Results and Reflections from Lareb and Uppsala Monitoring Centre. Drug Saf. September 2017. [PubMed]
2.
Caster O, Juhlin K, Watson S, Norén G. Improved statistical signal detection in pharmacovigilance by combining multiple strength-of-evidence aspects in vigiRank. Drug Saf. 2014;37(8):617-628. [PubMed]
3.
Caster O, Sandberg L, Bergvall T, Watson S, Norén G. vigiRank for statistical signal detection in pharmacovigilance: First results from prospective real-world use. Pharmacoepidemiol Drug Saf. 2017;26(8):1006-1010. [PubMed]
4.
Bergvall T, Norén G, Lindquist M. vigiGrade: a tool to identify well-documented individual case reports and highlight systematic data quality issues. Drug Saf. 2014;37(1):65-77. [PubMed]

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)

で、集計にはこれとは別のアプローチが紹介されていましたので次の記事へつづきます

 

Sequence Symmetry Analysis (SSA)– (3)

問題の糸口が見えてきて

前記事で悩んでいた部分がクリアになってきました。そして、自宅SASのライセンスが切れていたという問題も解決しました。

このSASは無料で使用できてちょっとテストコードを走らせるのにはいいんですが、ビッグデータは扱えないなどの制限があります。OSIM2の巨大データも読み込めません。ただ、元データが大きくても実際の解析対象をデータを抽出して、絞ってデータのサイズを小さくすれば無料SASでも十分データ集計ができます。とりあえず、抽出した後の、_drug  _conditionのデータからスタートです。こんな感じのSASスクリプトを実行しました。

SASの実行結果

これは、基本的に他人様の書いたスクリプトなので、この結果が正解だろうという前提で提示しています。

自作のスクリプトで実行…おやっ?

で、同じデータを自作のスクリプトでも実行。自作スクリプトはSQLで集計して、統計的な集計はRで実行、と言う2段構えにしました。データ集計はSQLが快適で良いのですが、F分布の確率密度関数の扱いがSQLだけでは私が苦手なので、データを出力してRスクリプトを実行しました。初めからRでデータ集計をしたら良いのでは?と思うかもしれませんが、Rは大きなデータをデータフレームに入れようとすると、全部オンラインメモリに読み込もうとするのかメモリを食うわ、何かデータのコピーを繰り返すのかスピードが落ちるわ。しまいにはゲロはいて死んでしまいます。ですので、仕方なしにこんなことしています。で、次が実行結果です。

ASR_UCI, ASR_LCIの値が、SASの出力と微妙に一致しません。今回はすぐ気付いたけど、実は当初悩んでいたのも、この問題だったりして。

この状況は以前にもあった

上手のASRやNSRの出力を見て気づきました。以前と同じ失敗をやらかしてしまったようです。windowsのコントロールパネルの言語設定の追加の設定

の数値タブの小数点以下の桁数を増やします。

気を取り直して再チャレンジ

データを読み込みなおして、気を取り直して実行です。

これなら、SASの正解と一致します。めでたしめでたし。

SSAの理解も深まってきたし、これで集計する道筋がついたぞ。

 

Sequence Symmetry Analysis (SSA) – (1)

はじめに

以前Sequence Symmetry Analysis (SSA) がイマイチうまく算出できないという話を書いて、そのまま放置していましたけど、ここの所American College of Physiciansで新しいプロジェクトを開始するという件が、いよいよ動き出すことになってその準備が佳境に入ってきています。先週は、平日に会社を1日休んで準備にあてていました。勤労感謝の今日もかなりの時間をその準備に使っています。旗振り役の某大学の先生とも電話で打ち合わせしましたが、彼女は勤労感謝の今日も休日出勤で一日中病院にいらしたという事で、それでも、学会のプロジェクトの仕事もされていたようです。そうまでして、こういうプロジェクトをしようと言うバイタリティには脱帽です。わたしも、ACPのプロジェクトが忙しくなってきたので他の事はぼちぼち進めます。

本題の入り口

SSAについて、まずは日本語の資料から少しずつ読み解いてゆこうと思います。粗順序比は難しくないので、元資料でよいとおもいます。悩んでいるのは、無効果順序比の集計の説明パートから。

まず、ここで疑問が発生。ここに至る前段階で「調査期間中に新規にAとBが発生した患者」を選択しているので、この定義だと、必ずN=nになります。Nとnを分けて記述する意味があるのか? あるとして、いったいどういう事だろうか。

次に、aを求めるところで、分母にxについての∑があるので、観察期間人数の情報になると思うのだが、それを人数nの次元で割って確率になるのだろうか? 分母にも観察期間人数の次元のデータを以て来なくていいのだろうか?

この点を原著に戻って確認しないと、コード化できない感じです。つまり、入口の理解でつまずいていることが確認できました。

(つづく)

Changing high impact journal

2017年はproductivity の高い年を過ごしました。この文章の大部分を書いているのは2017年秋ですが、この記事を公開できるのはAnnals of Internal Medicine誌およびJAMA oncology誌でarticleが出版され公開された後にしましたので、もう2018年の冬です。2017年1年でCirculation のリサーチレター、Bone Marrow Transplant, Ann Int Med のレターそしてJAMA oncologyの短報が受理・出版されました。C誌、A誌、J誌でそれぞれ驚いた点があります。


Circulation: この雑誌に掲載された私の論文はVEGFシグナル系の阻害薬についての論文でした。投稿から受理まで、編集部・レビューワーとやり取りしてる間、一貫してVEGF阻害薬という表現でコミュニケーションしていました。解析したのはVEGFつまりリガンド側を阻害するものと、その受容体側を阻害するものがありました。これらをひっくるめて受容体の活性化を阻害するものという事で、広義ではVEGF阻害薬とまとめて表現しても間違っているわけではありません。その表現で一応専門家によるレビューも通っているのでアクセプトした状態から、その表現を変えるようにリクエストが来ることは通常はありません。ですが、今回はいざ出版という、ガリプルーフをもらうタイミングで「(狭義で)VEGF阻害といえば、リガンドの阻害薬であって、受容体の阻害薬を含める表現ではない」というような横やりが入り、出版直前で論文のタイトルの修正を依頼されました。一旦受理されていますので、出版部の方は低姿勢で依頼してきました。もちろん快く引き受けて、タイトルから本文、何か所も修正しました。ちゃんと全部修正ができているか念のため確認したりするのに神経と時間を使いました。

欧米の出版社とかは、業務をやっつけ仕事としてやっている人が多いだろうと思っていたので、出版物のクオリティを高めるけど出版スケジュールに悪影響が出かねない今回の様な対応をとったことは驚きでした。


Ann Int Med: この雑誌は、レターの投稿方法が一風変わっています。あたかもFacebookや一般のblogにコメントするような形で投稿します。ホームページ上で掲載された多くの研究論文には、下の方にコメント欄があって、そこに入力すれば投稿することになります。簡単な審査はあるようですが、スパムのようなものでなければ、投稿したコメントはしばらくしたら、ホームページ上で公開され、インターネットを介して誰でも見れるようになります。ただし、ホームページで公開されたコメントがすべて雑誌に掲載されるわけではありません。ホームページで公開されますと、一般の読者や元の研究論文の著者らの目に触れ、そうした人たちがコメントに対してさらにコメントしたりします。こういった、世の中の反応を見て編集者が雑誌に掲載するコメントを選びます。おそらく、盛り上がったやり取りがなされていたら、それはつまり、世の研究者らの関心が高い話題についての議論だということでしょう。ホームページにコメントを公開することで、世の中の注目度を観察して、それを参考に編集者は選んでいるのです。インターネットでの記事の公開と、紙面での雑誌の編集が双方向に作用しているのです。

一方で、この手軽さが問題を引き起こしました。通常の雑誌の記事の投稿であれば、投稿時に共著者の情報も正確に提出することが求められます。しかし、今回はとりあえずコメントと、筆頭著者の連絡先だけが求められていました。ですので、accept のレターには、共著者のメールアドレスを教えてほしい、という内容が書かれていました。ここで、大変な粗相をしてしまいました。じつは別のコメントについてacceptのレターが来たのと勘違いして、別の共著者にCOIのフォームやcopyright transferの確認をしてしまったのです。この時連絡を取ったみなさん、Ann Int Medにお名前が掲載されるとして喜ばれたはずです。「間違っていました、別の共著者と投稿した奴」でしたと説明するのが本当に気まずかったです。


JAMA oncology: こちらの編集の方にも驚かされました。投稿して2-3週間ほど経過したときにdecision letterが来ました。1週間ほどで来る連絡は通常忘門前払いです。編集者がざっと見てレビューワーにも回さずに返却します。2-3週間も速い方です。このタイミングで来る返信も経験的にはrejectが少なくありません。レビューワーがあまり深く読み込まずに、「この雑誌には向いていない」とか言って返します。でも今回は忘れもしません。健康診断を受けるために近くの医療センターで検査を待っているときにメールが届きました。健康診断の検査を受け、その待ち時間に何度もメールを読み返しました。それとほぼ同時にCOIのフォームやcopyright transferのレターが共著者の方にも送られていました。そして、内容はと言うとレビューワー二人がそろって興味を示してくださっていました。
・ This article should be prioritized for publication. (reviewer#1)
・ The conclusions are important to disseminate to practitioners quickly. (reviewer#2)
ところが、このprioritize, quicklyは若干曲者で、再解析が必要な内容を含め2-3週間で回答するようにという内容でした。通常であれば、2-3か月の間にリバイスするように要求されるのですが、異例の短さです。幸い、初回の投稿前に検討したようなデータでしたので、実際には再解析することなく、以前検討したデータを探してテーブルにまとめる程度で対応できました。

さらに、奇妙な指摘は続きます。「FDAのデータを使用したということだが、FDA内部でこの件は検討されているのか?」そう言われても、FDAを辞めたのは20年前だし、知り合いがいないわけではないが内部の事を聴けるような間柄ではないし。「公式の公開文書を見る限り、FDAが検討した形跡はない」としか答えられません。

異例なことは次のリバイスでも起きます。reviewer#2がなぜかご自身の名前を明かしたうえで、リバイスをリクエストしてきました。そんなに難しいことではなかったのですが10日ほどで対応しろと、その、スケジュール感が若干つらかったです。幸い、その週は会社の仕事がそこまで厳しくなかったので、平日も帰って夜にも集計をする気力が残っていました。

無事アクセプトされ、ガリプルーフが来ると驚いたことに、タイトルを修正され、アブストラクトの項目を結合して文章をまとめ、テーブルのタイトルを修正し、とかなりジャーナルのスタイルを優先した形での変更がなされていました。数値が多いのでQC箇所が多数です。テーブルも体裁が修正されたので一通り数値をチェックです。数か所コメントと修正依頼を書いて、それでアップルーブしました。アップルーブ後に共著者から、修正した個所に文法的な間違いが発生していることを指摘されましたが、データやデータの解釈等論文の主旨にかかるものではないエラーであるため、アップルーブ後の修正を求めないことにしました。

最後に、もう一点、JAMA oncologyは初回のレビューが終わった時点でtwitterでつぶやく言葉を一緒に述べるようにとリクエストしてきました。そう。出版社がつぶやく記事の宣伝のためにtwitter用の言葉も一緒に提出させるのです。このJAMAのtwitterやAnn Int Medのレターを見ますと、新しい技術・仕組みを取り入れて出版社も生き残りにチャレンジしているのです。また、Circulationの件のようにリスクを冒しても質を高めるようなこだわりの側面を見ました。これまで抱いていた欧米人のイメージを書き換えるような経験です。彼らチャレンジャーは旧態依然としたままでは、それぞれの世界で生き残れないのを知っているのでしょう。


2017年の年末に、東京大学医科学研究所の病院同窓会が開催されました。そこでの、研究所の所長の挨拶が印象に残っています。まず、第一声がマスメディアのカメラの前で頭を下げなければならないような事態が発生せず無事年を越せそうだ、として、職員に対して感謝の意を述べました。このくだり、言葉は違いますが同じ内容を病院長も延べられました。東京大学の研究所やその附属病院という、世間からの注目度も高い、そして、かなり大きな組織ですので、その組織の長をすることで神経をすり減らしていることが伝わってくるご挨拶です。

次に述べられたのが、研究所の歴史に絡んで、今後の生き残りについてのお話でした。東京大学医科学研究所は昨年開所125周年を迎えた記念行事を開催しましたが、開所当時は国民の健康に大きな影響を持っていたのは感染症でした。開所当時の伝染病研究所(現医科学研究所)が戦った標的は、感染症であり、感染性病原体でした。そしていまから50年前には、医科学研究所に改組され、遺伝子やゲノム研究に研究対象や手法がシフトしてゆきました。そして、現在医科研は研究対象を実社会で膨大に拡張してきている大規模データに舵を切ろうとしています。これもまた、生き残りをかけて新しい可能性にチャレンジしようとしているものだと思われます。

self-controlled case series (SCCS) – (2)

前回のおはなし

1. SCCSを再び

SCCSを自分なりにもう一度噛み砕いて計算の流れを納得した上で、それが間違っていないことを確認したいというのが目的再び挑戦です。前回使用した他人さまの書いたプログラムを参考に、計算の細かい考え方がわかったところで、もう一度どういう計算が必要かを考えています。始めは写真のような、手書きのスケッチで考え方を整理。

2.R→SQL

他人様の書いたRスクリプトを、SQLで表現しなおして、中間テーブルのデータを比較。結果を出力すると、正しいスクリプトだと38行になるところが、今回作成したスクリプトでは39行に?観察期間外にワクチンが接種された患者さんがいることを考慮した例外処理を含め忘れていました。

そんなこんなで、例外処理をするスクリプトを加えた結果が次の写真です。logの有効桁数が違うけどそれ以外内容は同じになりました。

 

3.  中間テーブルは一致したが…

上の通り、中間テーブルは一致しましたが、オッズ比が一致しません…そんな馬鹿な?しかも、だいたい同じくらいになるんだけど、微妙に不一致。

自分の集計結果:

論文の集計結果:

 

4.桁数が減っている???

いろいろ調べていると、SQL出力をcsvファイルにして、それをRに取り込んだところでデータの桁数(小数点以下)が減っています。元々小数点以下6桁あったはずなのに、2ケタに丸められています。何でこういうことになるのでしょうか? 読み込むRのread.csv関数の設定か? はたまた、読み込んだ後にdata.frameにするところで、宣言しなくてはいけないのか?

5. SQLの集計の出力がおかしい

結局読み取り側の問題ではなく、書き出しに問題ありでした。書き出しの際には、Windowsのコントロールパネルの言語設定のところから桁数を2 -> 6 と大きくすることが必要だということです。

 

6. めでたしめでたし

ちゃんとSQLのデータを吐き出すことに成功し、読み取って計算すると、論文のデータと一致しました。だいぶ理解が深まってきたぞ。

スクリプトはこちら

Letterを書くことについて

Letterを書くメリット

この記事は、以前私がqiitaで公開していた記事とそのコメントをまとめて、このHPに移動したものです。

Letter to the editor, correspondence, short communication等は考えたことを出版するにはよい選択肢である

  • 第一に、通常の論文より出版される機会が高い
  • 第二に、通常、タイトルが付いた学術雑誌の記事として索引されるので、文献検索システムで検索できる

Letters to the editor merit your consideration as a publication option:
– first, because letters and short pieces stand a better chance of being published than longer articles,
– and second, because published letters to the editor generally are titled and indexed, thus making them retrievable as articles in the journal.

Reference: LaVigne P. Letters to the editor. In: Taylor RB, Munning KA, eds. Written communication in family medicine. New York: Springer-Verlag; 1984:50.

Types of Letter

Letter to the Editorにはさまざまな型のものがある。

1. Attaboy (よくやった、でかした)

“I would like to congratulate Dr. Dellinger for anexcellent overview of cardiovascular management of septicshock.” で始まり, “This is a very useful clinicalreview in the management of a condition with a high mortalityrate, and I would certainly use this decision tree in my clinicalpractice”と結ぶようなレターの例がないわけではないが、その領域で名の知れた専門家でない限り、一般の研究者・医師がこの型のレターを投稿しても、紙面を割いてもらえる機会はあまり期待できないだろう。
Rererence
Pravinkumar E. Letter: cardiovascular management of septic shock. Crit Care Med 2004;32(1):315

2. New Idea to Add

記事で述べられた知識をもとに、さらに議論を深めたいと思うことがあるだろう。糖尿病性足潰瘍の治療について述べられた記事に対して、2人の読者が“An effective adjunctive therapy for wound debridement that was not mentioned is maggot therapy”としてレターを投稿した。
糖尿病性足潰瘍に対するうじ虫治療の効果について、私は詳しくないが、6報の文献を参照しその科学的根拠を示していることに加え、その治療法を2名の読者が指摘するという点がその意義を支持している。
Rererence
Summers JB, Kaminski J. Letter: maggot debridement therapy for diabetic necrotic foot. AFP 2003;68(12):2327

3. Disagreement

記事に反対意見を表明する読者もいる。不妊患者のボディマスインデックス(BMI)と妊娠第一期の転帰について議論した記事に対して、2人の読者が“The authors finally concluded that outcome of singleton pregnancies in patients with infertility was not influenced by BMI. We disagree with these results”とレターを投稿した。
この場合も、複数の読者が反対意見を表明しているという点が一般性を支持している。もし、本当におかしな結論を導いている記事があれば、反対意見を表明するのは重要なことである。
Reference
Bellver J, Pellicer A. Letter: impact of obesity on spontaneous abortion. Am J Obstet Gynecol 2004;190:293

4. Statement of Concern

家庭の銃器と殺人・自殺のリスクを調査した疫学調査(ケースコントロールスタディ)の記事に対して、1人の読者が著者の主張(と編集者)に対して疑問を投げかけた。“I doubt the Annals’ editorial board would have published without commentary an article by a pro-gun organization purporting to defend gun ownership. The author’s affiliations with anti-gun ‘research’ groups are no less compelling an argument for bias”このレターと同じページに「銃所持反対」の著者によって書かれたという申し立てとともに掲載された。

今であればconflict of interestで明記すべき内容かもしれない。銃所持支持団体が銃のリスクを論じる文献を投稿したのであれば、バイアスが懸念されるのは当然のこと。ただ、COIに明記されているのであれば、あえて懸念があると指摘することはほとんど意味がないだろう。
Reference
Fritz DA. Letter: lies, damned lies, and statistics. Ann Emerg Med 2004;43(1):141

5. Sounding Off (主張)

特に記事を引用することなく、主張を述べる、一種の論説。”Medicine is not exact, and bad outcomes happen. The notion that physicians can follow a formula and avoid successful litigation is false”
確かに、医療は完全ではないので、悪い結果が出ることはあるもので、マニュアルに従っていれば訴訟を避けられるというのは嘘だろう。依頼されていない”Sounding Off” レターはタイムリー的を得た内容で、うまく叙述されていなければ掲載されないだろう。特に著者が無名の場合には。
References
Grant DC. Letter: I don’t want to hear about the “standard of care.” Ann Emerg Med 2004;43(1):139

6. Gotcha(捕まえた)

元記事に重要な事実の誤認~特に患者の治療方針にかかわるような誤認~があった場合に、指摘されれば掲載される見込みが高いだろう。痛風に対する低用量コルヒチンについての記事に対して、薬剤師が次のような指摘をした。

“discussed the use of low dose colchicine in gout. The treatment dose of colchicine, which has remained at 1 mg initially, followed by 500 mcg every 2-3 hours for many years, should be reviewed. However, they are incorrect to say that the current BNF (British National Formulary) recommends a regimen for colchicine that is unchanged since the 1966 edition. In September 1999 the BNF reduced the total dose of a course of colchicine from 10 to 6 mg. Before 1981 the BNF did not even state the higher limit of 10mg”

ガイドラインの記述を元記事の著者がちゃんと押さえていなかったのは、元記事の著者らの確認不足です。きちんと指摘してあげましょう。ごっちゃんです!

ちなみに、この”Gotcha”、英語版でpokemon goをプレイしている人にはポケモンを捕まえた時に出る言葉としておなじみだろう? 論文で重要な事実の誤認に気づくことは「ポケモンゲットだぜ!」みたいな、感覚で指摘して見ると良いだろう。

References
Cox AR. Letter: colchicine in acute gout. BMJ 2004;328:288

7. Transformed Research or Case Report

Letterの項に症例報告や原著に値する内容が掲載されることがある。おそらく原著として作成された原稿がいくつかのピアレビュージャーナルでrejectされ、そのうち編集者が短いレターにまとめるなら掲載できるかもしれないと持ちかけたのではないか。迷いとともに原著の情報の多くは無慈悲にもカットされ、Letterになるのであった。

最近では”research letter”というページを提供しているジャーナルもあり、”research letter”のページでは、語数が少ないだけで、原著と同様のピアレビューをする事が謳われているジャーナルが少なくない。

Letterを書くということ

Letter to the Editorを成功に導くのは、努力というよりはインスピレーションです。雑誌の記事を読んでいて手紙を書きたいという衝動にかられる事でしょう。たとえば、「私はこの話題について何かを知っている」とか「私が共有したい意見を持っています。」とか。もちろん、上で述べたとおり、一部のLetterは出版された記事に対してコメントするものではありません。

  • Letter to the Editorは、論説と雑誌のレビューを短く組み合わせた物。
  • 論点は一つに絞るように。2つ以上のアイデアを一つの短い手紙に詰め込もうとしない。
  • 書く際には、ほとんどの雑誌が求める厳しい語数の制限内に収まるように、一つ一つの単語を慎重に選択する必要がある。
  • 直観的な衝動に従って書き始めたとしても、出版される記事としてacceptされるには、職人のように細心の注意を払って、Letter をしたためなければならない。

編集者への手紙のほとんどは、出版された記事に対するコメントです。それらの例では、次のような一般的な構造があります。

  • Letterを書く論文に狙いを定めます。最初の文章では、あなたのコメントの対象となる論文を引用する。これは「参考文献1になる。
  • あなたがLetter to the Editorを書いている理由を述べる。あなたの同意、意見の不一致、懸念、またはその他の理由を書く。
  • あなたの記載した内容に対する、根拠を述べる。根拠は、文献である場合や個人的な経験である場合がある。もちろん、学術論文に基づく証拠がベターです。
  • 要約を述べる。上記をすべて結びつけることで結論してください。
  • 文献を引用してください。多くの場合、Letter to the Editorには参考文献の引用がいくつかありますが、それほど多くはありません。

執筆を開始する前に、まず各紙のinstructions to authorsを読みます。通常instructionにはLetter to the Editorを投稿する際に満たすべき要件が記載されています。例えば、米国医師会雑誌(JAMA)では、「最近のJAMAの記事を議論するLetter to the Editorは、記事の発表から4週間以内に投稿すること、文章は400語以内で、参考文献は5報を超えてはならないとあります。New Engl J Medでは3週間以内。

ケース・シリーズや症例報告を含むオリジナルの研究を報告する研究論文もまた歓迎されています。その際には、文章は600語以内で、参考文献は6報を超えてはならず、表または図を1点まで含めることができます。

最近では多くのジャーナルで電子的に投稿することを求めています。

Letter to the Editorは、レビュー論文と同じように提出する必要があります。つまり、タイトルで始める必要があり、レターヘッドのない、普通の白紙に、二重の間隔で原稿を作成する必要があります。Letter to the Editorの原稿は、あなたが単に編集者宛に連絡しているのではないことを示すために、カバーレターと共に送付する事を求めるジャーナルもあります。

あなたはその話題について、何かを述べるだけの背景があることを示すような属性について述べる必要があります。また、潜在的な利益相反についても明らかにする必要があります。

最後に:手紙で議論する記事の著者と個人的に知り合っている場合は、書くべきではないかもしれません。あなたが研究を賞賛するなら、友情があることであなたのLetterは信用を損なうかもしれません。もっと悪いことは、研究を批判すると、あなたのコメントは個人的な攻撃として解釈される可能性があります。

Reference
Journal of the American Medical Association. Instructions for Authors. Available at: http://jama.ama-assn.org/inora_current/dtl.

/谷本先生から戴いたコメント/

臨床試験に関する書簡では、実際に臨床応用する場合の限界に着目し議論を進めると、採択の可能性を高めることができるでしょう。例えば、臨床試験の多くは合併症のない若年者が選択される場合がほとんどですが、実臨床では高齢者や臓器障害を有する患者に多く遭遇します。そのため、臨床試験から得られた知見をそのままの形で用いると問題が生じ得ます。編集者、さらには読者の内在的論理を的確に捉えた上で、彼らにとって、ひいては患者にとって有益な議論を構築して行くことが推奨されます。

/* 参考資料1 */

/* 参考資料2 */

 

self-controlled case series (SCCS)

はじめに

ここの所注力してきた仕事が一段落して、この週末は良い具合に一息つけます。

さかのぼること数か月、今後使うかもしれない、自分にとって新しい手法を試しておこうと、 Sequence Symmetry Analysis (SSA)をやってみたんだけど、これがイマイチ。何がイマイチって、製薬工業協会のホームページにSASのプログラムが公開されていて、それを見ながらやっているんだけど細かい数字が合わない。結果はだいたい近いところまでは行くんだけど、何か織り込むべきアイディアが足りないのか。ちなみに、作成にかかわったタスクフォースの方々の名誉のためにもう少し書いておきますと、この公開されているプログラムがおかしいというのではなく、まず、他人の書いたプログラムから、何がなされているのかというのを読み解くのはとても難しい作業で、このプログラムを参考にして、何がされているのかを読み取って、そのうえで自分にとってわかりやすいように書き換えるので、おかしなことが起きているのです。おそらくNull effect sequence ratio, NSRの計算のところがキモなのではないかと思いつつ、しばらくこちらは放置して頭を冷やすことにしていました。。

Self-controlled case series (SCCS)

SCCSとは?

同じself-controlledデザインのSCCSを試してみます。原理はこのスライド2ページ目。当時PMDAで東大epistatの竹内 由則さんが学会発表したスライドからです。

 

データ

データが公開されているので、手法を試すのにちょうどよいということで、試してみるのは、この文献Whitaker HJ, Farrington CP and Musonda P. Tutorial in Biostatistics: The self-controlled case series method. Statistics in Medicine 2006, 25(10): 1768-1797.に出てくるMMRワクチン後の髄膜炎。Table 2にOxford dataとして提示されています。

indiv eventday start end exday
1 398 365 730 458
2 413 365 730 392
3 449 365 730 429
4 455 365 730 433
5 472 365 730 432
6 474 365 730 395
7 485 365 730 470
8 524 365 730 496
9 700 365 730 428
10 399 365 730 716

データは10例ですべて。観察したのは、全員生後366日から730日。データのカラムstart, endは観察期間の開始を生後の日数で示しています。 exdayがワクチン接種の日、eventdayが髄膜炎と診断された日、で、これも生後の日数で示しています。
元論文では、at risk 期間をmumps virusのreplicationにかかる期間に基づいて、shotから15 – 35日後と設定しました。(元文献のTable 2では、ワクチン接種日は「pre-riskから14を引いた日」になります。ワクチン接種から14日目までがpre-risk, 15日目からがat-riskという考え方だと思います)ダウンロードしたデータにはワクチン接種日がexdayとして入力されていますので次のようにpre-risk(ex1), risk end (ex2)を計算します。設定したat riskの期間によってはスクリプトを触るべき個所がココということになります。

ex1 <- dat$exday + 14
ex2 <- dat$exday + 35

観察期間中のすべての日を、at riskの期間かどうか正確に分類したいので、ワクチン接種が331 – 715日のワクチン接種歴を要求した(原文)ということです。case #10は、716日にワクチンを摂取していますが、潜伏期間が観察期間終了後まで継続しますので、結果として観察期間中にat riskの期間がありません。

データをグラフィカルに提示している図があったので、引用。灰色の期間がat riskの期間。そして、547で線が引いてあるのは、ここで年齢層を分けて調整因子として使用しているので、それを示すつもりで線を入れたのでしょう。(例示として示した図の中には、年齢層をまたぐリスク期間を有している症例が出てこなかったので、何を説明したくて547日で線を入れたのかわかりにくくなっていますが。)366 – 547 を1層、548 – 730を2層にしています。観察期間中にイベントが発生したら、それ以降は観察期間にしないというような操作を通常行いますが、この集計では、そうではありません。全体の観察期間を集計して、イベントがどの期間に発生したかというような思想で集計するようです。

年齢層をプログラムしているのはここです。

age <- c(547)

#age groups
agegr <- cut(cutp, breaks = c(min(dat$start), age, max(dat$end)), labels = FALSE)
agegr <- as.factor(agegr)

 

 

論文の結果

論文の結果が次の通りで、

自分でも計算

自分で実行した結果が次。めでたく、結果が一致していました。めでたしめでたし。

おわりに

実行したRのスクリプトがこちら。実行に当たっては私の環境に合うようにOpen Universityのホームページのスクリプトを一部改編しました。実行結果が論文で提示されていたものと一致するので、悪くはないだろうと思います。これでまた、新たな手法を用いたいろいろな評価ができる道筋が付きました。(つづく

‘Rcpp’ という名前のパッケージはありません

RでインストールしたはずのRcppパッケージが認識されないという悩ましい状況

> library(Rcpp)
library(Rcpp) でエラー: ‘Rcpp’ という名前のパッケージはあり

インストールを3回試してみて、ダメでした。ダメだった時のログですが、有用なエラーメッセージはありません。コンソールを見ている限り何がダメなのかわかりません。

install.packages(‘Rcpp’)
パッケージを ‘C:/Users/Oshima/Documents/R/win-library/3.3’ 中にインストールします
(‘lib’ が指定されていないため)
— このセッションで使うために、CRAN のミラーサイトを選んでください —
URL ‘https://cloud.r-project.org/bin/windows/contrib/3.3/Rcpp_0.12.15.zip’ を試しています
Content type ‘application/zip’ length 4357370 bytes (4.2 MB)
downloaded 4.2 MB

パッケージ ‘Rcpp’ は無事に展開され、MD5 サムもチェックされました

ダウンロードされたパッケージは、以下にあります
C:\______\Local\Temp\RtmpUfqmSC\downloaded_packages

しばらくやった後、これは、先人も経験があるはずと調べたところ、それらしい記事に当たりました。リンク先の柴田啓文先生、ありがとうございます。

セキュリティソフトを10分間無効にしてインストールすると、わたしも成功しました。

 

Armenian Dance part1

アルメニアンダンス パート1

楽曲の元になったと思われるKomitas (Gomidas)の曲集を見つけたので、スクリーンショットをまとめてみました。
<http://ks.imslp.info/files/imglnks/usimg/d/de/IMSLP486251-PMLP640415-1._Solo_songs_(1960).pdf>
<http://hz.imslp.info/files/imglnks/usimg/0/0f/IMSLP290571-PMLP471483-Komitas-Clarinet_-part.pdf>

アルメニア共和国大使館

先週職場近くのアルメニア共和国🇦🇲大使館に行った!と言う話を職場でしていたら、近くなら行きたいと言う同僚たちが出てきたので、再び訪問しました。
今回は対応する係の人が少し説明してくださって、意外なことに(失礼)街には地下鉄がある事、国境線が未確定な部分が多い事、アララト山は隣国のトルコ領である事などなどお話しくださいました。 パスポートと称すスタンプ帳は前回訪問時にスタンプを押してもらったので、今回は30年以上前に演奏した、この曲のスコアを持って行って、ペッタン!しました。

iPodから送信

Medical Virtualist

Medical Virutualistという専門医

医療仮想主義者、なかなか面白い言葉です。

病院に行ったら、「変なホテル」みたいにロボットが受け付けして、診察室にも医者型ロボットがいて、ルーチンでさばけるような特に問題のなさそうな奴は本当の医者の診察抜きで投薬するとか。あるいは、そこまでの機能だと、街角の自動販売機型の病院でスクリーニングして必要なら自動販売機で本当の施設を予約するとか…あ、回転ずしのペッパー君みたいだ