裏 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

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

いま,たまたま

ggplot2 って,ちっとも簡単じゃないよ!

が,参照されたようだが,ggplot2 で描画される画像と,VegaLite の画像を比べてみた。

VegaLite は巨大なパッケージのようで,指定もよく分からない。

試行錯誤の結果,

グリッドを消すのは,axis={grid=false}

軸のタイトルは,title="Latitude"

図のタイトル,サブタイトル,文字の大きさは, title={text="...", subtitle = "...",  fontSize=xx}

というようなことはわかった。

using VegaLite, RDatasets
quakes = RDatasets.dataset("datasets", "quakes")
quakes |>
    @vlplot(
        mark={:point, filled=true},
        x={:Lat, scale={zero=false}, axis={grid=false}, title="Latitude"},
        y={:Long, scale={zero=false}, axis={grid=false}, title="Longitude"},
        color=:Stations,
        size=:Stations,
        width=600,
        height=600,
        title={
            text="Locations of Earthquakes off Fiji",
            subtitle = "The locations of 1000 seismic events of MB > 4.0",
            fontSize=20
        }
    )

ggplot2 での作図結果は

ggplot() + geom_point(data = quakes, aes(x = lat, y = long, colour = stations))

まあ,いろいろかいたけど,今になってみれば,

色分けが stations によっているわけだけど,どういうわけか,数値の低い方が濃い色になっている。

まあ,個人の意見の差なのかも知れないが,数値の大きい方が濃い色になるのが自然かな?

そのあと,いろいろ追加するとプログラムは長くなるけど,その割には出来上がりはパットしなかったんだよね。

ちなみに,R でも VegaLite 使えるみたいだけど,Python に寄っかかっているだけみたいだ。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村