Do zaliczenia przedmiotu wybrałam zbiór danych R “crabs”. Można go znaleźć w pakiecie “MASS”.
# zainstalować pakiet "MASS"
library(MASS)
data("crabs")
head(crabs)
## sp sex index FL RW CL CW BD
## 1 B M 1 8.1 6.7 16.1 19.0 7.0
## 2 B M 2 8.8 7.7 18.1 20.8 7.4
## 3 B M 3 9.2 7.8 19.0 22.4 7.7
## 4 B M 4 9.6 7.9 20.1 23.1 8.2
## 5 B M 5 9.8 8.0 20.3 23.0 8.2
## 6 B M 6 10.8 9.0 23.0 26.5 9.8
Zbiór “crabs” z pakietu “MASS” przedstawia pomiary morfologiczne 200 krabów Leptografsus.
# dzięki temu można znaleźć szczegółowe informacje na temat tego zbioru zadań
??crabs
## uruchamianie serwera httpd dla pomocy ... wykonano
# dzięki temu możemy zobaczyć podsumowanie danych zawartych w zbiorze
summary(crabs)
## sp sex index FL RW CL
## B:100 F:100 Min. : 1.0 Min. : 7.20 Min. : 6.50 Min. :14.70
## O:100 M:100 1st Qu.:13.0 1st Qu.:12.90 1st Qu.:11.00 1st Qu.:27.27
## Median :25.5 Median :15.55 Median :12.80 Median :32.10
## Mean :25.5 Mean :15.58 Mean :12.74 Mean :32.11
## 3rd Qu.:38.0 3rd Qu.:18.05 3rd Qu.:14.30 3rd Qu.:37.23
## Max. :50.0 Max. :23.10 Max. :20.20 Max. :47.60
## CW BD
## Min. :17.10 Min. : 6.10
## 1st Qu.:31.50 1st Qu.:11.40
## Median :36.80 Median :13.90
## Mean :36.41 Mean :14.03
## 3rd Qu.:42.00 3rd Qu.:16.60
## Max. :54.60 Max. :21.60
Za pomocą tej komendy możemy podsumować dane dotyczące każdej kolumny. W pierwszej zostały zliczone kraby ze względu na gatunek, w drugiej ze względu na płeć. Z pozostałych kolumn dane zostały podsumowane i wyliczone wyszczególniając:
Za pomocą programu R możemy wykonać różne wykresy, które pomogą nam przedstawić i porównać dane zawarte w wybranym zbiorze.
# tworzymy macierz z danymi podzielonymi na gatunek i płeć
gatunek_i_plec=table(crabs$sp, crabs$sex)
# tworzymy wykres słupkowy z różnymi kolorami dla każdej płci
barplot(gatunek_i_plec, main="Liczba krabów ze względu na gatunek i płeć", col=c("deepskyblue1", "darkorange1"), border="black", beside=TRUE, legend=TRUE)
Na podstawie tego wykresu można stwierdzić, że ilość krabów płci męskiej i żeńskiej jest równa i wynosi po 50. Możemy także powiedzieć, że liczba krabów ze względu na gatunek również jest równa.
# dzięki temu mamy obszar na dwa wykresy w jednym rzędzie
par(mfrow=c(2,1))
# tworzymy wykres dla gatunku "O"
gatunek_o=table(crabs$FL[crabs$sp=='O'])
barplot(gatunek_o, main="Rozkład długości płata czołowego krabów z gatunku O", xlab="Długość płata czołowego", ylab="Liczba krabów", col="darkorange1")
# tworzymy wykres dla gatunku "B"
gatunek_b=table(crabs$FL[crabs$sp=='B'])
barplot(gatunek_b, main="Rozkład długości płata czołowego krabów z gatunku B", xlab="Długość płata czołowego", ylab="Liczba krabów", col="deepskyblue1")
tapply(crabs$FL, crabs$sp, mean)
## B O
## 14.056 17.110
Możemy stwierdzić, że średnia długość płatu czołowego wśród krabów z gatunku “O” jest większa niż “B”.
tapply(crabs$FL, crabs$sex, mean)
## F M
## 15.432 15.734
Dzięki użyciu tej funkcji możemy obliczyć także wartości dla innych podziałów. Teraz możemy stwierdzić, że średnia długość płatu czołowego dla męskich i żeńskich krabów jest zbliżona, jednkaże u męskich jest minimalnie większa.
t.test(crabs$BD ~ crabs$sp)
##
## Welch Two Sample t-test
##
## data: crabs$BD by crabs$sp
## t = -6.5823, df = 197.86, p-value = 4.065e-10
## alternative hypothesis: true difference in means between group B and group O is not equal to 0
## 95 percent confidence interval:
## -3.762328 -2.027672
## sample estimates:
## mean in group B mean in group O
## 12.583 15.478
p-value=4.065e-10 > 0.05
Przyjmując poziom istotności 0.05, nie mamy wystarczających dowodów, aby odrzucić hipotezę zerową, mówiącą, że średnie głębokości korpusu wśród róznych gatunków krabów są istotnie różne.
cor(crabs$CL, crabs$CW)
## [1] 0.9950225
Korelacja jest bliska 1 zatem oznacza to, że długość i szerokość pancerza rosną razem, co sugeruje dodatnią korelację.
srednie_sp=aggregate(cbind(FL, RW, CL, CW, BD)~sp, data=crabs, mean)
srednie_sp
## sp FL RW CL CW BD
## 1 B 14.056 11.928 30.058 34.717 12.583
## 2 O 17.110 13.549 34.153 38.112 15.478
Na podstawie danych z tych tabel mamy możliwość porównywania średnich dla różnych zmiennych w zależności od gatunku krabów.
gatunki=srednie_sp$sp
wielkosc_plata_czolowego=srednie_sp$FL
szerokosc_tylna=srednie_sp$RW
dlugosc_pancerza=srednie_sp$CL
szerokosc_pancerza=srednie_sp$CW
glebokosc_korpusu=srednie_sp$BD
# ustalamy obszaru wykresów
par(mfrow=c(2,3))
barplot(wielkosc_plata_czolowego, names.arg=gatunki, main="Średnia wielkość płata czołowego", col="dodgerblue", border="black")
barplot(szerokosc_tylna, names.arg=gatunki, main="Średnia szerokość tylna", col="dodgerblue1", border="black")
barplot(dlugosc_pancerza, names.arg=gatunki, main="Średnia długość pancerza", col="dodgerblue2", border="black")
barplot(szerokosc_pancerza, names.arg=gatunki, main="Średnia szerokość pancerza", col="dodgerblue3", border="black")
barplot(glebokosc_korpusu, names.arg=gatunki, main="Średnia głębokość korpusu", col="dodgerblue4", border="black")
srednie_sex=aggregate(cbind(FL, RW, CL, CW, BD)~sex, data=crabs, mean)
srednie_sex
## sex FL RW CL CW BD
## 1 F 15.432 13.487 31.360 35.830 13.724
## 2 M 15.734 11.990 32.851 36.999 14.337
Na podstawie danych z tych tabel mamy możliwość porównywania średnich dla różnych zmiennych w zależności od płci krabów.
gatunkis=srednie_sp$sp
wielkosc_plata_czolowegos=srednie_sex$FL
szerokosc_tylnas=srednie_sex$RW
dlugosc_pancerzas=srednie_sex$CL
szerokosc_pancerzas=srednie_sex$CW
glebokosc_korpusus=srednie_sex$BD
# ustalamy obszaru wykresów
par(mfrow=c(2,3))
barplot(wielkosc_plata_czolowegos, names.arg=gatunki, main="Średnia wielkość płata czołowego", col="dodgerblue", border="black")
barplot(szerokosc_tylnas, names.arg=gatunki, main="Średnia szerokość tylna", col="dodgerblue1", border="black")
barplot(dlugosc_pancerzas, names.arg=gatunki, main="Średnia długość pancerza", col="dodgerblue2", border="black")
barplot(szerokosc_pancerzas, names.arg=gatunki, main="Średnia szerokość pancerza", col="dodgerblue3", border="black")
barplot(glebokosc_korpusus, names.arg=gatunki, main="Średnia głębokość korpusu", col="dodgerblue4", border="black")
lm_model=lm(FL~CW+sex, data = crabs)
summary(lm_model)
##
## Call:
## lm(formula = FL ~ CW + sex, data = crabs)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.08735 -0.73501 0.01997 0.76249 1.76792
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.046241 0.310331 0.149 0.882
## CW 0.429410 0.008275 51.892 <2e-16 ***
## sexM -0.199980 0.129955 -1.539 0.125
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9164 on 197 degrees of freedom
## Multiple R-squared: 0.932, Adjusted R-squared: 0.9313
## F-statistic: 1349 on 2 and 197 DF, p-value: < 2.2e-16
p-values=2.2e-16 > 0.05
Przyjmując poziom istotności na poziomie 0.05 nie możemy stwierdzić, czy można przewidzieć jedną zmienną na podstawie innych przy wykorzystaniu wielkości płata czołowego, szerokości pancerza oraz płci krabów.