【发布时间】:2019-07-01 05:27:46
【问题描述】:
我希望在 Julia 中进行线性回归,但出现错误: DimensionMismatch("X 列的列长 3000,与 Y 列的列长 1000 不兼容")
julia> x=rand(1000,3);
julia> x[:,1]=x[:,1] .+ 1;
julia> y = rand(1000,1) .+ 3;
julia> size(x)
(1000, 3)
julia> size(y)
(1000, 1)
julia> ols = lm(@formula(Y ~ X), DataFrame(X = x, Y = y))
ERROR: DimensionMismatch("column length 3000 for column(s) X, and is incompatible with column length 1000 for column(s) Y")
Stacktrace:
[1] (::getfield(DataFrames, Symbol("##DataFrame#83#86")))(::Bool, ::Type, ::Array{Any,1}, ::DataFrames.Index) at /Users/henry/.julia/packages/DataFrames/CZrca/src/dataframe/dataframe.jl:118
[2] Type at ./none:0 [inlined]
[3] #DataFrame#94(::Base.Iterators.Pairs{Symbol,Array{Float64,2},Tuple{Symbol,Symbol},NamedTuple{(:X, :Y),Tuple{Array{Float64,2},Array{Float64,2}}}}, ::Type) at /Users/henry/.julia/packages/DataFrames/CZrca/src/dataframe/dataframe.jl:174
[4] (::getfield(Core, Symbol("#kw#Type")))(::NamedTuple{(:X, :Y),Tuple{Array{Float64,2},Array{Float64,2}}}, ::Type{DataFrame}) at ./none:0
[5] top-level scope at none:0
有人可以帮忙吗?
【问题讨论】:
-
您需要使
x和y的大小相同。所以它们的大小应该是(1000, 3)或(1000,1) -
@philoez98 它们的尺寸相同:我显示上面的尺寸。
-
他们不是,(1000,3) 不等于 (1000,1),这就是你得到错误的原因。