投稿

10月, 2016の投稿を表示しています

Julia で、回帰直線と相関係数を求める

Julia で、回帰直線と相関係数を求める方法は、以外と覚えにくいようです。 まず、StatsBase と GML ライブラリーをインストールしましょう。 Pkg.add("Statistcs") Pkg.add("GML") 「でーたぶれーむの名前」 という名前のデータフレームで、下記のX, Y には、それぞれ、関係を求めたい列名を入れます。 using Statistics using GLM #切片と傾き glm(@formula(Y ~ X), でーたぶれーむの名前, Normal(), IdentityLink()) #相関係数 cor(X,Y) R だと、相関係数も一緒に求めてくれますが、Julia は cor() で別に求める必要があるようです。

R で、英字数字混じりの単語の頭文字だけを大文字にする方法

R で 例えば、"january1st" のはじめの "J" だけ大文字にする方法です。 Microsoft の Excel に、Proper という関数がありますが、Proper(january1st) すなわち、この関数を使うと確かに "J" は大文字になりますが、なんと "January1St" となってしまいます。 R 使いの諸氏は、それなら、R でと考えるところでしょうが、toupper, tolower で、それぞれ、全部大文字、全部小文字には変換できます。ところが、はじめの1文字という場合は、library の呼び出しが必要になります。 library(Hmisc) capitalize("january1st") と、したら良いようです。 ところが、列名でこの関数が動かないことがあります。この場合、列名が strings として認識されていないことがありますので、as.character() で、strings に変換してから、 capitalize(as.character( データテーブルの1列目 )) などとしたら、動いてくれます。もしも、先の Microsoft Excel の proper などを通ってきて、既に "January1St" となっている場合は、"1"の後は、大文字に変換しないようです。 この場合は、一旦、tolower します。 library(Hmisc) capitalize(tolower("January1St")) capitalize(tolower(as.character( データテーブルの1列目 )))

Julia で正規化する方法

Wikipedia でいうところの ノルムが定義されたベクトル空間のベクトル v に対し、それにノルムの逆数 || v || -1 を掛けてノルムを1のベクトルにすることを、正規化という。 この正規化は、 normalize( ベクトル ) または、 qr( ベクトル ) これで良いでしょう。この2つ関数は、結果のあつかいに少しだけ違いがあります。 平均0と分散1にしたい時 この時は、手計算しましょう。たぶん、R でいうところの scale() は用意されていないようです。 手順は、 センタリング : それぞれの変量から全体の平均を引く。平均が0となる スケーリング : それぞれの変量を全体の標準偏差で割る。分散が1となる です。 すなわち ( ベクトル - mean( ベクトル ))/std( ベクトル ) これでなんとかなるでしょう。統計の勉強になりました。

Julia の集合3種の神器

集合の共通部分などを求める際の3種の神器 setdiff union intersect の例文です。 julia> setdiff(["a" "b" "d"],["a" "c" "d"]) 1-element Array{String,1}: "b" julia> union(["a" "b" "d"],["a" "c" "d"]) 4-element Array{String,1}: "a" "b" "d" "c" julia> intersect(["a" "b" "d"],["a" "c" "d"]) 2-element Array{String,1}: "a" "d" これを知っていれば、かなり戦えるはずです。