裏 RjpWiki

文字通り,RjpWiki の裏を行きます
R プログラム コンピュータ・サイエンス 統計学

Julia と R を行ったり来たり

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

Julia の REPL を起動

まずは,Mac のターミナルで

$ julia

として,Julia の REPL を起動する。

Rcall パッケージをインストール

(@v1.5) pkg> add RCall
   Updating registry at `~/.julia/registries/General`
######################################################################## 100.0%
  Resolving package versions...
  Installed WinReg ─ v0.3.1
  Installed RCall ── v0.13.10
Updating `~/.julia/environments/v1.5/Project.toml`
  [6f49c342] + RCall v0.13.10
Updating `~/.julia/environments/v1.5/Manifest.toml`
  [6f49c342] + RCall v0.13.10
  [1b915085] + WinReg v0.3.1
   Building RCall → `~/.julia/packages/RCall/eRsxl/deps/build.log`

RCall を読み込む

julia> using RCall
[ Info: Precompiling RCall [6f49c342-dc21-5d91-9882-a32aef131414]

R を使う

もうこれだけで R が使える。

R"Rのスクリプト" という形で入力すると R での実行結果が表示される。

Julia のフィッシャーの正確確率検定は 2 x 2 分割表しか使えないので,R の fisher.test() を使って分析してみる。

julia> R"fisher.test(matrix(c(12, 3, 2, 4, 3, 8), ncol=3, byrow=TRUE))"
RObject{VecSxp}

 Fisher's Exact Test for Count Data

data:  matrix(c(12, 3, 2, 4, 3, 8), ncol = 3, byrow = TRUE)
p-value = 0.02349
alternative hypothesis: two.sided

実行結果を Julia で取り出す

julia> obj = rcopy(R"fisher.test(matrix(c(12, 3, 2, 4, 3, 8), ncol=3, byrow=TRUE))")
OrderedCollections.OrderedDict{Symbol,Any} with 4 entries:
  :p_value     => 0.0234889
  :alternative => "two.sided"
  :method      => "Fisher's Exact Test for Count Data"
  :data_name   => "matrix(c(12, 3, 2, 4, 3, 8), ncol = 3, byrow = TRUE)"

のようにして,要素を指定すれば取り出せる。

julia> obj[:p_value]
0.023488871014407855

Julia の変数(データ)を R に渡す

$ で変数埋め込み。

julia> mat = [12 3 2; 4 3 8]
2×3 Array{Int64,2}:
 12  3  2
  4  3  8

julia> R"fisher.test($mat)"
RObject{VecSxp}

 Fisher's Exact Test for Count Data

data:  `#JL`$mat
p-value = 0.02349
alternative hypothesis: two.sided

'$' キーを押して R 環境へ

Julia のプロンプトで '$' キーを押すとプロンプトが 'R>' に代わり,R のプログラムが直接書ける。

R> t.test(c(2,1,3,2,5), c(3,2,1,2,4))

 Welch Two Sample t-test

data:  c(2, 1, 3, 2, 5) and c(3, 2, 1, 2, 4)
t = 0.2357, df = 7.4269, p-value = 0.82
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1.783304  2.183304
sample estimates:
mean of x mean of y 
      2.6       2.4 

Julia に戻る

'delete' キーを押せば Julia に戻る。

julia> 

コメント