The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Discrete Distribution Data Analysis with Wasserstein distance
DDAWASS is an R package for the analysis of data tables whose cells are discrete distributions with a finite support: for example the distributions of the scores given on a Likert scale by groups of respondents, of grades, of ratings or of counts. Each row is a statistical unit (a group, a territory, a company, …), each column a distributional variable, and distributions are compared through the L2 Wasserstein distance between their quantile functions.
It is the discrete counterpart of HistDAWass (histogram data) and provides:
distributionD (a discrete distribution) and
MatD (a matrix of discrete distributions), built from raw
microdata, frequency tables, histograms or legacy nested tibbles;The development version can be installed from GitHub:
# install.packages("remotes")
remotes::install_github("Airpino/DDAWASS", build_vignettes = TRUE)The package contains C++ code: on Windows, Rtools is needed to install it from source.
The univer data of the CUB package contain
the 1-7 evaluations of the orientation services of the University of
Naples Federico II given by 2179 students. We describe each
faculty-by-gender group by the distributions of its scores.
library(DDAWASS)
data(univer, package = "CUB")
univer$Faculty <- factor(sprintf("F%02d", univer$faculty))
univer$Gender <- factor(univer$gender, levels = 0:1, labels = c("M", "W"))
items <- c("informat", "willingn", "officeho", "compete", "global")
M <- data2MatD(univer, unit = c("Faculty", "Gender"), vars = items,
support = 1:7, min.n = 10)
M[1:4, 1:3]
#> a matrix of discrete distributions
#> 4 rows x 3 columns
#> informat willingn officeho
#> F01_M [m=5.35 s=1.73 k=7] [m=6.19 s=1.23 k=7] [m=5.77 s=1.41 k=7]
#> F01_W [m=5.16 s=1.72 k=7] [m=6.42 s=0.674 k=7] [m=5.42 s=1.57 k=7]
#> F02_M [m=6.62 s=0.785 k=7] [m=6.65 s=0.748 k=7] [m=6.3 s=1.19 k=7]
#> F02_W [m=6.47 s=1.07 k=7] [m=6.49 s=0.965 k=7] [m=6.23 s=1.34 k=7]Distance between two groups, decomposed into the contributions of the
means (POSITION), of the standard deviations
(SIZE) and of the shapes:
WassSqDistD(get.cell.MatD(M, "F02_M", "global"),
get.cell.MatD(M, "F06_M", "global"), details = TRUE)
#> SQ.W POSITION SIZE SHAPE rQQ
#> 5.4861184 4.0232281 0.9578624 0.5050279 0.7773405Barycenter of the global satisfaction, expressed on the 1-7 scale, and Wasserstein correlations between the items:
WD.vec.mean.simplified(M[, "global"], support = 1:7)
#> Discrete distribution (7 support values)
#> x p cdf
#> 1 0.00000 0.00000
#> 2 0.00870 0.00870
#> 3 0.04008 0.04878
#> 4 0.10507 0.15385
#> 5 0.15385 0.30769
#> 6 0.45012 0.75781
#> 7 0.24219 1.00000
#> mean = 5.72317 std = 1.11335
round(WD.correlation(M), 2)
#> informat willingn officeho compete global
#> informat 1.00 0.64 0.56 0.78 0.75
#> willingn 0.64 1.00 0.51 0.66 0.72
#> officeho 0.56 0.51 1.00 0.53 0.58
#> compete 0.78 0.66 0.53 1.00 0.83
#> global 0.75 0.72 0.58 0.83 1.00Clustering and regression:
set.seed(123)
km <- WD_kmeans(M, k = 3, rep = 20)
km$solution$cardinality
#> 1 2 3
#> 4 12 10
pars <- WD.regression.two.components(M, Yvar = "global",
Xvars = c("informat", "willingn", "officeho", "compete"))
round(pars, 3)
#> (AV_Intercept) AV_informat AV_willingn AV_officeho AV_compete
#> -0.217 0.049 0.232 0.156 0.610
#> CEN_informat CEN_willingn CEN_officeho CEN_compete
#> 0.162 0.240 0.056 0.419MatD.browseVignettes("DDAWASS")| Task | Functions |
|---|---|
| Build data | distributionD(), MatD(),
data2MatD(), long2MatD(),
MatH2MatD(), tibble2MatD() |
| Describe | get.MatD.stats(), meanD(),
stdD(), skewD(), compQ(),
compP() |
| Barycenter and dispersion | WD.vec.mean(), WD.vec.mean.simplified(),
simplifyD(), WD.var.covar(),
WD.correlation(), WD.SSQ() |
| Distances | WassSqDistD(), WD_MAT_DIST(),
rQQ() |
| Clustering | WD_hclust(), WD_kmeans() |
| Factorial methods | WD.1d.PCA(), WD.MultiplePCA(),
WD.plot.Spanish.fan() |
| Regression | WD.regression.two.components(),
WD.regression.two.components.predict(),
WD.regression.GOF() |
| Reliability | WD.cronbach() |
GPL (>= 3)
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.