2016-10-05 17 views
2

私は学習の練習としてJuliaでOLS回帰を実装しようとしています。私が望む機能は、数式を引数として除外することです(例: 'formula = Y〜x1 + x2'、Y、x1、およびx2はDataFrameの列です)。ここにはexisting exampleがあります。Julia関数の引数として式を取る

式/式を正しいDataFrame列にマップするにはどうすればよいですか?

+3

あなたは、もう少し具体的にかつにいくつかのコードを投稿することができればそれが良いでしょうあなたが実装しようとしたことを示してください。 http://stackoverflow.com/help/how-to-ask –

+0

を参照してください。数式を使用してモデル行列を構築する方法については、DataFramesのドキュメントを参照してください(http://juliastats.github.io/DataFrames.jl/stable/man /公式/)。それを超えて、あなたが試した具体的なコード例や、どこで止まっているのかを具体的に説明する必要があります。 –

答えて

2

Julia統計パッケージの数式は、マクロとして実装されています。 ~シンボルにマクロが定義されています。つまり、式はJuliaコンパイラによって解析されます。コンパイラによって解析されると、それらはFormulaと呼ばれる複合型のrhsフィールドとlhsフィールドとして格納されます。

比較的単純で、実装の詳細は、ここでDataFrames.jlソースコードに見ることができる:https://github.com/JuliaStats/DataFrames.jl/blob/725a22602b8b3f6413e35ebdd707b69c4ed7b659/src/statsmodels/formula.jl

1

入力としてanonymous functionを使用します。

julia > using DataFrames 
julia > f = (x,y) -> x[:A] .* y[:B] # Anonymous function 
julia > x = DataFrame(A = 6) 
julia > y = DataFrame(B = 7) 
julia > function OSL(x::DataFrame,y::DataFrame,f::Function);return f(x,y);end 
julia > OSL(x,y,f) 
1-element DataArrays.DataArray{Int64,1}: 
    42 
0

ここでは、ISLRのbostonデータセットを使用し、lstatのmedvを回帰する最小限の例を示します。 (PGをチェックISLRの111を使用すると、重みベクトルが正しいことを確認したい場合。)

julia> using DataFrames, RDatasets 
julia> df = dataset("MASS", "Boston") 
julia> fm = @formula(MedV ~ LStat) 

julia> mf = ModelFrame(fm, df) 
julia> X = ModelMatrix(mf).m 
julia> y = Array(df[:MedV]) 
julia> w = X \ y 

2-element Array{Float64,1}: 
34.5538 
-0.950049 

の詳細については:http://dataframesjl.readthedocs.io/en/latest/formulas.html

関連する問題