// overload in case you only want to bring in O3 data -- NOT IMPLEMENTED IN CONTROLLER YET public static FutureAQIs AQIForecastEquation(List <WeatherDataFromAPI> weatherTime, int index, double eightHourO3) { double FutureO3AQI = (double)(5.3 * weatherTime[index].WindSpeed) + (double)(0.4 * weatherTime[index].TemperatureC) + (double)(0.1 * weatherTime[index].Humidity) + ((double)0.7 * eightHourO3); FutureAQIs futureAQIO3Only = new FutureAQIs((int)Math.Round(FutureO3AQI), 0, 0); return(futureAQIO3Only); }
public static FutureAQIs AQIForecastEquation(List <WeatherDataFromAPI> weatherTime, int index, double eightHourO3, double eightHourCO, double oneHourNO2) { // R^2 = 0.75 double FutureO3AQI = (double)(5.3 * weatherTime[index].WindSpeed) + (double)(0.4 * weatherTime[index].TemperatureC) + (double)(0.1 * weatherTime[index].Humidity) + ((double)0.7 * eightHourO3); double FutureCOAQI; // R^2 = 0.48 if (eightHourCO == 0) { FutureCOAQI = 0; } else { FutureCOAQI = -(double)(0.03 * weatherTime[index].TemperatureC) + (double)(0.01 * weatherTime[index].Humidity) + ((double)0.6 * eightHourCO); } double FutureNO2AQI; // R^2 = 0.28 -- lowered Windspeed effect by tenfold and NO2 AQIs seem to come out more reasonable if (oneHourNO2 == 0) { FutureNO2AQI = 0; } else { FutureNO2AQI = 55.2 - (double)(1.75 * weatherTime[index].WindSpeed) - (double)(1.6 * weatherTime[index].TemperatureC) + ((double)0.4 * oneHourNO2); } FutureAQIs futureAQI3Pollutants = new FutureAQIs((int)Math.Round(FutureO3AQI), (int)Math.Round(FutureCOAQI), (int)Math.Round(FutureNO2AQI)); return(futureAQI3Pollutants); }