# Zadatak 1: ANOVA test (ručno) za duljine lapova 

#Informacije o bazi
summary(iris)
head(iris)


boxplot(iris$Sepal.Length~iris$Species, main="Perunike", xlab="Vrste", ylab="Duljina lapa")

setosa <- subset(iris, Species == "setosa")
setosa
mu_1 <- mean(setosa$Sepal.Length)
versicolor <- subset(iris, Species == "versicolor")
versicolor
mu_2 <- mean(versicolor$Sepal.Length)
virginica <- subset(iris, Species == "virginica")
virginica
mu_3 <- mean(virginica$Sepal.Length)
mu <- mean(iris$Sepal.Length)

# 2
SSF <- 50 * (mu_1 - mu)^2 + 50 * (mu_2 - mu)^2 + 50 * (mu_3 - mu)^2
SSF
df_f <- 3 - 1
MSF <- SSF / df_f
MSF

# 3
SSE <- sum((setosa$Sepal.Length - mu_1)^2) + sum((versicolor$Sepal.Length - mu_2)^2) + sum((virginica$Sepal.Length - mu_3)^2)
SSE
df_e <- 150 - 3
MSE <- SSE / df_e
MSE

# 4
SS <- SSF + SSE
SS
df <- df_f + df_e
df
F <- MSF / MSE
F

# 5
sepal_lenght_aov <- aov(Sepal.Length ~ Species, data = iris)
summary(sepal_lenght_aov)
#p = <2e-16 Nisu jednake po vrstama kao što smo naslutili iz boxplota

##########################################

#Zadatak 2. Perunika - Levene test za varijance

#instaliramo paket za leveneTest

install.packages(c("car"))
library(car)
leveneTest(Sepal.Length ~ Species, data = iris)
#p = 0.002259 Nisu jednake varijance

oneway.test(Sepal.Length ~ Species, data = iris, var.equal=FALSE)
#p-value < 2.2e-16 Nisu jednake duljine lapova

##########################################

#Zadatak 4. Utjecaj kofeina na oprašivače

#1
#Populacije su brojevi 50,100,150,200, a Levene test nam traži kategorološke varijable za populacije
#Stoga radimo konverziju
ppm <- as.factor(kofein$ppmCaffeine)
data_kofein <- data.frame(ppmCaffeine = ppm, consumptionDifferenceFromControl = kofein$consumptionDifferenceFromControl)
colnames(data_kofein) <- c("ppmCaffeine", "consumptionDifferenceFromControl")
print(data_kofein)

leveneTest(data_kofein$consumptionDifferenceFromControl ~ data_kofein$ppmCaffeine, data=data_kofein)
#p=0.8227 Nema razlike u varijancama => ANOVA

#2
kofein_aov <- aov(data_kofein$consumptionDifferenceFromControl ~ data_kofein$ppmCaffeine, data=data_kofein )
summary(kofein_aov)
#p=0.0231

#3
boxplot(data_kofein$consumptionDifferenceFromControl ~ data_kofein$ppmCaffeine)
TukeyHSD(kofein_aov)
#Srednje vrijednosti za tretman "100", i tretmane "150" i "200" spadaju u različite grupe
#(iz grafa, i iz p-vrijednosti 0.0482052, 0.0472406, 0.9999996)
#dok mjesto srednje vrijednosti tretmana "50" je nejasno,
#jer se ne može statistički razlikovati ni od jedne grupe
#(p-vrijednosti 0.7809455,0.2534122, 0.2493712 ne odbacuju hipotezu o jednakosti sr.vr.)