私は学習の練習としてJuliaでOLS回帰を実装しようとしています。私が望む機能は、数式を引数として除外することです(例: 'formula = Y〜x1 + x2'、Y、x1、およびx2はDataFrameの列です)。ここにはexisting exampleがあります。Julia関数の引数として式を取る
式/式を正しいDataFrame列にマップするにはどうすればよいですか?
私は学習の練習としてJuliaでOLS回帰を実装しようとしています。私が望む機能は、数式を引数として除外することです(例: 'formula = Y〜x1 + x2'、Y、x1、およびx2はDataFrameの列です)。ここにはexisting exampleがあります。Julia関数の引数として式を取る
式/式を正しいDataFrame列にマップするにはどうすればよいですか?
Julia統計パッケージの数式は、マクロとして実装されています。 ~
シンボルにマクロが定義されています。つまり、式はJuliaコンパイラによって解析されます。コンパイラによって解析されると、それらはFormula
と呼ばれる複合型のrhs
フィールドとlhs
フィールドとして格納されます。
比較的単純で、実装の詳細は、ここでDataFrames.jl
ソースコードに見ることができる:https://github.com/JuliaStats/DataFrames.jl/blob/725a22602b8b3f6413e35ebdd707b69c4ed7b659/src/statsmodels/formula.jl
入力として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
ここでは、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
あなたは、もう少し具体的にかつにいくつかのコードを投稿することができればそれが良いでしょうあなたが実装しようとしたことを示してください。 http://stackoverflow.com/help/how-to-ask –
を参照してください。数式を使用してモデル行列を構築する方法については、DataFramesのドキュメントを参照してください(http://juliastats.github.io/DataFrames.jl/stable/man /公式/)。それを超えて、あなたが試した具体的なコード例や、どこで止まっているのかを具体的に説明する必要があります。 –