SPSS Compatibility

The statistical functions of mariposa are checked against reference output of IBM SPSS Statistics 29. This article lists, for each function, how many SPSS values its tests compare and which results are not compared with SPSS.

mariposa 0.7.4, status of 2026-10-19.

Summary

How results are compared

Each comparison uses the precision with which SPSS prints the value:

The reference values come from SPSS syntax runs on the survey_data example data. The comparisons run with the package’s test suite on every change; the SPSS syntax and output are part of the source repository (tests/spss_reference).

Results by function

The w_*() functions share one set of SPSS references; each row shows that total. The last column lists results that are not compared with SPSS output. They are verified by other means: the weighted results of the rank-based tests reproduce the unweighted results exactly when all weights equal 1 (the weighted Mann-Whitney test also agrees with survey::svyranktest()), and the remaining results are checked against published formulas or independent implementations.

Function SPSS values Exact Printed precision Documented difference Not compared with SPSS
ancova() 800 147 653 0 —
binomial_test() 58 24 34 0 weighted results
chi_square() 235 53 182 0 —
chisq_gof() 133 51 82 0 —
crosstab() 3,369 1,419 1,950 0 adjusted standardized residuals
describe() 288 18 270 0 —
dunn_test() 6 0 6 0 weighted results
efa() 578 21 473 84 —
factorial_anova() 609 200 409 0 —
fisher_test() 412 100 312 0 —
frequency() 150 24 126 0 —
friedman_test() 56 18 38 0 weighted results
kendall_tau() 202 100 102 0 weighted results
kruskal_wallis() 97 52 45 0 weighted results
levene_test() 144 0 144 0 —
linear_regression() 602 35 567 0 —
logistic_regression() 29 12 17 0 all results (checked against the formulas of the SPSS algorithm)
mann_whitney() 93 19 74 0 weighted results
mcnemar_test() 143 84 59 0 —
multiple_response() 52 19 33 0 all results (checked by direct computation)
normality_test() 21 6 15 0 all results (checked against independent implementations)
oneway_anova() 1,443 234 1,209 0 —
pairwise_wilcoxon() 242 106 136 0 weighted results
partial_cor() 20 4 16 0 all results (checked against an equivalent regression computation)
pearson_cor() 73 18 55 0 —
reliability() 458 45 413 0 McDonald’s omega
scheffe_test() 1,422 0 1,422 0 —
spearman_rho() 238 118 120 0 —
t_test() 673 9 664 0 —
tukey_test() 1,418 0 1,418 0 —
w_iqr() 444 132 312 0 —
w_kurtosis() 444 132 312 0 —
w_mean() 444 132 312 0 —
w_median() 444 132 312 0 —
w_modus() 444 132 312 0 —
w_quantile() 444 132 312 0 —
w_range() 444 132 312 0 —
w_sd() 444 132 312 0 —
w_se() 444 132 312 0 —
w_skew() 444 132 312 0 —
w_var() 444 132 312 0 —
wilcoxon_test() 114 48 66 0 weighted results

Documented differences

Function Results Tolerance Reason
efa() ML loadings, sums of squares, % of variance 0.002 SPSS stops the ML iteration at its convergence criterion (.001); mariposa iterates to the optimum.
efa() ML communalities / SS where SPSS did not converge 0.05 The SPSS reference runs end without convergence (3 factors from 6 items, df = 0, Heywood cases).

A documented difference describes a known difference between the algorithms, not an error; its tolerance is the agreement the two algorithms reach.

Functions without their own SPSS comparison