Skip to content

Commit 64a3823

Browse files
committed
replace ols(x,y) with x\y in highly computational methods such like lts, lms, and lta
1 parent 11bda22 commit 64a3823

4 files changed

Lines changed: 9 additions & 16 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# v0.11.2 (Upcoming Release)
22

33
- Optional eps and maxiter parameters in iterateCSteps() in LTS.
4-
4+
- Replace `ols(X[indices, :], y[indices])` with `X[...] \ y[...]` in highly computational ones such like LTS, LMS, and LTA.
55

66
# v0.11.1
77

src/lms.jl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ export lms
66

77
import ..Basis:
88
RegressionSetting, @extractRegressionSetting, designMatrix, responseVector, applyColumns
9-
import ..OrdinaryLeastSquares: ols, predict, residuals, coef
109

1110
import Distributions: sample
1211

@@ -77,8 +76,7 @@ function lms(X::AbstractMatrix{Float64}, y::AbstractVector{Float64}; iters = not
7776
try
7877
k = rand(kindices, 1)[1]
7978
sampledindices = sample(indices, k, replace = false)
80-
olsreg = ols(X[sampledindices, :], y[sampledindices])
81-
betas = coef(olsreg)
79+
betas = X[sampledindices, :] \ y[sampledindices]
8280
origres = y .- X * betas
8381
res = sort(origres .^ 2.0)
8482
m2 = res[h]

src/lta.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export lta
66

77
import ..Basis:
88
RegressionSetting, @extractRegressionSetting, designMatrix, responseVector, applyColumns
9-
import ..OrdinaryLeastSquares: ols, predict, residuals, coef
9+
1010

1111
import Combinatorics: combinations
1212
import Distributions: sample
@@ -90,7 +90,7 @@ function lta(X::AbstractMatrix{Float64}, y::AbstractVector{Float64}; exact = fal
9090

9191
function lta_cost(subsetindices::Array{Int,1})::Tuple{Float64,Vector{Float64}}
9292
try
93-
betas = coef(ols(X[subsetindices, :], y[subsetindices]))
93+
betas = X[subsetindices, :] \ y[subsetindices]
9494
res_abs = abs.(y .- X * betas)
9595
ordered_res = sort(res_abs)
9696
cost = sum(ordered_res[1:h])
@@ -102,7 +102,7 @@ function lta(X::AbstractMatrix{Float64}, y::AbstractVector{Float64}; exact = fal
102102

103103
L = length(psubsets)
104104
bestobjective = Inf64
105-
bestbetas = coef(ols(X, y))
105+
bestbetas = X \ y
106106
numberofitersunchanged = 0
107107
for i in 1:L
108108
objective, betas = lta_cost(psubsets[i])

src/lts.jl

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export lts
44
export iterateCSteps
55

66
import ..Basis: RegressionSetting, @extractRegressionSetting, designMatrix, responseVector
7-
import ..OrdinaryLeastSquares: ols, coef, residuals, predict
7+
88
import Distributions: sample, mean
99

1010
"""
@@ -49,8 +49,7 @@ function iterateCSteps(
4949
objective::Float64 = Inf64
5050
iter::Int = 0
5151
while iter < maxiter
52-
olsreg = ols(X[subsetindices, :], y[subsetindices])
53-
betas = coef(olsreg)
52+
betas = X[subsetindices, :] \ y[subsetindices]
5453
res = y - X * betas
5554
sortedresindices = sortperm(abs.(res))
5655
subsetindices = sortedresindices[1:h]
@@ -82,8 +81,7 @@ function iterateCSteps(
8281
initialBetas::AbstractVector{Float64},
8382
h::Int; eps::Float64 = 0.01, maxiter::Int = 10000
8483
)
85-
n, p = size(X)
86-
#res = [y[i] - sum(X[i, :] .* initialBetas) for i = 1:n]
84+
_, p = size(X)
8785
res = y - X * initialBetas
8886
sortedresindices = sortperm(abs.(res))
8987
subsetindices = sortedresindices[1:p]
@@ -174,10 +172,7 @@ function lts(X::AbstractMatrix{Float64}, y::AbstractVector{Float64}; iters=nothi
174172
end
175173
end
176174

177-
178-
ltsreg = ols(X[besthsubset, :], y[besthsubset])
179-
ltsbetas = coef(ltsreg)
180-
#ltsres = [y[i] - sum(X[i, :] .* ltsbetas) for i = 1:n]
175+
ltsbetas = X[besthsubset, :] \ y[besthsubset]
181176
ltsres = y - X * ltsbetas
182177
ltsS = sqrt(sum((ltsres .^ 2.0)[1:h]) / (h - p))
183178
ltsresmean = mean(ltsres[besthsubset])

0 commit comments

Comments
 (0)