biplotpy 0.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- biplotpy/__init__.py +69 -0
- biplotpy/bootdist.py +174 -0
- biplotpy/canonical.py +198 -0
- biplotpy/cdpca.py +121 -0
- biplotpy/classical.py +159 -0
- biplotpy/correspondence.py +231 -0
- biplotpy/datasets/__init__.py +19 -0
- biplotpy/datasets/iris.csv +151 -0
- biplotpy/datasets/mtcars.csv +33 -0
- biplotpy/distances.py +383 -0
- biplotpy/distatis.py +69 -0
- biplotpy/dynamic.py +62 -0
- biplotpy/extras.py +158 -0
- biplotpy/factor.py +521 -0
- biplotpy/gxe.py +128 -0
- biplotpy/logfreq.py +107 -0
- biplotpy/logistic.py +343 -0
- biplotpy/multitest.py +281 -0
- biplotpy/plot.py +873 -0
- biplotpy/plsbin.py +224 -0
- biplotpy/restricted.py +300 -0
- biplotpy/roptim.py +104 -0
- biplotpy/rrng.py +119 -0
- biplotpy/statis.py +162 -0
- biplotpy/transforms.py +129 -0
- biplotpy/unfolding.py +74 -0
- biplotpy/utils.py +79 -0
- biplotpy-0.4.0.dist-info/METADATA +242 -0
- biplotpy-0.4.0.dist-info/RECORD +32 -0
- biplotpy-0.4.0.dist-info/WHEEL +5 -0
- biplotpy-0.4.0.dist-info/licenses/LICENSE +674 -0
- biplotpy-0.4.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: biplotpy
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Biplots for Python, ported from R and validated against it: classical and HJ, canonical/CVA and HE plots, logistic (incl. constrained), STATIS, CA/MCA/CCA/RDA, PCoA/MDS with bootstrap, FA, PLS (incl. binary), GGE/AMMI and more, with their graphics
|
|
5
|
+
Author-email: Carlos Freire-Cadme <cfreirec@unemi.edu.ec>
|
|
6
|
+
License: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/cfreirec/biplotpy
|
|
8
|
+
Project-URL: Source, https://github.com/cfreirec/biplotpy
|
|
9
|
+
Project-URL: Issues, https://github.com/cfreirec/biplotpy/issues
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
13
|
+
Requires-Python: >=3.9
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: numpy>=1.22
|
|
17
|
+
Requires-Dist: scipy>=1.8
|
|
18
|
+
Requires-Dist: pandas>=1.4
|
|
19
|
+
Requires-Dist: matplotlib>=3.5
|
|
20
|
+
Provides-Extra: test
|
|
21
|
+
Requires-Dist: pytest; extra == "test"
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
# biplotpy
|
|
25
|
+
|
|
26
|
+
Biplots for Python, with their graphics, ported from R and validated
|
|
27
|
+
numerically against the R packages they come from: **MultBiplotR**
|
|
28
|
+
(Vicente-Villardón, Vicente-González & Frutos-Bernal), GGEBiplots,
|
|
29
|
+
agricolae, smacof, vegan, ade4, FactoMineR, ca, pls, psych, GPArotation,
|
|
30
|
+
DistatisR, biplotbootGUI, MANOVA.RM and heplots.
|
|
31
|
+
|
|
32
|
+
| Method | Function |
|
|
33
|
+
|---|---|
|
|
34
|
+
| Classical biplots: GH / CMP (α=0), JK / RMP (α=1), SQRT (α=0.5) | `gh_biplot`, `jk_biplot`, `sqrt_biplot`, `pca_biplot(alpha=)` |
|
|
35
|
+
| HJ-Biplot (Galindo, 1986) | `hj_biplot` |
|
|
36
|
+
| Quality of representation, contributions (relative and to the factor) | `.summary()`, `.qualities()` |
|
|
37
|
+
| Canonical / MANOVA biplot with confidence circles (t, Bonferroni, Hotelling, χ²), MANOVA (Wilks, Pillai, Hotelling-Lawley, Roy), ANOVAs, LDA classification | `canonical_biplot`, `canonical_variate_analysis` |
|
|
38
|
+
| Bootstrap of the PCA biplot | `pca_bootstrap` |
|
|
39
|
+
| Supplementary individuals and continuous variables | `project_rows`, `add_continuous_variables` |
|
|
40
|
+
| Calibrated (predictive) axes | `biplot_scales`, `calibrated_axis`, `plot(calibrated=True)` |
|
|
41
|
+
| 12 initial transformations | `initial_transform` |
|
|
42
|
+
| Logistic biplots: binary, ordinal (cumulative logits), nominal | `binary_logistic_biplot`, `ordinal_logistic_biplot`, `nominal_logistic_biplot` |
|
|
43
|
+
| STATIS-ACT, Dual STATIS, Canonical STATIS-ACT | `statis`, `dual_statis`, `canonical_statis` |
|
|
44
|
+
| Dynamic biplot (Egido & Galindo) | `dynamic_biplot` |
|
|
45
|
+
| Metric (ratio) unfolding by SMACOF | `unfolding` |
|
|
46
|
+
| GGE biplot and AMMI | `gge_model`, `ammi` |
|
|
47
|
+
| DISTATIS (DistatisR) | `distatis` |
|
|
48
|
+
| Clustering and disjoint PCA (CDPCA, biplotbootGUI) | `cdpca` |
|
|
49
|
+
| Correspondence analysis (MultBiplotR CA, ca, FactoMineR) and multiple CA (FactoMineR MCA) | `ca`, `mca` |
|
|
50
|
+
| Canonical correspondence analysis (MultBiplotR CCA, vegan cca) and redundancy analysis (vegan rda, scalings 1-3) | `cca`, `rda` |
|
|
51
|
+
| Principal coordinates (MultBiplotR, ade4 dudi.pco), 17 binary coefficients, continuous and Gower distances | `pcoa`, `binary_distances`, `continuous_distances`, `gower_distances` |
|
|
52
|
+
| Metric and non-metric MDS (smacof::mds: ratio, interval, ordinal with primary/secondary/tertiary ties) | `mds` |
|
|
53
|
+
| External binary logistic biplot and ridge logistic regression (MultBiplotR) | `external_logistic_biplot`, `ridge_logistic` |
|
|
54
|
+
| Canonical analysis of distances (MultBiplotR) | `canonical_distance_analysis` |
|
|
55
|
+
| Factor-analysis biplot with GPA rotations (varimax, quartimax, equamax, parsimax, entropy, quartimin, oblimin) | `fa_biplot`, `rotate` |
|
|
56
|
+
| NIPALS biplot with missing values (ade4 nipals), sparse and truncated NIPALS | `nipals`, `nipals_biplot` |
|
|
57
|
+
| PLS regression biplot (pls::plsr) | `pls_regression`, `pls_biplot` |
|
|
58
|
+
| Co-inertia analysis (ade4) | `coinertia` |
|
|
59
|
+
| Polychoric correlations (psych) and polychoric ordinal biplot (MultBiplotR PolyBiplot) | `polychoric`, `polychoric_biplot` |
|
|
60
|
+
| Mardia's test; heteroscedastic MANOVA with WTS/MATS and parametric or wild bootstrap (MANOVA.RM); HE plots (heplots) | `mardia`, `manova_wts`, `he_matrices`, `he_ellipses`, `he_plot` |
|
|
61
|
+
| Multi-factor MANOVA (type II and III SSP, car::Anova) and HE plots with one ellipse per term | `manova_terms`, `he_plot_terms` |
|
|
62
|
+
| Constrained (restricted) logistic biplots, binary and ordinal (MultBiplotR) | `constrained_logistic_biplot`, `constrained_ordinal_logistic_biplot` |
|
|
63
|
+
| External ordinal logistic biplot and ridge cumulative-logit regression (MultBiplotR AddOrdVars2Biplot, OrdinalLogisticFit) | `external_ordinal_logistic_biplot`, `ridge_ordinal_logistic` |
|
|
64
|
+
| PLS regression with a binary response (PLSR1Bin) and PLS for binary data (BinaryPLSR) | `plsr1_bin`, `binary_plsr`, `plot_plsbin` |
|
|
65
|
+
| Log-frequency biplot and weighted ALS biplot (CrissCross) | `log_frequency_biplot`, `criss_cross` |
|
|
66
|
+
| Bootstrap of principal coordinates (BootstrapDistance) and of SMACOF MDS | `bootstrap_pcoa`, `bootstrap_mds`, `plot_bootstrap_ordination` |
|
|
67
|
+
| R-compatible random numbers and R's `optim(method = "CG")` | `RRNG`, `optim_cg` |
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
import biplotpy as bp
|
|
71
|
+
iris = bp.load_iris()
|
|
72
|
+
hj = bp.hj_biplot(iris.iloc[:, :4], dim=3)
|
|
73
|
+
hj.summary()["col_qualities"]
|
|
74
|
+
hj.plot(groups=iris["Species"])
|
|
75
|
+
cb = bp.canonical_biplot(iris.iloc[:, :4], iris["Species"])
|
|
76
|
+
cb.manova; cb.plot(radius="bonferroni")
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Validation
|
|
80
|
+
|
|
81
|
+
`tests/test_vs_multbiplotr.py` (fixtures generated by `tests/fixtures/make_fixtures.R`)
|
|
82
|
+
checks, up to the sign of each axis: coordinates, eigenvalues, inertia, scale
|
|
83
|
+
factor, structure correlations and contributions of 12 classical biplots
|
|
84
|
+
(α = 0, 0.5, 1, HJ; five transformations); 11 initial transformations; the
|
|
85
|
+
canonical biplot (group, variable, individual markers, weights, eigenvalues,
|
|
86
|
+
Wilks F, ANOVAs, four radii, contributions, qualities); supplementary
|
|
87
|
+
variables; calibrated scales (port of R's `pretty()`); MANOVA tables against
|
|
88
|
+
R's `summary.manova`; LDA accuracy against `MASS::lda`.
|
|
89
|
+
|
|
90
|
+
Phase 2 (`tests/test_phase2.py`, fixtures from `fixtures/make_phase2.R`):
|
|
91
|
+
|
|
92
|
+
| Method | Reference | Max. abs. difference |
|
|
93
|
+
|---|---|---|
|
|
94
|
+
| `statis` | MultBiplotR::StatisBiplot; RV also vs ade4::statis | < 1e-13 |
|
|
95
|
+
| `canonical_statis` | MultBiplotR::CanonicalStatisBiplot | < 1e-14 |
|
|
96
|
+
| `dual_statis` | core lines of MultBiplotR::DualStatisBiplot (the function itself is unfinished) | < 1e-13 |
|
|
97
|
+
| `unfolding` (ratio) | smacof::unfolding 2.1-7 (same iterations, stress-1, configurations) | < 1e-13 |
|
|
98
|
+
| `gge_model` | GGEBiplots::GGEModel, 4 SVP x 3 centerings | < 1e-13 |
|
|
99
|
+
| `ammi` | agricolae::AMMI (ANOVA, Gollob table, scores) | < 1e-10 |
|
|
100
|
+
| `ordinal_logistic_fit` | MASS::polr | < 3e-7 |
|
|
101
|
+
| `nominal_logistic_fit` | nnet::multinom | < 2e-6 |
|
|
102
|
+
| `binary_logistic_biplot` | R optim (BFGS) on the same penalized objective | same optimum (eta < 1e-3) |
|
|
103
|
+
| `dynamic_biplot` | algebraic identities (reference occasion reproduces the biplot; mean of trajectories = reference) | < 1e-10 |
|
|
104
|
+
|
|
105
|
+
Phase 3 (`tests/test_phase3.py`, fixtures from `fixtures/make_phase3.R`):
|
|
106
|
+
|
|
107
|
+
| Method | Reference | Max. abs. difference |
|
|
108
|
+
|---|---|---|
|
|
109
|
+
| `mardia` | psych::mardia | < 1e-12 |
|
|
110
|
+
| `manova_wts` | MANOVA.RM 0.6.0 (statistics sourced from the package) | WTS, MATS, chi-square p < 1e-12; bootstrap p within Monte Carlo error |
|
|
111
|
+
| `he_matrices`, `roy_crit` | car::Anova (SSP), heplots Roy.crit | < 1e-12 |
|
|
112
|
+
| `distatis` | DistatisR 1.1.2 (MFA, SUMPCA, NUCLEAR norms) | < 1e-14 (NUCLEAR ~1e-8, see note) |
|
|
113
|
+
| `cdpca` | biplotbootGUI::CDpca from the same start | identical partitions, F < 1e-12 |
|
|
114
|
+
|
|
115
|
+
Note on DISTATIS with the nuclear norm: DistatisR sums the square roots of the
|
|
116
|
+
eigenvalues larger than 2 eps; a numerically zero eigenvalue of a
|
|
117
|
+
double-centred matrix can pass that threshold in one library and not in the
|
|
118
|
+
other, which moves the results in the 8th decimal.
|
|
119
|
+
|
|
120
|
+
Simulated recovery: STATIS recovers a common configuration and down-weights a
|
|
121
|
+
pure-noise table; unfolding recovers an exact configuration (stress < 1e-3);
|
|
122
|
+
logistic biplots recover the true probabilities, with correlation increasing
|
|
123
|
+
with n and p (0.81 at 100 x 10, 0.97 at 400 x 80 for the binary model).
|
|
124
|
+
|
|
125
|
+
Caveat: the deviance "tests" of the logistic biplots use df = dim as in
|
|
126
|
+
MultBiplotR, but the row scores are estimated from the same data, so the
|
|
127
|
+
p-values are optimistic; use them as descriptive fit indices. Joint ML with a
|
|
128
|
+
very small penalization overfits (near separation); use penalization >= 0.5
|
|
129
|
+
for small tables.
|
|
130
|
+
|
|
131
|
+
Phase 4 (`tests/test_phase4.py`, fixtures from `fixtures/make_phase4.R`):
|
|
132
|
+
|
|
133
|
+
| Method | Reference | Max. abs. difference |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| `ca` | MultBiplotR::CA (alpha 0, 0.5, 1), ca::ca | < 1e-14 |
|
|
136
|
+
| `mca` | FactoMineR::MCA (eigenvalues, individuals, categories, eta2) | < 1e-13 |
|
|
137
|
+
| `cca` | MultBiplotR::CCA (all scores), vegan::cca (eigenvalues, total inertia) | < 1e-13 |
|
|
138
|
+
| `rda` | vegan::rda + scores (scalings 1, 2, 3; scaled and unscaled) | < 1e-12 |
|
|
139
|
+
| `pcoa`, `binary_distances` | MultBiplotR::PrincipalCoordinates, ade4::dudi.pco, BinaryDistances (8 coefficients) | < 1e-14 |
|
|
140
|
+
| `mds` | smacof::mds (ratio, interval, ordinal primary and secondary): same iterations | < 1e-10 |
|
|
141
|
+
| `external_logistic_biplot` | MultBiplotR::ExternalBinaryLogisticBiplot | < 1e-10 |
|
|
142
|
+
| `canonical_distance_analysis` | MultBiplotR::CanonicalDistanceAnalysis | < 1e-12 |
|
|
143
|
+
| `rotate` | GPArotation (GPForth, GPFoblq) | < 1e-8 |
|
|
144
|
+
| `fa_biplot` | MultBiplotR::FA.Biplot loadings; psych::factor.scores (Bartlett, Thurstone) | < 1e-10 |
|
|
145
|
+
| `nipals` | ade4::nipals with missing values | < 1e-10 |
|
|
146
|
+
| `pls_regression` | pls::plsr (oscorespls) | < 1e-6 (iterative) |
|
|
147
|
+
| `coinertia` | ade4::coinertia | < 1e-10 |
|
|
148
|
+
| `polychoric` | psych::polychoric | < 1.2e-4 (psych's optimizer tolerance) |
|
|
149
|
+
|
|
150
|
+
Phase 5, version 0.4.0 (`tests/test_phase5.py`, fixtures from `fixtures/make_phase5.R`):
|
|
151
|
+
|
|
152
|
+
| Method | Reference | Max. abs. difference |
|
|
153
|
+
|---|---|---|
|
|
154
|
+
| `constrained_logistic_biplot` | MultBiplotR::ConstrainedLogisticBiplot (coefficients, coordinates, deviances, pseudo R2, loadings, sensitivity, specificity, supplementary variables) | < 1e-13 |
|
|
155
|
+
| `constrained_ordinal_logistic_biplot` | MultBiplotR::ConstrainedOrdinalLogisticBiplot | < 1e-12 |
|
|
156
|
+
| `external_ordinal_logistic_biplot` | MultBiplotR::AddOrdVars2Biplot (see note 1) | < 1e-12 |
|
|
157
|
+
| `plsr1_bin` | MultBiplotR::PLSR1Bin, algorithm 1 (see note 2) | < 1e-14 |
|
|
158
|
+
| `binary_plsr` | MultBiplotR::BinaryPLSR, same seed: same random starts and same CG optimizer | intercepts < 1e-15; scores and loadings < 1e-4 (note 3) |
|
|
159
|
+
| `optim_cg` | R's optim(method = "CG") | same path (Rosenbrock: same counts, parameters < 1e-12) |
|
|
160
|
+
| `log_frequency_biplot` | MultBiplotR::LogFrequencyBiplot (CrissCross) with the same random start | < 1e-13 |
|
|
161
|
+
| `bootstrap_pcoa` | MultBiplotR::BootstrapDistance, same seed, sampling and permutation | < 1e-12 |
|
|
162
|
+
| `bootstrap_mds` | the same residual bootstrap in R on smacof::mds (note 4) | < 1e-13 |
|
|
163
|
+
| `manova_terms` | car::Anova on a two-factor unbalanced MANOVA, types II and III | < 1e-12 |
|
|
164
|
+
|
|
165
|
+
Notes. (1) `AddOrdVars2Biplot` converts the factors to integers and
|
|
166
|
+
`RidgeOrdinalLogistic` then stops ("The dependent variable must be
|
|
167
|
+
ordinal"); the reference is computed with that conversion disabled. (2) In
|
|
168
|
+
R >= 4.2 `PLSR1Bin` stops inside `RidgeBinaryLogistic` (`class(y) ==
|
|
169
|
+
"formula"` on a matrix); the reference uses `class(y)[1]`. Its algorithm 2
|
|
170
|
+
refers to undefined objects and is not ported. (3) BinaryPLSR alternates
|
|
171
|
+
conjugate-gradient fits from random starts; biplotpy draws the same starts
|
|
172
|
+
(R's generator) and runs R's CG algorithm, but the path amplifies
|
|
173
|
+
differences in the last digits of the arithmetic (BLAS summation order), so
|
|
174
|
+
results agree to about 1e-4. (4) `BootstrapSmacof` stops (it reads `Sol$Dhat`,
|
|
175
|
+
which `SMACOF` does not return); `bootstrap_mds` resamples the residuals
|
|
176
|
+
between disparities and configuration distances, truncates negative
|
|
177
|
+
dissimilarities at 0, refits from the original configuration and aligns by
|
|
178
|
+
orthogonal Procrustes; the R reference runs the same scheme on smacof::mds.
|
|
179
|
+
`MultBiplotR::SimpleProcrustes`, used by `BootstrapDistance`, applies the
|
|
180
|
+
transpose of the optimal rotation (it fixes reflections but turns small
|
|
181
|
+
rotations the wrong way); `bootstrap_pcoa` uses the optimal rotation by
|
|
182
|
+
default and `procrustes="MultBiplotR"` reproduces R. In the constrained
|
|
183
|
+
binary logistic biplot the deviance tests use `dim` degrees of freedom (R
|
|
184
|
+
uses 1) and the percentages of correct classification threshold the
|
|
185
|
+
probability at 0.5 (R thresholds the linear predictor).
|
|
186
|
+
|
|
187
|
+
## Graphics
|
|
188
|
+
|
|
189
|
+
Every method has a plot (`examples/gallery.py` renders all 49 figures into
|
|
190
|
+
`examples/gallery/`): classical biplots with arrows or calibrated axes,
|
|
191
|
+
group concentration ellipses, convex hulls, alpha-bags and densities
|
|
192
|
+
(ggbiplot, factoextra, biplotEZ), quality colouring, correlation circle,
|
|
193
|
+
scree and contribution plots, 3-D biplot (bpca), bootstrap regions;
|
|
194
|
+
canonical/CVA biplot with confidence circles, classification regions and
|
|
195
|
+
calibrated axes (biplotEZ); HE plots (heplots); binary/ordinal logistic
|
|
196
|
+
biplots and nominal prediction regions; STATIS interstructure, compromise
|
|
197
|
+
and trajectories; dynamic biplot; unfolding; DISTATIS; CDPCA; the ten GGE
|
|
198
|
+
views of GGEBiplots (which-won-where, mean vs stability,
|
|
199
|
+
discriminativeness vs representativeness, rankings...); AMMI1/AMMI2;
|
|
200
|
+
CA/MCA maps, CCA and RDA triplots; PCoA/MDS with supplementary variables;
|
|
201
|
+
external logistic biplot; canonical analysis of distances; co-inertia;
|
|
202
|
+
FA, NIPALS and PLS biplots; polychoric biplot; constrained and external
|
|
203
|
+
ordinal logistic biplots; PLSR1Bin and BinaryPLSR biplots; log-frequency
|
|
204
|
+
biplot; bootstrap clouds of PCoA and MDS; HE plots of several factors. Their geometry is checked by
|
|
205
|
+
tests (calibrated axes read the CVA group means exactly; ellipses and
|
|
206
|
+
alpha-bags have their nominal coverage) and every figure is rendered in the
|
|
207
|
+
test suite.
|
|
208
|
+
|
|
209
|
+
## Differences from MultBiplotR (corrections)
|
|
210
|
+
|
|
211
|
+
See `biplotpy.FIXES`: within-groups standardization divides by the standard
|
|
212
|
+
deviation (MultBiplotR divides by the variance); the initial logit is applied
|
|
213
|
+
(MultBiplotR leaves the data untransformed); supplementary rows are projected
|
|
214
|
+
after transforming them (MultBiplotR projects them untransformed); STATIS
|
|
215
|
+
honours the requested transformation; Dual STATIS is complete; the binary
|
|
216
|
+
logistic objective and gradient are consistent; NIPALS, Coinertia, PLSR,
|
|
217
|
+
FA scores, PolyBiplot, BinaryDistances and weighted PCoA are corrected (16
|
|
218
|
+
entries in total).
|
|
219
|
+
|
|
220
|
+
## Not ported
|
|
221
|
+
|
|
222
|
+
Already available in Python, so not duplicated: CA, MCA, MFA, FAMD
|
|
223
|
+
(`prince`); CCA, RDA, PCoA, PERMDISP/betadisper (`scikit-bio`); PPML with
|
|
224
|
+
high-dimensional fixed effects (`pyfixest`); Ledoit-Wolf shrinkage and LDA
|
|
225
|
+
(`scikit-learn`); nearest PSD matrix (`statsmodels.stats.correlation_tools.cov_nearest`);
|
|
226
|
+
orthogonal Procrustes and generalized eigenproblems (`scipy`).
|
|
227
|
+
|
|
228
|
+
Not included, and why:
|
|
229
|
+
|
|
230
|
+
| Method (R) | Reason |
|
|
231
|
+
|---|---|
|
|
232
|
+
| Graphical interfaces (BiplotGUI, dynBiplotGUI, multibiplotGUI, biplotbootGUI's GUI) | Interactive Tcl/Tk applications, not statistical methods; every method behind them is in biplotpy with a matplotlib plot. |
|
|
233
|
+
| Functional PCA biplot (`BiplotFPCA`) | Needs a functional-data layer (basis expansions and smoothing of curves) that biplotpy does not have; it would be a separate library. |
|
|
234
|
+
| TetraDualStatis (Dual STATIS on tetrachoric correlations of binary tables) | Its help page has no example ("Not yet") and it depends on psych's tetrachoric estimates; there is no documented use to validate against. |
|
|
235
|
+
| Tucker and Parafac (ThreeWay) | Three-way decompositions with their own estimation and identification problems; available in Python in `tensorly`, so not duplicated. |
|
|
236
|
+
| STATICO | Depends on ade4's `ktab`/`statico` machinery (partial triadic analysis of co-inertia tables); porting ade4's k-table classes is outside the scope of a biplot library. |
|
|
237
|
+
| Estimation with mirt (`BinaryLogBiplotMirt`, ordinal factor analysis) | Item-response estimation by marginal ML with numerical integration (mirt); Python has no validated equivalent. biplotpy fits logistic biplots by penalized joint ML, which is MultBiplotR's default. |
|
|
238
|
+
| EM estimation of logistic biplots (`BinaryLogBiplotEM`, `OrdLogBipEM`) | Marginal ML with Gauss-Hermite quadrature, the same model as mirt; not ported for the same reason. |
|
|
239
|
+
| `PLSR1Bin` algorithm 2 | It refers to objects that are never defined (`c0`, `c`) and cannot run in R. |
|
|
240
|
+
|
|
241
|
+
A tutorial in Spanish with an example of each family of methods is in
|
|
242
|
+
`examples/tutorial_es.ipynb`.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
biplotpy/__init__.py,sha256=m65NMBh3CrbkzzC7QcZpN3bK6WdxL-VMeHCirx4LL8g,5251
|
|
2
|
+
biplotpy/bootdist.py,sha256=gwqLzyHTTWJ4bX4p5TgKLyYVMyvFsTiLvqM_m46AGO0,7569
|
|
3
|
+
biplotpy/canonical.py,sha256=gwQ_aKiZ--XWSciAmLN_Ym45P5xAfj5D_WrJFic1uxo,9003
|
|
4
|
+
biplotpy/cdpca.py,sha256=nXIMo8hNXr-3b24-Kq81ugJ9gYOS6mNLg2mjbmjUzao,4451
|
|
5
|
+
biplotpy/classical.py,sha256=_qOiE3C_LykcXNps--4ZCmBeyEC0PUAXkyrhPgNy3Z0,7325
|
|
6
|
+
biplotpy/correspondence.py,sha256=VZ71xQPIzy_VBwnjX0EZSlEqSv8VbMK38SHc2H0Nkss,11201
|
|
7
|
+
biplotpy/distances.py,sha256=mCg-O_UO5p6UYcLxlMlA66DKU94cizaWedrJlIpHCyU,19030
|
|
8
|
+
biplotpy/distatis.py,sha256=7fc6xWxpQdASHiwjwyzaW4BRAheavbVPi5Irm_LGHSs,2805
|
|
9
|
+
biplotpy/dynamic.py,sha256=QY8eQfwVyc6Ai-tAtea2bRKYGLtnVFpvsrNe2rl50Bg,2928
|
|
10
|
+
biplotpy/extras.py,sha256=d33uWPZ_SURRKCeJWdpHmOvrtbZMhXNQXoXbc9lgeW0,7451
|
|
11
|
+
biplotpy/factor.py,sha256=kcXM3FTQ6Gk3qr29DBZJt5bFsRBp3bAlCKoGyPKOJhc,25125
|
|
12
|
+
biplotpy/gxe.py,sha256=zXAOIJcHyQ49SGPMG2vLeykYsK_tkGYwa-VvKGdd5D4,6154
|
|
13
|
+
biplotpy/logfreq.py,sha256=IIdByRf9V4_yaNDbqegkLgJ0Lv4yLV7vTR_Xs6xyITo,5339
|
|
14
|
+
biplotpy/logistic.py,sha256=nNH8-oZl6_YBeN2XEBHI49t52FLdKeZWy_onZwwd020,16033
|
|
15
|
+
biplotpy/multitest.py,sha256=zIH6k3_7WcWfLAn3cEkk3QuKcmlId32-9h0viXB3tus,12913
|
|
16
|
+
biplotpy/plot.py,sha256=5y9OS_2jIF_Tha0dnZtjIMEY7LOw3pV2x7D-YfvaKZQ,44219
|
|
17
|
+
biplotpy/plsbin.py,sha256=vH5puBhq0UlQD_lqohFQNvGaZ494hWc_6Qpb8xQZdx0,9395
|
|
18
|
+
biplotpy/restricted.py,sha256=JJw5q-oYYwT9pERBmW7hQjKzcBjMr0lGnop8wnZ83cs,15929
|
|
19
|
+
biplotpy/roptim.py,sha256=w6L65BKU1bRKjySXSBiitZBVtvPDZ3oqBRafGgiWgVQ,4252
|
|
20
|
+
biplotpy/rrng.py,sha256=V9JfD0N9kToO84pAdHVscwzQQNhutE5Afq3qPCZq5Ws,5547
|
|
21
|
+
biplotpy/statis.py,sha256=CiEPo6gDjngr7XyYQrS0K5yB5_V675ao5seWadzqYdI,8202
|
|
22
|
+
biplotpy/transforms.py,sha256=UJsD1GFbAe69j69MXG4felRfkkWLkI2rrrDYexGCrBw,8222
|
|
23
|
+
biplotpy/unfolding.py,sha256=hKk2AvHRTXeqDVSrFY82Gs_tMQrxUEfCgUzzwF1jtgo,2972
|
|
24
|
+
biplotpy/utils.py,sha256=WU-YbSn-8is3JjoVbBo_EizAbeZTk9yzzAC_EhWeE-o,2360
|
|
25
|
+
biplotpy/datasets/__init__.py,sha256=I6c86Ryn-LOl1zmvh6RM_0S1qPrivuZe0WiIsvpiF84,468
|
|
26
|
+
biplotpy/datasets/iris.csv,sha256=1EDa3tGGNMHaLwXmsaMDhfKsps04RVsx0mPhZXJgESo,4026
|
|
27
|
+
biplotpy/datasets/mtcars.csv,sha256=aNokC_i-cYRsIwTrSHhCPfV3oofBfaSqVBvCl3by6tk,1787
|
|
28
|
+
biplotpy-0.4.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
29
|
+
biplotpy-0.4.0.dist-info/METADATA,sha256=M7EXoTsNqMTvymTAz5xts17Bn3SFag3JRp4-X6IL8fQ,16431
|
|
30
|
+
biplotpy-0.4.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
|
|
31
|
+
biplotpy-0.4.0.dist-info/top_level.txt,sha256=7afim2ZHUQTAObOWoyYTlr6v-ovbXPuu5t-ROV34-Oo,9
|
|
32
|
+
biplotpy-0.4.0.dist-info/RECORD,,
|