2022年11月29日火曜日

Rで2要因のグラフをプロットする方法

  2要因のデータからエクセルにて標準偏差や標準誤差を加えた折れ線グラフを作成したとき、どうも2要因のデータ同士が重なって見えずらくなる現象が起きてしまっていました。










 エクセルの手法で改善できるかもしれませんが、Rで簡単にプロットできることがわかりました。










 下記の表のようなデータ(でたらめに作られたもの)を使うとします。










 このデータファイル名をinfecとし、csvファイルに保存します。

















 実際のRで作成してみます。











dat <- read.csv("infec.csv") #データ読み込み








#プロットと平均値や標準偏差を求めるためこの2つを読み込む 
 なければinstall.packagesで対応

library(ggplot2)
library(dplyr)
library(cowplot)
library( Hmisc )










pd = position_dodge( width = 0.15 )

ggplot( infec, aes( x = prepos, y = infection, color = intervention, group = intervention ) ) +

  stat_summary( fun.y = "mean", geom = "line" )+

  stat_summary( fun.y = "mean", geom = "line", size = 1.0, position = pd ) +

  stat_summary( fun.data = mean_cl_normal, geom = "errorbar",

                alpha = 0.9, size = 1.0, width = 0.2, position = pd ) + 

  stat_summary( fun.y = "mean", geom = "point", size = 3.5, position = pd )+

  scale_y_continuous( limits = c( 20, 70 ), breaks =seq(20,70,5), expand = c( 0, 0 ) ) +

  theme_cowplot( 15 ) +

  scale_colour_manual( values = c( "#5B84B1FF", "#FC766AFF" ) ) +

  xlab( "Differences in infection status by town" ) +

  ylab( "Infection" )+ 

  scale_x_discrete(limit=c('before', 'after'))






 グラフの出来上がりです。





 このように、2要因のデータ間で隙間があるので、標準偏差が描かれてもはっきり違いが判ります。











 現時点で、素人の私にとってこれが限界ですが、もう少しグラフの調整ができるように引き続き調べていきたいと思います。


2022年11月22日火曜日

Rを使ってROC曲線を求める方法

 



 ROC曲線を求めるとき、普段使用しているHADには備わっていないため、spssを使用していました。












 spssが嫌いなわけではありませんが、高額なこと、使える場所が限られてしまうことから、やや抵抗感がありました。














 そこで今回、Rを使ったROC曲線を求める方法を探していたところ、統計ERさんのブログでとてもわかりやすく説明されているのを発見しました。















 ただし、この通りに進めてみましたが、dat機能でvariablesが上手く分けられませんでした。もちろん、私の知識の問題がありますが、別の方法で解決できましたので、紹介させて頂きます。現在使用しているRは、「version 4.2.2」です。











 「Book1」のcvsファイルをデータとして使用しています。このデータは、BellCurveさんからダウンロートできます。BellCurveさんのファイル名は「ROC-curve-sample-data」です。







このデータのHeadingには、

検査項目:testA 

疾患の有無:disease (疾患無しを0、疾患有りを1)

と適当に英語で記載しました。









 現在のRversion 4.2.2機能では、日本語で記載すると上手く読み込めなくなる?ためです。






まず、パッケージをインストールします。

install.packages("Epi") 


library(Epi)


dat = read.csv("Book1.csv", na.strings="") →ここが統計ERさんと異なるところ

統計ERさんの場合→dat <- read.table("ROC-curve-sample-data.txt")


str(dat)



ROC(test=dat$testA, stat=dat$disease, plot="ROC")  #testAが検査の点数で、diseaseが真の分類



ROC(test=dat$testA, stat=dat$disease, plot="sp")



 すると、下記のような図がプロットされます。














 BellCurveさんと同じ結果が得られてますね。



















 このEpi パッケージの ROC() 関数の魅力は、AUC面積の算出はもちろんのこと、カットオフ値まで同時に判定してくれるところです。
































 spssの場合、Youden Indexなどを求めないと、明確なカットオフ値を得ることができません。そして統計、Rの素人である私にも使いやすい。
















 
 その他Rで用いる便利な方法があるか、今後も探していきたいと思います。


※Rのパッケージを論文に引用する必要がある場合、




今回のEpiを用いたとき、




citation("Epi")関数を使います。すると、下記の通り表示されます。

To cite Epi in publications use:

  Bendix Carstensen, Martyn Plummer, Esa Laara, Michael Hills (2022). Epi: A Package for Statistical Analysis in Epidemiology. R
  package version 2.47. URL https://CRAN.R-project.org/package=Epi

If you use Lexis objects/diagrams, please also cite:

  Martyn Plummer, Bendix Carstensen (2011). Lexis: An R Class for Epidemiological Studies with Long-Term Follow-Up. Journal of
  Statistical Software, 38(5), 1-12. URL https://www.jstatsoft.org/v38/i05/.

For use of Lexis objects in multi-state models, please also cite:

  Bendix Carstensen, Martyn Plummer (2011). Using Lexis Objects for Multi-State Models in R. Journal of Statistical Software,
  38(6), 1-18. URL https://www.jstatsoft.org/v38/i06/.

To see these entries in BibTeX format, use 'print(<citation>, bibtex=TRUE)', 'toBibtex(.)', or set
'options(citation.bibtex.max=999)'.