[Feature Request] `Frequency` merge operations
@bvenn ya está trabajando en esto.
Desde el 26/4/2023.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Merge operations for Maps
Data can be sorted into bins of predefined width using the Frequency or EmpiricalDistribution module. If two datasets are binned and should be merged afterwards, several merging strategies are possible. A simple merge of freqA and freqB is straightforward with keys that are present in freqA and freqB are replaced with the values of freqB.
let a =
[("k1",1);("k2",3)]
|> Map.ofList
let b =
[("k2",1);("k3",4)]
|> Map.ofList
merge a b
results in the following combination with ("k2",3) from a being replaced by ("k2",1) from b:
val it: Map<float,int> = map [("k1", 1); ("k2", 1); ("k3", 4)]
Generic formulation of merge operations
I'm in the process of adding a generic function that gets an additional function that handles key duplicates. E.g.:
add a b
resulting in the combination of a and b with ("k2",3) from a being added to ("k2",1) from b:
val it: Map<float,int> = map [("k1", 1); ("k2", 4); ("k3", 4)]
While this is trivial, I'm not sure how to handle a subtraction. Should the result from subtract a b result in:
- a)
val it: Map<float,int> = map [("k1", 1); ("k2", 2); ("k3", 4)]- counts from
aare subtracted by the corresponding values frombif keys are present in both maps - here the values of
athat are not present inbare untouched
- counts from
- b)
val it: Map<float,int> = map [("k1", 1); ("k2", 2); ("k3", -4)]- counts from
aare subtracted by the values fromb, even for keys that are not present ina
- counts from
The latter option (b) makes no sense to me since frequency counts should not be negative, but I cannot think of applications in which the result of (a) makes any sense. Maybe the subtract function is not the best to start with because in this post they implemented (a) with addition and multiplication examples. Especially for the addition, a and b would give the correct result and I think it is intuitive to just apply the function to values of keys that are present in both maps.
@HarryMcCarney, do you know use cases that use subtract? Do you have any thoughts about this? I would suggest to add version (a) to Frequency as well as EmpiricalDistribution
Additional remark: When applied to continuous data bandwidths must be equal, to not merge counts from overlapping bins!
- Lenguaje dominante
- F#
- Estrellas
- 227
- Forks
- 58
- Merge medio
- 55 min
- PR fusionados (30 d)
- 1
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fslaborg/FSharp.Stats
-
Documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
fslaborg/FSharp.Stats#385 ·
-
automation Documentation repo-assist
Dificultad 1/5 Menos de una hora Aptitud para principiantes 1/100
fslaborg/FSharp.Stats#382 ·
-
Repo Assist (discussion thread) Abiertoquestion
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
fslaborg/FSharp.Stats#355 · 18 comentarios ·
-
[BUG] Bugged docs pages Abiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
fslaborg/FSharp.Stats#354 · 2 comentarios ·
-
enhancement needs investigation
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
fslaborg/FSharp.Stats#344 · 4 comentarios ·