Yoshi Nishikawa Blog

医学となにかのインタラクティブ

Epidemiology and the Delivery of Health Care Services: Methods and Applications

ざっと読んだ。

PART1
1. An Epidemiologic Framework for the Delivery of Health Care Services
2. Measurement Issues in the Use of Epidemiologic Data
3. Descriptive Epidemiological Methods
4. Epidemiological Study Designs for Evaluating Health Services, Programs, and Systems
5. Screening and Surveillance for Promoting Population Health
6. Strategic Planning and Its Epidemiological Basis

PART2
7. The Role of Managerial Epidemiology in Infection Prevention and Control
8. Health Risks from the Environment: Challenges to Health Service Delivery
9. Delivering Health Care with Quality: Epidemiological Considerations
10. Advancing Patient Safety Through the Practice of Managerial Epidemiology

PART3
11. Epidemiology and the Public Policy Process
12. Ethics and Managerial Epidemiology Practice

前半は疫学の基礎的な話。読みたかったのは後半、医療の質評価の話。9章、10章あたり。9章のイントロ、拙訳を載せておく。

患者をケアするプロセスを評価するという考え方は、1968年にDonabedianによって提唱された「Quality of Care」に遡る。しかし、2001年の報告書「Crossing the Quality Chasm」で漸く国民の注目を集めた。それより10年ほど早く、組織戦略としての品質管理は関心を呼んだ(Counteら、1995、1992; Glandonら、1993)。(中略)医療へのアクセスは、避けることのできた入院など、他の疫学的測定項目とともに、「質の向上と健康寿命の延長」(USDHHS, 2000)という目標への進捗状況を測定するための指標の1つである。医療の提供における品質の追求は、民間・公共にかかわらず、品質管理という目標は、人口の健康を改善することを求める点で疫学の目標と平行している。この章では、品質を評価し、改善の機会を特定し、変化が組織の業績と健康成果に及ぼす影響を調べるための疫学的概念について説明する。

ggplot2でグラフ作成 (3)

ggplot2

2016年に出版されたggplot2に関するHadley Wickhamによる著書。その名もggplot2、の続き。この本、最後まで読み解いて分かるが、本当におすすめ。データを扱うすべての人が読んだら良いと思う。

コンテンツ

大きく分けて3部で構成され、全12章にわかれている。最後の第三部は、解析のためのノウハウ。こういうものは、実データを前にしながら学んでいくのが良いと思う。大項目だけ列挙する。

Part3 データ解析
9 データ解析
10 データ変換
11 可視化のためのモデリング
12 プログラミング

途中詳しく取り扱わなかった重要箇所もあるので、補足するかも知れない。

2016年に発売の原著。お世話になりました。

1つ古い版の日本語の訳本はこちら。

MCMC

はじめての統計データ分析

「はじめての統計データ分析」 に関して覚書。
1章の記事はこちら。

2章のハイライト

1) MCMC(Markov chain Monte Carlo method)により事後分布のデータを用い、
2) MCMCには、Metropolis-Hasting method, Gibbs sampling methods, Hamiltonian Monte Carlo methodなどが提案されています。
3) MCMCの欠点は、事後確率が定まらないことです。小数点xx桁まで行くと、施行毎に異なる結果を生じます。

この章をマスターすれば、あとは同じ概念の繰り返しという印象。

survival analysisをRのggplot2で行う

ggplot2でsurvival analysisのプロットをしたいときは、 GGally パッケージに含まれる、ggsurv関数がある。

https://cran.r-project.org/web/packages/GGally/GGally.pdf

自分でggsurv関数を入れ込みたい場合は以下を参照。

www.r-statistics.com

上記から転載。

