Ich forsche im Agrarbereich und verwende wie die meisten Menschen Excel, um meine Daten zu organisieren. Eine gängige Analyse ist jedoch die Fläche unter der Krankheitsfortschrittskurve (AUDPC), um die Veränderungen der Krankheit während der Vegetationsperiode zu verfolgen. Gibt es eine Möglichkeit, die Gesamtfläche unter einem Liniendiagramm zu berechnen, ohne eine Trendlinie/Regressionsanalyse anzupassen.
Die gepostete Formel gilt eher für JMP als für Excel. Aufbauend auf der Antwort von @Thierry_S Sie können so etwas in JSL, der Skriptsprache für JMP, tun:
NamesDefaultToHere(1);
// Some simple data
dt =
New Table( "AUDPC Example",
Add Rows( 4 ),
New Column( "x", Numeric, "Continuous", Set Values( [0, 1, 2, 3] )),
New Column( "y", Numeric, "Continuous", Set Values( [3, 4, 4.5, 5] ))
);
// A graph
gb = dt << Graph Builder(
Size( 526, 454 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :x ), Y( :y ) ),
Elements( Line( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"x",
ScaleBox,
{Min( -1 ), Max( 4 ), Inc( 0.5 ), Minor Ticks( 0 ),
Add Ref Line( 0, "Dashed", "Red", "", 1 ),
Add Ref Line( 3, "Dashed", "Red", "", 1 )}
),
Dispatch(
{},
"y",
ScaleBox,
{Format( "Best", 12 ), Min( -1 ), Max( 6 ), Inc( 1 ), Minor Ticks( 1 ),
Add Ref Line( 0, "Dashed", "Red", "", 1 ),
Add Ref Line( 1, "Dashed", "Red", "", 1 )}
)
)
);
// Start here . . .
dt = CurrentDataTable();
// Get the x and y values
xVals = Column(dt, "x") << getValues;
yVals = Column(dt, "y") << getValues;
// Insert two points that define the base of the polygon at the value y = 0
baseLine = [0];
xVals2 = VConcat(xVals[1], xVals, xVals[NRow(xVals)]);
yVals2 = VConcat(baseLine, yVals, baseline);
// Get the area
a2 = PolygonArea(xVals2, yVals2);
Print(a2);
// Insert two points that define the base of the polygon at the value y = 1
baseLine = [1];
xVals3 = VConcat(xVals[1], xVals, xVals[NRow(xVals)]);
yVals3 = VConcat(baseLine, yVals, baseline);
// Get the area
a3 = PolygonArea(xVals3, yVals3);
Print(a3);
Führen Sie „Datei > Neu > Neues Skript“ aus, schneiden Sie den obigen Code aus und fügen Sie ihn in das angezeigte Fenster ein, und führen Sie dann „Bearbeiten > Skript ausführen“ aus. Ich verstehe, dass Sie JSL vielleicht nicht lernen möchten. Beachten Sie, dass dies die Fläche 'unter' dem durch die Datenwerte definierten Polygon ergibt. Sie können den Bereich unter einer Art angepasster Kurve haben oder nicht, aber das ist auch möglich.
Thierry,
Danke für die Antwort. Ich gehe davon aus, dass die von Ihnen gepostete Formel in der Excel-Software angewendet werden soll? Oder gibt es eine Methode, dies in der JMP-Software zu verwenden?
Am besten,
Hallo,
Die einzige Möglichkeit, dies zu erreichen, besteht darin, die Polygonfläche zu berechnen, die durch Ihre Datenpunkte und den Boden des Diagramms definiert ist.
area = Polygon Area( {0, 0}, {0, 10}, {10, 10}, {10, 0} );
HINWEIS: 1) Sie können diese Funktion in einer Formel verwenden. 2) Es ist wichtig, die Ursprünge des Polygons einzubeziehen, wie in dem einfachen Beispiel oben gezeigt.
Am besten,
TS