朱莉娅线性回归

时间:2015-03-15 01:41:46

标签: julia

我试图在Julia中进行线性回归。 我有一个10列的数据框。前9列是预测变量 我将其称为X,最后一列是响应变量,我称之为Y

我键入了linreg(X, Y)但是我收到一条错误消息 linreg没有匹配DataFrame和DataArray Float的方法。

我想知道如何解决这个问题。 我在考虑将X转换为数据数组

我试过convert(X, Array)但是这也引发了一个错误: '转换没有方法匹配转换' 有没有人有任何建议

3 个答案:

答案 0 :(得分:14)

如果您已将数据放在DataFrame中,则应查看GLM.jl包。

具体来说,如果您是R用户,lm函数应该执行您想要的操作并且感觉非常熟悉。

如果您发布更多代码(可能是DataFrame商店XY中的哪些列),我们可以为您提供更多帮助。

答案 1 :(得分:3)

您只是使用convert错误。它的正确语法为convert(T, x):将x转换为T类型的值。

所以基本上你需要这样做:

linreg(convert(Array,X),convert(Array,Y))

它应该有用。

答案 2 :(得分:3)

  

更新:在对数组执行标量添加时,必须在Julia 1.0中使用dot运算符。即y = m*x .+ b

您也可以使用简单的线性代数进行线性回归。 这是一个例子:

# Linear Algebra style
# For single linear regresion y= mx .+ b
m = 3.3; b = 2; x = rand(100,1)
y = m * x .+ b
# add noise
yn= y + randn(size(y)) * 0.5

# regression
X = zeros(100,2); X[:,1] = x;  X[:,2] = 1.0
coeff_pred = X\yn

slope =  round(coeff_pred[1], 2)
intercept = round(coeff_pred[2], 2)

println("The real slope is $m, and the predicted slope is $slope")
println("The real intercept is $b, and the predicted slope is $intercept")