ggsurv <- function(s, CI = 'def', plot.cens = T, surv.col = 'gg.def',
                   cens.col = 'red', lty.est = 1, lty.ci = 2,
                   cens.shape = 3, back.white = F, xlab = 'Time',
                   ylab = 'Survival', main = ''){
 
  library(ggplot2)
  strata <- ifelse(is.null(s$strata) ==T, 1, length(s$strata))
  stopifnot(length(surv.col) == 1 | length(surv.col) == strata)
  stopifnot(length(lty.est) == 1 | length(lty.est) == strata)
 
  ggsurv.s <- function(s, CI = 'def', plot.cens = T, surv.col = 'gg.def',
                       cens.col = 'red', lty.est = 1, lty.ci = 2,
                       cens.shape = 3, back.white = F, xlab = 'Time',
                       ylab = 'Survival', main = ''){
 
    dat <- data.frame(time = c(0, s$time),
                      surv = c(1, s$surv),
                      up = c(1, s$upper),
                      low = c(1, s$lower),
                      cens = c(0, s$n.censor))
    dat.cens <- subset(dat, cens != 0)
 
    col <- ifelse(surv.col == 'gg.def', 'black', surv.col)
 
    pl <- ggplot(dat, aes(x = time, y = surv)) +
      xlab(xlab) + ylab(ylab) + ggtitle(main) +
      geom_step(col = col, lty = lty.est)
 
    pl <- if(CI == T | CI == 'def') {
      pl + geom_step(aes(y = up), color = col, lty = lty.ci) +
        geom_step(aes(y = low), color = col, lty = lty.ci)
    } else (pl)
 
    pl <- if(plot.cens == T & length(dat.cens) > 0){
      pl + geom_point(data = dat.cens, aes(y = surv), shape = cens.shape,
                       col = cens.col)
    } else if (plot.cens == T & length(dat.cens) == 0){
      stop ('There are no censored observations')
    } else(pl)
 
    pl <- if(back.white == T) {pl + theme_bw()
    } else (pl)
    pl
  }
 
  ggsurv.m <- function(s, CI = 'def', plot.cens = T, surv.col = 'gg.def',
                       cens.col = 'red', lty.est = 1, lty.ci = 2,
                       cens.shape = 3, back.white = F, xlab = 'Time',
                       ylab = 'Survival', main = '') {
    n <- s$strata
 
    groups <- factor(unlist(strsplit(names
                                     (s$strata), '='))[seq(2, 2*strata, by = 2)])
    gr.name <-  unlist(strsplit(names(s$strata), '='))[1]
    gr.df <- vector('list', strata)
    ind <- vector('list', strata)
    n.ind <- c(0,n); n.ind <- cumsum(n.ind)
    for(i in 1:strata) ind[[i]] <- (n.ind[i]+1):n.ind[i+1]
 
    for(i in 1:strata){
      gr.df[[i]] <- data.frame(
        time = c(0, s$time[ ind[[i]] ]),
        surv = c(1, s$surv[ ind[[i]] ]),
        up = c(1, s$upper[ ind[[i]] ]),
        low = c(1, s$lower[ ind[[i]] ]),
        cens = c(0, s$n.censor[ ind[[i]] ]),
        group = rep(groups[i], n[i] + 1))
    }
 
    dat <- do.call(rbind, gr.df)
    dat.cens <- subset(dat, cens != 0)
 
    pl <- ggplot(dat, aes(x = time, y = surv, group = group)) +
      xlab(xlab) + ylab(ylab) + ggtitle(main) +
      geom_step(aes(col = group, lty = group))
 
    col <- if(length(surv.col == 1)){
      scale_colour_manual(name = gr.name, values = rep(surv.col, strata))
    } else{
      scale_colour_manual(name = gr.name, values = surv.col)
    }
 
    pl <- if(surv.col[1] != 'gg.def'){
      pl + col
    } else {pl + scale_colour_discrete(name = gr.name)}
 
    line <- if(length(lty.est) == 1){
      scale_linetype_manual(name = gr.name, values = rep(lty.est, strata))
    } else {scale_linetype_manual(name = gr.name, values = lty.est)}
 
    pl <- pl + line
 
    pl <- if(CI == T) {
      if(length(surv.col) > 1 && length(lty.est) > 1){
        stop('Either surv.col or lty.est should be of length 1 in order
             to plot 95% CI with multiple strata')
      }else if((length(surv.col) > 1 | surv.col == 'gg.def')[1]){
        pl + geom_step(aes(y = up, color = group), lty = lty.ci) +
          geom_step(aes(y = low, color = group), lty = lty.ci)
      } else{pl +  geom_step(aes(y = up, lty = group), col = surv.col) +
               geom_step(aes(y = low,lty = group), col = surv.col)}
    } else {pl}
 
 
    pl <- if(plot.cens == T & length(dat.cens) > 0){
      pl + geom_point(data = dat.cens, aes(y = surv), shape = cens.shape,
                      col = cens.col)
    } else if (plot.cens == T & length(dat.cens) == 0){
      stop ('There are no censored observations')
    } else(pl)
 
    pl <- if(back.white == T) {pl + theme_bw()
    } else (pl)
    pl
  }
  pl <- if(strata == 1) {ggsurv.s(s, CI , plot.cens, surv.col ,
                                  cens.col, lty.est, lty.ci,
                                  cens.shape, back.white, xlab,
                                  ylab, main)
  } else {ggsurv.m(s, CI, plot.cens, surv.col ,
                   cens.col, lty.est, lty.ci,
                   cens.shape, back.white, xlab,
                   ylab, main)}
  pl
}

Pubmedで文献検索

文献検索には型がある

ネット上で色々と教材が有るので、貼り付けておきます。

20170424_PubMedの使い方@洛和会音羽病院

http://www.lib.m.u-tokyo.ac.jp/manual/pubmedmanual.pdf

http://www.med.lib.keio.ac.jp/pdf/ug/ug_pubmed.pdf

http://www.kulib.kyoto-u.ac.jp/modules/refguide/docs/RefGuide_PubMed_basic.pdf

  • The SPELL

EBM資料集−最もシンプルで分かりやすいPubMed 検索法 [The SPELL]

  • 東大 小出先生

文献検索とCritical Reading

  • editage

若手研究者のためのシステマティックレビューの書き方指南 | Editage Insights

Pubmedはいろいろと気を利かしてくれるのですが、その気配りの仕組を知り、MeSH termを用い、型通りに検索するのが大切です。
(MeSH termとは、Medical Subject Headingsの略)

胃のことをstomachという論文もあれば,gastricという論文もあるでしょう.癌についても同様で,cancerという論文もあるでしょうし,adenocarcinomaという論文もあります.これでは,思いついた単語だけでなく似たような単語を全部入れてみないと肝心な論文が漏れてしまう可能性があります.また逆に,この研究で肺癌の患者は除いた,という記述があるだけで検索されてしまいます.こうした不都合をなくすため,胃癌なら胃癌という語句は何か統一したキーワードを登録して検索を容易にしようという工夫がなされています.このキーワードがMeSH termであり,MeSH termを用いることで効率よく検索ができるのです.実際には胃癌は,Stomach neoplasmsというMeSH termで登録されています.(The SPELLより引用)

調べた方法を検索式として提示できるようにし、網羅的で再現性のある検索を心がけましょう。

すべては再現性です!

グラフ理論

読んだ。

1章 グラフの基礎
2章 最小全域木
3章 最短経路問題
4章 オイラー回路とハミルトン閉路
5章 グラフの彩色
6章 最大流問題
7章 マッチング

グラフ理論の入門編としておすすめできる。

私が入門編の書物に求める要素

1. 読みやすい

具体例とともに簡潔に示されている。

2. 用語が明記されている

次の段階も学ぶことを考えると、英語でも併記されていることがベスト。用語がわかれば検索できる。

3. 何となく見渡せる

体系的、というと怒られるかもしれないが、簡潔に、かつ、その分野の雰囲気がわかるものがベスト。

本書は三拍子揃っていた。