# Alternative to multivariatestats.jl

**URL:** <https://discourse.julialang.org/t/alternative-to-multivariatestats-jl/110540>\
**Category:** General Usage\
**Tags:** question, package, linearalgebra\
**Created:** [February 21, 2024, 8:37pm UTC](https://discourse.julialang.org/t/alternative-to-multivariatestats-jl/110540 "2024-02-21T20:37:16Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [February 21, 2024, 8:37pm UTC](https://discourse.julialang.org/t/alternative-to-multivariatestats-jl/110540/1 "2024-02-21T20:37:16Z")

</div>

Hello, good evening.

There are alternatives to multivariatestats.jl?

---

<div class="post-metadata">

**Author:** ![adienes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/adienes/32/37459_2.png) [@adienes](https://discourse.julialang.org/u/adienes)\
**Post date:** [February 21, 2024, 8:40pm UTC](https://discourse.julialang.org/t/alternative-to-multivariatestats-jl/110540/2 "2024-02-21T20:40:22Z")

</div>

there is [GitHub - JuliaManifolds/MultivariateDataAnalysis.jl: Multivariate data analysis using geometric algorithms made easy!](https://github.com/JuliaManifolds/MultivariateDataAnalysis.jl) but it’s in pretty early stages so might not be user-friendly yet

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [February 21, 2024, 8:41pm UTC](https://discourse.julialang.org/t/alternative-to-multivariatestats-jl/110540/3 "2024-02-21T20:41:42Z")

</div>

Hello, thank you. Im getting some multivariatestats.jl strange behaviors using lda model. Thats why Im looking for an alternative.

---

<div class="post-metadata">

**Author:** ![matnbo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matnbo/32/220166_2.png) [@matnbo](https://discourse.julialang.org/u/matnbo)\
**Post date:** [February 22, 2024, 12:47pm UTC](https://discourse.julialang.org/t/alternative-to-multivariatestats-jl/110540/4 "2024-02-22T12:47:24Z")

</div>

for instance, you can easily implement linear discriminant models, assuming this is what you referred to as LDA, (and many other multivariate ML [models for high-dimensional data](https://mlesnoff.github.io/Jchemo.jl/dev/domains/)), with package [Jchemo](https://github.com/mlesnoff/Jchemo.jl)

```julia
using Jchemo
using CairoMakie

mod = lda()
fit!(mod, Xtrain, ytrain)
res = predict(mod, Xtest) 

errp(res.pred, ytest)
confusion(res.pred, ytest).cnt

```

And an example of FDA:

```julia
mod = fda(nlv = 2, scal = false)
fit!(mod, Xtrain, ytrain)

Ttrain = mod.fm.T # training scores
## Same as:
Ttrain = transf(mod, Xtrain)
## Scores for new data
Ttest = transf(mod, Xtest)

## X-loadings matrix
## = coefficients of the linear discriminant function
## = "LD" of function lda of the R package MASS
mod.fm.P

## Explained variance computed by weighted PCA
## of the class centers in transformed scale
summary(mod).explvarx

## Projections of the class centers
## to the score space
ct = mod.fm.Tcenters
f, ax = plotxy(Ttrain[:, 1], Ttrain[:, 2], ytrain;
      xlabel = "Score-1", ylabel = "Score-2", title = "FDA")
scatter!(ax, ct[:, 1], ct[:, 2], markersize = 15, color = :red)
f

```

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [February 22, 2024, 7:21pm UTC](https://discourse.julialang.org/t/alternative-to-multivariatestats-jl/110540/5 "2024-02-22T19:21:03Z")

</div>

Thats very nice. Thank you. In fact, linear discriminant model from multivariatestats.jl is the only model I’m having troubles. It seems abandoned in repository. Will be nice to check this alternatives. I will reimplement the examples using this package.

@matnbo did you know if this is the correct behavior from multivariatestats.jl?

> [@LDA example in multivariatestats.jl flipped x and y values](https://discourse.julialang.org/t/lda-example-in-multivariatestats-jl-flipped-x-and-y-values/110508):
>
> Hello, good morning. Days ago I started looking the multivariatestats.jl to do some pca and lda analysis, and notice that lda plots data inverted in this example: [https://juliastats.org/MultivariateStats.jl/stable/lda/](https://juliastats.org/MultivariateStats.jl/stable/lda/) iris = dataset("datasets", "iris") X = Matrix(iris[1:2:end,1:4])' X\_labels = Vector(iris[1:2:end,5]) pca = fit(PCA, X; maxoutdim=2) Ypca = predict(pca, X) lda = fit(MulticlassLDA, X, X\_labels; outdim=2) Ylda = predict(lda, X) p = plot(layout=(1,2), size=(800,300))…

---

<div class="post-metadata">

**Author:** ![matnbo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/matnbo/32/220166_2.png) [@matnbo](https://discourse.julialang.org/u/matnbo)\
**Post date:** [February 22, 2024, 8:06pm UTC](https://discourse.julialang.org/t/alternative-to-multivariatestats-jl/110540/6 "2024-02-22T20:06:07Z")

</div>

> [@jcbritobr](#):
>
> @matnbo did you know if this is the correct behavior from multivariatestats.jl?

no sorry, I never used this package

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [February 22, 2024, 9:45pm UTC](https://discourse.julialang.org/t/alternative-to-multivariatestats-jl/110540/7 "2024-02-22T21:45:13Z")

</div>

> [@matnbo](#):
>
> `training`

[BetaML](https://github.com/sylvaticus/BetaML.j) also implements a linear Perceptron, among many other models, with a sintax similar to the one provided (Model()/fit!/predict)
