Skip to content

Commit e289030

Browse files
committed
fix hadi92 and hadi94
1 parent bb6819f commit e289030

2 files changed

Lines changed: 26 additions & 26 deletions

File tree

src/hadi1992.jl

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -111,48 +111,48 @@ function hadi1992(multivariateData::AbstractMatrix{Float64}; alpha = 0.05)
111111
ordering_indices_mah1 = sortperm(mah1)
112112

113113
r = p + 1
114-
basic_subset_indices = []
115-
basic_subset = []
116-
sorted_mah1 = []
114+
basic_subset_indices = Int[]
115+
basic_subset = Int[]
116+
sorted_mah1 = Float64[]
117117

118-
Cb = zeros(Float64, p)
119-
Sb = zeros(Float64, p, p)
120-
newSb = zeros(Float64, p, p)
118+
Cb = Array{Float64}(undef, p)
119+
Sb = Matrix{Float64}(undef, p, p)
120+
newSb = Matrix{Float64}(undef, p, p)
121121

122-
msm3 = zeros(Float64, n, n)
123-
msm4 = zeros(Float64, n, n)
122+
msm3 = Matrix{Float64}(undef, n, n)
123+
msm4 = Matrix{Float64}(undef, n, n)
124124

125125
while r < n
126126
cnpr = 1 + (r / (n - p))^2.0
127127
basic_subset_indices = ordering_indices_mah1[1:r]
128128
basic_subset = multivariateData[basic_subset_indices, :]
129-
Cb .= applyColumns(mean, basic_subset)
130-
Sb .= cov(basic_subset)
129+
Cb = applyColumns(mean, basic_subset)
130+
Sb = cov(basic_subset)
131131

132132
r += 1
133133
cfactor = cnpr * sqrt(sort(mah1)[h]) / chi_50_quantile
134134
if det(cfactor * Sb) == 0
135-
@info "singular Sb case"
136-
newSb .= hadi1992_handle_singularity(cfactor * Sb)
135+
# singular Sb case
136+
newSb = hadi1992_handle_singularity(cfactor * Sb)
137137

138-
msm3 .= mahalanobisSquaredMatrix(multivariateData, meanvector = Cb, covmatrix = newSb,)
138+
msm3 = mahalanobisSquaredMatrix(multivariateData, meanvector = Cb, covmatrix = newSb,)
139139

140140
if isnothing(msm3)
141141
throw(ErrorException("Mahalanobis distances are not calculated"))
142142
end
143143

144-
mah1 .= diag(msm3)
144+
mah1 = diag(msm3)
145145

146146
ordering_indices_mah1 = sortperm(mah1)
147147
basic_subset_indices = ordering_indices_mah1[1:r]
148148
else
149-
msm4 .= mahalanobisSquaredMatrix(multivariateData, meanvector = Cb, covmatrix = (cfactor * Sb))
149+
msm4 = mahalanobisSquaredMatrix(multivariateData, meanvector = Cb, covmatrix = (cfactor * Sb))
150150

151151
if isnothing(msm4)
152152
throw(ErrorException("Mahalanobis distances are not calculated"))
153153
end
154154

155-
mah1 .= diag(msm4)
155+
mah1 = diag(msm4)
156156
ordering_indices_mah1 = sortperm(mah1)
157157
basic_subset_indices = ordering_indices_mah1[1:r]
158158
end

src/hadi1994.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,14 @@ function hadi1994(multivariateData::AbstractMatrix{Float64}; alpha = 0.05)
8686

8787
basic_subset_indices = Int[]
8888

89-
basic_subset = []
89+
basic_subset = Int[]
9090

91-
sorted_mah1 = []
91+
sorted_mah1 = Int[]
9292

93-
Cb = zeros(Float64, p)
94-
Sb = zeros(Float64, p, p)
95-
msm3 = zeros(Float64, n, n)
96-
sorted_mah1 = zeros(Float64, n)
93+
Cb = Float64[]
94+
Sb = Matrix{Float64}(undef, p, p)
95+
msm3 = Matrix{Float64}(undef, p, p)
96+
sorted_mah1 = Vector{Float64}(undef, n)
9797

9898
cfactor = 0
9999
isFullRank = false
@@ -105,8 +105,8 @@ function hadi1994(multivariateData::AbstractMatrix{Float64}; alpha = 0.05)
105105
while !isFullRank
106106
basic_subset_indices = ordering_indices_mah1[1:r]
107107
basic_subset = multivariateData[basic_subset_indices, :]
108-
Cb .= applyColumns(mean, basic_subset)
109-
Sb .= cov(basic_subset)
108+
Cb = applyColumns(mean, basic_subset)
109+
Sb = cov(basic_subset)
110110
cfactor = cnp * sqrt(sort(mah1)[h]) / chi_50_quantile
111111
r += 1
112112

@@ -117,7 +117,7 @@ function hadi1994(multivariateData::AbstractMatrix{Float64}; alpha = 0.05)
117117
end
118118
end
119119

120-
msm3 .= mahalanobisSquaredMatrix(
120+
msm3 = mahalanobisSquaredMatrix(
121121
multivariateData,
122122
meanvector = Cb,
123123
covmatrix = (cfactor * Sb),
@@ -132,7 +132,7 @@ function hadi1994(multivariateData::AbstractMatrix{Float64}; alpha = 0.05)
132132
ordering_indices_mah1 = sortperm(mah1)
133133
basic_subset_indices = ordering_indices_mah1[1:r]
134134

135-
sorted_mah1 .= sort(mah1)
135+
sorted_mah1 = sort(mah1)
136136

137137
if sorted_mah1[r] >= critical_quantile
138138
break

0 commit comments

Comments
 (0)