# Data Frame - dąży do tego, aby wewnątrz były takie same typy danych df <-data.frame(Name =c("Anna", "Jan", "Zofia"),Age =c(25, 30, 22),Score =c(88, 92, 95) )# Lista - zawiera wiele tabel, lub tabele w ktorych nie trzeba mieć równych wektorow lub macierzy, można w niej trzymać różne typy danych list_example <-list(data = df,vector =c(1, 2, 3),single_value =42 )# Wskaźnikowanie df[1, 2] # Wartość w 1. wierszu, 2. kolumnie
[1] 25
df$Name # Kolumna "Name"
[1] "Anna" "Jan" "Zofia"
list_example$data # Odwołanie do elementu listy
Name Age Score
1 Anna 25 88
2 Jan 30 92
3 Zofia 22 95
# Załadowanie zestawu danych Irisdata(iris)# Usuwanie kolumny Species iris_data <- iris[, 1:4]# Normalizacja danych (standaryzacja) - średnia = 0, odchylenie standardowe = 1 iris_data_scaled <-scale(iris_data)# Wykonanie analizy PCA pca_result <-prcomp(iris_data_scaled, center =TRUE, scale. =TRUE)# Wyświetlanie wyników analizy PCAsummary(pca_result)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.7084 0.9560 0.38309 0.14393
Proportion of Variance 0.7296 0.2285 0.03669 0.00518
Cumulative Proportion 0.7296 0.9581 0.99482 1.00000
Jak widać PC1 jest odpowiedzialne za największą część rozproszenia danych (odchylenie standardowe wyszło 1.71 or whatever)
92.46% całkowitej wariancji jest wyjaśnione przez pierwszą składową PC1
Cumulative Proportion - Pokazuje, jaka część całkowitej wariancji jest wyjaśniona przez wszystkie składowe do danej włącznie.
Jest to suma wartości w kolumnie Proportion of Variance od pierwszej do bieżącej składowej.
PC1 + PC2: Kumulowana proporcja wynosi 0.9779, co oznacza, że pierwsze dwie składowe razem wyjaśniają 97.79% wariancji w danych.
PC3 + PC4: Kumulowana proporcja wynosi 1.0000, co oznacza, że wszystkie cztery składowe razem wyjaśniają całą wariancję w danych.
# Wykres liniowyggplot(iris, aes(x = Sepal.Width, y = Sepal.Length)) +geom_line(color ="blue") +labs(title ="Wykres liniowy długości i szerokości płatka",x ="Szerokość płatka (Sepal.Width)", y ="Długość płatka (Sepal.Length)")
Histogram
# Histogram dla długości płatka (Sepal.Length)ggplot(iris, aes(x = Sepal.Length)) +geom_histogram(binwidth =0.2, fill ="lightgreen", color ="darkgreen") +labs(title ="Histogram długości płatka (Sepal.Length)", x ="Długość płatka (Sepal.Length)", y ="Częstotliwość")
Scatterplot
# Scatterplot dla długości płatka i szerokości płatkaggplot(iris, aes(x = Sepal.Width, y = Sepal.Length, color = Species)) +geom_point() +labs(title ="Scatterplot długości i szerokości płatka",x ="Szerokość płatka (Sepal.Width)", y ="Długość płatka (Sepal.Length)") +theme_minimal()
# Scatterplot z kolorami i kształtami punktówggplot(iris, aes(x = Sepal.Width, y = Sepal.Length, color = Species, shape = Species)) +geom_point(size =4) +# Ustawiamy wielkość punktówlabs(title ="Scatterplot z kolorem i kształtem",x ="Szerokość płatka (Sepal.Width)", y ="Długość płatka (Sepal.Length)") +theme_minimal()
ANOVA (Analiza Wariancji)
ANOVA to metoda statystyczna służąca do porównywania średnich trzech lub więcej grup, aby sprawdzić, czy istnieją między nimi istotne różnice.
1. Podstawowe założenia ANOVA
Hipotezy: - H₀: Średnie wszystkich grup są równe (brak różnic). - H₁: Przynajmniej jedna średnia różni się od pozostałych.
Założenia: - Normalność: Dane w grupach mają rozkład normalny (sprawdzane np. testem Shapiro-Wilka). - Jednorodność wariancji: Wariancje w grupach są podobne (sprawdzane np. testem Levene’a). - Niezależność obserwacji: Dane z różnych grup są od siebie niezależne.
2. Rodzaje ANOVA
Jednoczynnikowa ANOVA: Analizuje wpływ jednej zmiennej niezależnej (np. rodzaj nawozu) na zmienną zależną (np. wzrost roślin).
Przykład: Porównanie wzrostu roślin przy użyciu trzech nawozów (A, B, C).
3. Statystyka F
Wariancja międzygrupowa (MSbetween): Mierzy różnice między średnimi grup.
Wariancja wewnątrzgrupowa (MSwithin): Mierzy zmienność wewnątrz grup.
Statystyka F = MSbetween / MSwithin.
Im wyższe F, tym większe prawdopodobieństwo, że różnice między grupami są istotne.
Df Sum Sq Mean Sq F value Pr(>F)
nawóz 2 500.0 250.00 139.8 5.71e-15 ***
Residuals 27 48.3 1.79
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Wynik: Jeśli p < 0.05, odrzucamy H₀ i przyjmujemy, że istnieją istotne różnice między grupami.
d. Testy post-hoc (np. Tukey HSD)
Jeśli ANOVA jest istotna, sprawdzamy, które grupy się różnią:
TukeyHSD(model)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = wzrost ~ nawóz, data = dane)
$nawóz
diff lwr upr p adj
B-A 5 3.516948 6.483052 0
C-A -5 -6.483052 -3.516948 0
C-B -10 -11.483052 -8.516948 0
e. Wizualizacja wyników
# Wizualizacja wyników testu Tukeyaplot(TukeyHSD(model))
5. Jeśli założenia nie są spełnione
Alternatywy: - Transformacja danych (np. logarytmiczna). - Test nieparametryczny: Kruskala-Wallisa (odpowiednik ANOVA dla danych nieparametrycznych).
kruskal.test(wzrost ~ nawóz, data = dane)
Kruskal-Wallis rank sum test
data: wzrost by nawóz
Kruskal-Wallis chi-squared = 25.928, df = 2, p-value = 2.344e-06
6. Interpretacja wyników
Przykład: - Jeśli ANOVA dla nawozów A, B, C dała p = 0.015, oznacza to istotne różnice między grupami. - Test Tukey’a może pokazać, że np. nawóz B vs. A ma p = 0.012, a C vs. A p = 0.851 – czyli różni się tylko B od A.
6. Analiza skupień
Analiza skupień (clustering) pozwala na grupowanie obiektów o podobnych cechach.
Metody:
K-means: Grupowanie na podstawie średnich.
Hierarchiczne grupowanie: Tworzenie drzewa dendrogramu.
#t.test(wzrost ~ nawóz, data = dane, var.equal = TRUE)
9. Interpretacja wyników
Przykład: - Jeśli ANOVA dla nawozów A, B, C dała p = 0.015, oznacza to istotne różnice między grupami. - Test Tukey’a może pokazać, że np. nawóz B vs. A ma p = 0.012, a C vs. A p = 0.851 – czyli różni się tylko B od A.
Podsumowanie
ANOVA odpowiada na pytanie: Czy istnieją różnice między średnimi grup?
Testy post-hoc (np. Tukey) pokazują, które konkretnie grupy się różnią.
W R używaj:aov(), summary(), TukeyHSD(), pamiętając o sprawdzeniu założeń.
Analiza skupień pozwala na wykrycie naturalnych grup w danych.