#==========
Julia の修行をするときに,いろいろなプログラムを書き換えるのは有効な方法だ。
以下のプログラムを Julia に翻訳してみる。
二群の平均値の差の検定
http://aoki2.si.gunma-u.ac.jp/R/my-t-test.html
ファイル名: myttest.jl
関数名: myttest(x, y; varequal = false)
myttest(nx, mx, ux, ny, my, uy; varequal = false)
翻訳するときに書いたメモ
==========#
using Statistics, Rmath, Printf
function myttest(x, y; varequal = false)
myttest(length(x), mean(x), var(x), length(y), mean(y), var(y); varequal)
end
function myttest(nx, mx, ux, ny, my, uy; varequal = false)
if varequal
df = nx + ny - 2
v = ((nx - 1) * ux + (ny - 1) * uy) / df
tstat = abs(mx - my) / sqrt(v * (1 / nx + 1 / ny))
else
tstat = abs(mx - my) / sqrt(ux / nx + uy / ny)
df = (ux / nx + uy / ny) ^ 2 / ((ux / nx) ^ 2 / (nx - 1) + (uy / ny) ^ 2 / (ny - 1))
end
pvalue = 2pt(tstat, df, false)
@printf("t = %.5f, df = %.5f, p value = %.5f\n", tstat, df, pvalue)
end
x = [44, 50, 52, 53, 49, 53, 47, 44, 38, 62];
y = [60, 55, 49, 58, 72, 69, 61, 63, 61, 55, 59, 63];
myttest(x, y, varequal=true) # t = 4.13039, df = 20.00000, p value = 0.00052
myttest(x, y) # t = 4.10725, df = 18.82177, p value = 0.00061
myttest(36, 82.6, 15.3, 43, 84.5, 16.2, varequal=true) # t = 2.11652, df = 77.00000, p value = 0.03753
myttest(36, 82.6, 15.3, 43, 84.5, 16.2) # t = 2.12195, df = 75.26729, p value = 0.03713