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

回答

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