我試圖在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 /公式/)。除此之外,您需要提供更多您嘗試過的示例代碼,特別是您遇到困難的地方。 –