Ich forsche im landwirtschaftlichen Bereich und verwende Excel wie die meisten Leute, um meine Daten zu organisieren. Eine gängige Analyse ist jedoch die Fläche unter der Krankheitsverlaufskurve (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 Trendlinien-/Regressionsanalyse anzupassen?
Hi,
Der einzige Weg, dies zu erreichen, besteht darin, die Polygonfläche zu berechnen, die durch Ihre Datenpunkte und den Boden des Diagramms definiert wird.
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 im obigen einfachen Beispiel gezeigt.
Am besten,
TS
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,
Die veröffentlichte Formel gilt eher für JMP als für Excel. Aufbauend auf der Antwort von @Thierry_S Sie können dies 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 möglicherweise nicht JSL lernen möchten. Beachten Sie, dass dies den Bereich 'unter' dem durch die Datenwerte definierten Polygon ergibt. Sie können die Fläche unter einer angepassten Kurve haben oder nicht, aber auch dies ist möglich.