Hintergrund: Ich versuche, Statistiken für Krankenwagen mit Apache Commons Math zu bestimmen. Ich bin in der Lage, sehr einfache univariate Statistiken für einen Krankenwagen zu machen, aber ich bleibe stecken, wenn ich Statistiken für alle Krankenwagen in meiner Flotte bestimmen will.Schleife durch eine Ergebnismenge, um Durchschnitte nach Gruppe zu erzeugen
Ziel: Mein Ziel ist es, eine Basisergebnismenge mit JDBC zu generieren, analysiert dann die Informationen in statistische Informationen. Zum Beispiel würde ich gerne die Ergebnismenge nehmen und es wie eine Tabelle aussehen lassen, die den Krankenwagen zeigt, Durchschnitt für 2014, Durchschnitt für 2015, um die Überschrift zu sein. Die die Tabelle Details würden jeden Krankenwagen zeigen, und die Mittelwerte für jeden Header
<table>
<tr><th>ambulance</th><th>average response time for year 2014</th><th>average response time for year 2015</th></tr>
<tr><td>Medic1</td><td>62</td><td>74</td></tr>
<tr><td>Medic2</td><td>83</td><td>79</td></tr>
<tr><td>Medic3</td><td>68</td><td>71</td></tr>
</table>
Versuchte Pseudo-Code: Der Pseudo-Code würde wie folgt aussehen; 1.) Weisen Sie eine Variable für die durchschnittliche Antwortzeit des Kalenderjahres 2014 zu. 2.) durchlaufen Sie alle Ambulanzen in der Ergebnismenge, wenn das Kalenderjahr 2014 ist, dann berechnen Sie einen Durchschnitt. 3.) eine Variable für die durchschnittliche Antwortzeit des Kalenderjahres 2015 zuweisen. 4.) Schleife durch alle Krankenwagen und wenn das Kalenderjahr 2015 ist, dann berechnen Sie den Durchschnitt. 5.) Ausgang der Krankenwagen, durchschnittliche Antwortzeit für das Jahr 2014, die durchschnittliche Antwortzeit für das Jahr 2015
Kommentare: Dies wäre ein guter Anfang sein. Zumindest die Logik und das Format wären vorhanden, um differenziertere Analysen durchzuführen, wie zum Beispiel die Unterschiede Jahr für Jahr zu bestimmen. Aber ich stecke fest. Ich bin nicht sicher, wie man eine Wiederholung über jeden Krankenwagen durchführt, um den Durchschnitt zu erzeugen.
Ich kann SQL-Abfragen schreiben, die Durchschnittswerte für jeden Krankenwagen generieren würden. Aber ich möchte Apache Commons Math verwenden, weil es Skew, Kurtosis und andere Maßnahmen bietet. Was Sie oberhalb dieses Absatzes sehen, ist ein vereinfachtes Beispiel für etwas Komplexeres.
Java-Code:
package EMSResearch;
import java.sql.*;
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
public class EMSResearch
{
public static void main(String[] args)
{
Connection conn = null;
Statement stmt = null;
try
{
conn = DriverManager.getConnection("jdbc:sqlserver://MyDatabase;database=Emergencies;integratedsecurity=false;user=MyUserName;password=MyPassword");
stmt = conn.createStatement();
String strSelect = "SELECT EmergencyID, YearOfCall, ResponseTime, Ambulance";
ResultSet rset = stmt.executeQuery(strSelect);
DescriptiveStatistics ds = new DescriptiveStatistics();
/*the following code does the job of generating average response time for Medic1 for year 2015. But I want it to loop through and get all the ambulances for year 2015*/
while (rset.next())
{
if (rset.getString("Ambulance").equals("Medic1") && rset.getInt("YearOfCall") == 2015)
{
String event = rset.getString("I_EventNumber");
int year = rset.getInt("YearOfCall");
int responseTime = rset.getInt("ResponseTime");
String truck = rset.getString("Ambulance");
ds.addValue(responseTime);
}
}
System.out.println("mean average value " + ds.getMean());
} catch (SQLException ex)
{
ex.printStackTrace();
} finally
{
Verwenden Sie stattdessen die [SQL-Fensterfunktionen] (https://msdn.microsoft.com/en-us/library/ms189461%28v=sql.110%29.aspx). –
Das ist, was ich normalerweise tue, aber in diesem Fall wollte ich Apache Commons Math verwenden, weil es Methoden für Skew und Kurtosis hat. Sobald ich geübt bin, kann ich noch viel mehr Statistikfunktionen ausführen. –