裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Julia に翻訳--240 陽性反応適中率(ppv)の差の検定,陰性反応適中率(npv)の差の検定

2021年06月01日 | ブログラミング

#==========
Julia の修行をするときに,いろいろなプログラムを書き換えるのは有効な方法だ。
以下のプログラムを Julia に翻訳してみる。

陽性反応適中率の差の検定
http://aoki2.si.gunma-u.ac.jp/JavaScript/ppv.html

ファイル名: ppv.jl  関数名: ppv

翻訳するときに書いたメモ

==========#

using Rmath, Printf

function ppv(a, b, c, d, e, f, g, h)
  ppv(1, a, b, c, d, e, f, g, h)
  ppv(2, d, c, b, a, h, g, f, e)
end

function ppv(sw, a, b, c, d, e, f, g, h)
  name = ["ppv", "npv"]
  title = ["陽性反応適中率", "陰性反応適中率"]
  println("*****  $(title[sw])($(name[sw]))の差の検定  *****\n")
  if (sw == 1)
    @printf("%s1 = %g\n", name[sw], (a+b)/(a+b+e+f))
    @printf("%s2 = %g\n", name[sw], (a+c)/(a+c+e+g))
  else
    @printf("%s1 = %g\n", name[sw], (e+f)/(a+b+e+f))
    @printf("%s2 = %g\n", name[sw], (e+g)/(a+c+e+g))
  end
  mi = 2(a+e)+b+c+f+g
  zbar = (a+c+e+g)/mi
  dbar = (2a+b+c)/mi
  stat = (a * (1 - 2zbar) - b * zbar + c * (1 - zbar))^2 /
    ((1-dbar)^2 * (a * (1 - 2zbar)^2 + b*zbar^2 + c * (1 - zbar)^2) + dbar^2 *
     (e * (1 - 2zbar)^2 + f * zbar^2 + g * (1 - zbar)^2))
  p = pchisq(stat, 1, false)
  @printf("T%s = %g\n", name[sw], stat)
  @printf("P value = %.5f (%g)\n\n", p, p)
end

ppv(786, 183, 29, 25, 69, 176, 46, 151)

#==
*****  陽性反応適中率(ppv)の差の検定  *****

ppv1 = 0.798188
ppv2 = 0.876344
Tppv = 47.5813
P value = 0.00000 (5.2769e-12)

*****  陰性反応適中率(npv)の差の検定  *****

npv1 = 0.784861
npv2 = 0.611215
Tnpv = 39.5222
P value = 0.00000 (3.24349e-10)
==#

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ggplot2 よりは VegaLite | トップ | Julia で多項式回帰,Polynom... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事