# 1. LOAD REQUIRED LIBRARIES
#install.packages("readxl")
#install.packages("ggplot2")
#install.packages("dplyr")
#install.packages("corrplot")
#install.packages("lubridate")

library(readxl)
library(ggplot2)
library(dplyr)
library(corrplot)
library(lubridate)


# 2. IMPORT DATASET
AirQuality <- read_excel("C:/Users/Vishal/Downloads/R Test/AirQualityUCI.xlsx")

colnames(AirQuality)

str(AirQuality)

head(AirQuality)

dim(AirQuality)

summary(AirQuality)


# 3. DATA PREPARATION
AirQuality$Month <- lubridate::month(AirQuality$Date)

AirQuality$Season <- ifelse(AirQuality$Month %in% c(12,1,2), "Winter",
                            ifelse(AirQuality$Month %in% c(3,4,5), "Spring",
                                   ifelse(AirQuality$Month %in% c(6,7,8), "Summer",
                                          "Autumn")))

AirQuality$Season <- as.factor(AirQuality$Season)

table(AirQuality$Season)

AirQuality[AirQuality == -200] <- NA
summary(AirQuality)


AirQuality$DateTime <- as.POSIXct(
  paste(as.Date(AirQuality$Date), format(AirQuality$Time, "%H:%M:%S")),
  format = "%Y-%m-%d %H:%M:%S"
)

AirQuality_clean <- AirQuality[!is.na(AirQuality$`CO(GT)`), ]

# TASK 2: EXPLORATORY VISUALISATION
ggplot(AirQuality_clean, aes(x = DateTime, y = `CO(GT)`)) +
  geom_line(color = "blue") +
  labs(
    title = "Time Series of Carbon Monoxide (CO)",
    x = "Time",
    y = "CO Concentration"
  ) +
  theme_minimal()

ggplot(AirQuality, aes(x = DateTime, y = `NO2(GT)`)) +
  geom_line(color="red") +
  labs(title="Time Series of Nitrogen Dioxide (NO2)",
       x="Time",
       y="NO2 Concentration")


ggplot(AirQuality, aes(x = T, y = `CO(GT)`)) +
  geom_point(alpha=0.4, color="darkgreen") +
  geom_smooth(method="lm") +
  labs(title="Relationship between Temperature and CO",
       x="Temperature",
       y="CO Levels")


ggplot(AirQuality, aes(x = RH, y = `NO2(GT)`)) +
  geom_point(alpha=0.4, color="purple") +
  geom_smooth(method="lm") +
  labs(title="Relationship between Humidity and NO2",
       x="Relative Humidity",
       y="NO2 Levels")



# TASK 3: CORRELATION ANALYSIS
pollutants <- AirQuality %>%
  select(`CO(GT)`, `NOx(GT)`, `NO2(GT)`, `C6H6(GT)`)

cor_matrix <- cor(pollutants, use="complete.obs")

cor_matrix

corrplot(cor_matrix,
         method="color",
         type="upper",
         tl.col="black",
         tl.srt=45)


pairs(pollutants,
      main="Scatterplot Matrix of Pollutants")


# TASK 4: HYPOTHESIS TESTING
AirQuality[AirQuality == -200] <- NA

# Remove rows with missing values in CO or Humidity
AirQuality_test <- AirQuality[!is.na(AirQuality$`CO(GT)`) & !is.na(AirQuality$RH), ]

# Calculate the median humidity value to split data into two groups
median_humidity <- median(AirQuality_test$RH, na.rm = TRUE)

# Create a categorical variable for humidity conditions
AirQuality_test$HumidityGroup <- ifelse(AirQuality_test$RH > median_humidity,
                                        "High", "Low")

# Convert to factor for statistical testing
AirQuality_test$HumidityGroup <- as.factor(AirQuality_test$HumidityGroup)

# Perform two-sample t-test
t_test_result <- t.test(`CO(GT)` ~ HumidityGroup, data = AirQuality_test)

# Display results
print(t_test_result)

ggplot(AirQuality_test, aes(x = HumidityGroup, y = `CO(GT)`, fill = HumidityGroup)) +
  geom_boxplot() +
  labs(title = "CO Levels under High vs Low Humidity",
       x = "Humidity Group",
       y = "CO Concentration") +
  theme_minimal()


# TASK 5: GROUP COMPARISON ACROSS SEASONS

AirQuality[AirQuality == -200] <- NA

AirQuality_season <- AirQuality[!is.na(AirQuality$`NO2(GT)`), ]

anova_model <- aov(`NO2(GT)` ~ Season, data = AirQuality_season)

summary(anova_model)

ggplot(AirQuality_season, aes(x = Season, y = `NO2(GT)`, fill = Season)) +
  geom_boxplot() +
  labs(title = "NO2 Levels Across Seasons",
       x = "Season",
       y = "NO2 Concentration") +
  theme_minimal()

