window transform: strict median/deviation/variance/pXX check missing values at the wrong rows when there are several series

Offen Anfängerfreundlich
#2,471 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
85/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
javascript, node.js

Rechercherichtung

Beginne mit src/transforms/window.js und untersuche reduceAccessor auf die strikte Anzahl fehlender Werte; im Issue wird die Abweichung zwischen Zeilenindex und Serienindex beschrieben. Reproduziere den Fehler mit dem bereitgestellten Beispiel Plot.windowY und prüfe anschließend die Tests für die Window-Transformation auf strikte Reducer. Erledigt, wenn Median, Abweichung, Varianz und pXX fehlende Ergebnisse bei mehreren Serien in denselben Zeilen wie mean platzieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

With strict: true, the median, deviation, variance and pXX window reducers look for missing values at the within-series position instead of the row index, so any series that does not occupy rows 0..n-1 (a second z series, a later facet) gets gaps in the wrong places.

import * as Plot from "@observablehq/plot";

const data = [
  {i: 0, v: 1, g: "a"}, {i: 1, v: 10,   g: "b"},
  {i: 2, v: 2, g: "a"}, {i: 3, v: null, g: "b"},
  {i: 4, v: 3, g: "a"}, {i: 5, v: 30,   g: "b"},
  {i: 6, v: 4, g: "a"}, {i: 7, v: 40,   g: "b"}
];

const o = Plot.windowY({k: 2, reduce: "median", strict: true, anchor: "end"}, {x: "i", y: "v", z: "g"});
o.transform(data, [Uint32Array.from(data, (_, i) => i)]);
console.log(Array.from(o.y.transform()));

node t.mjs

Actual:

[ undefined, undefined, 1.5, 10, 2.5, 30, NaN, NaN ]

Expected (what reduce: "mean" gives on the same data):

[ undefined, undefined, 1.5, NaN, 2.5, NaN, 3.5, 35 ]

Series "a" has no missing values but loses its last window, and series "b" gets values for the two windows that contain null.

Tested with @observablehq/plot 0.6.19 and main 2245188, Node.js v26.13.0.

In reduceAccessor in src/transforms/window.js, v takes a row index but the strict NaN counting calls v(i) and v(i + k - 1); it should be v(I[i]) and v(I[i + k - 1]).

Credit: https://ucsbplse.github.io/

Vorherrschende Sprache
HTML
Sterne
5.4k
Forks
251
Ø Merge
2 T. 1 Std.
Gemergte PRs (30 T.)
2

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus observablehq/plot

Alle Issues in observablehq/plot

Ähnliche Issues

Weitere Issues zu Data Visualization

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.