Statystyka w zarządzaniu (ALK) · wszystko ze skryptu 3.10.R (plik 3_10.docx) przełożone na prosty język + ćwiczenia pisania komend.
To dwie osobne rzeczy, które instaluje się razem:
.R, np. 3.10.R). Tu piszesz komendy i zapisujesz je na dysku. Samo napisanie linijki jeszcze jej nie uruchamia — musisz wcisnąć Cmd + Enter (Mac) lub Ctrl + Enter (Windows).
kasa, t). Od razu widzisz, jakie mają wartości.
## [1] ...).
barplot, hist), a w zakładce Help — opis funkcji (gdy wpiszesz np. ?hist).
[1] przed wynikiem w konsoli?mean(kasa), R odpowiada: [1] 4. To [1] w nawiasie kwadratowym nie jest częścią wyniku — to tylko numer porządkowy mówiący: „obok zaczyna się pierwszy element wyniku”. Gdy wynik ma 5 liczb, np. [1] 0.16 0.16 0.25 1.50 0.33, oznacza to, że wszystkie 5 to elementy wektora począwszy od pierwszego.| Zasada | Dobrze ✅ | Źle ❌ | Dlaczego |
|---|---|---|---|
1. Strzałka <- przypisuje wartość |
kasa <- c(1, 2, 3) |
kasa - c(1, 2, 3) |
Czytaj <- jako „włóż do pudełka o nazwie…”. Skrót klawiszowy: Option + - (Mac) / Alt + - (Win). |
| 2. Kropka w ułamkach, przecinek między liczbami | c(1.5, 2.5, 10) |
c(1,5; 2,5; 10) |
W R kropka oddziela części dziesiętne (1.5 = półtora), a przecinek oddziela kolejne elementy lub argumenty funkcji. |
| 3. Tekst zawsze w cudzysłowie | c("smartfon", "laptop") |
c(smartfon, laptop) |
Bez cudzysłowu R myśli, że smartfon to nazwa zmiennej i szuka jej w pamięci (wyskoczy błąd object not found). |
| 4. Nawiasy okrągłe vs kwadratowe | mean(kasa)kasa[3] |
mean[kasa]kasa(3) |
Okrągłe ( ) = uruchom funkcję.Kwadratowe [ ] = wyciągnij element z podanej pozycji. |
5. Wielkość liter ma znaczenie + znak # |
mean(kasa)# komentarz |
Mean(Kasa) |
Dla R kasa i Kasa to dwie różne nazwy. Wszystko po znaku # to komentarz (notatka dla Ciebie, R ją ignoruje). Cztery myślniki na końcu komentarza (# sekcja ----) robią nagłówek rozdziału w RStudio. |
c() i wyciąganie elementów [ ] (cz. 1 skryptu z zajęć)Podstawową strukturą w R jest wektor — czyli po prostu ciąg wartości tego samego typu (np. kolumna danych o jednej zmiennej dla kolejnych osób). Tworzymy go funkcją c() (od ang. combine — połącz).
W skrypcie z zajęć (3.10.R) pierwsza zmienna to czas bez telefonu przed snem (w minutach) u 5 osób:
# wektor c() ---- ## wektor numeryczny ---- czas_bez_tel_sen <- c(10, 10, 15, 90, 20) mean(czas_bez_tel_sen) ## [1] 29 czas_bez_tel_sen / 60 ## [1] 0.1666667 0.1666667 0.2500000 1.5000000 0.3333333
mean(czas_bez_tel_sen) liczy średnią arytmetyczną: $(10+10+15+90+20)/5 = 145/5 = 29$.czas_bez_tel_sen / 60 — bardzo ważna cecha R: jeśli podzielisz wektor przez liczbę (tu: przez 60 minut, żeby przeliczyć czas na godziny), R automatycznie podzieli każdy element po kolei przez 60 ($10/60 \approx 0{,}167\text{ h}$, $90/60 = 1{,}5\text{ h}$ itd.).czas_bez_tel_sen / 60 wypisuje wynik na ekranie, ale nie zmienia zmiennej czas_bez_tel_sen (żeby zapisać wynik na stałe, trzeba by użyć <-).[ ]Drugi przykład z zajęć to wektor z nazwami urządzeń:
## wektor tekstowy ---- jakie_urzadzenie_najcz <- c("smartfon", "laptop", "komputer", "tablet", "inne") jakie_urzadzenie_najcz[3] ## [1] "komputer" jakie_urzadzenie_najcz[c(1, 3)] ## [1] "smartfon" "komputer"
[ ]:
"smartfon", 2 = "laptop", 3 = "komputer", 4 = "tablet", 5 = "inne").jakie_urzadzenie_najcz[3] → wyciąga 3. element ("komputer").jakie_urzadzenie_najcz[c(1, 3)] → wyciąga element 1. oraz 3.jakie_urzadzenie_najcz[c(1, 3)], a nie jakie_urzadzenie_najcz[1, 3]?[wiersz, kolumna] z samym przecinkiem służy w R do tabel dwuwymiarowych. Wektor ma tylko jeden wymiar, więc podajemy mu wektor pozycji za pomocą c(1, 3)!kasa)Trzecia część skryptu 3.10.R to dokładnie te same dane, które były rozpisane na tablicy (wolne środki w tys. zł u 10 osób):
## wektor kasa ---- kasa <- c(1, 1, 2, 2, 3, 3, 6, 6, 6, 10) # miary tendencji centralnej ---- ## średnia ---- mean(kasa) ## [1] 4 ## mediana ---- median(kasa) ## [1] 3 ## rozkład liczebności, rozkład częstości i dominanta ---- table(kasa) # rozkład liczebności ## kasa ## 1 2 3 6 10 ## 2 2 2 3 1 prop.table(table(kasa)) # rozkład częstości ## kasa ## 1 2 3 6 10 ## 0.2 0.2 0.2 0.3 0.1 t <- table(kasa) prop.table(t) ## kasa ## 1 2 3 6 10 ## 0.2 0.2 0.2 0.3 0.1
table(kasa) i prop.table(t)?R wypisuje tabelę w dwóch wierszach:
| Wiersz w R | Co oznacza na tablicy | Wartości |
|---|---|---|
Górny wiersz (pod napisem kasa) | Warianty zmiennej $x_i$ (jakie kwoty padały) | 1 2 3 6 10 |
Dolny wiersz w table(kasa) | Liczebności $n_i$ (ile osób ma daną kwotę) | 2 2 2 3 1 (razem $N = 10$) |
Dolny wiersz w prop.table(t) | Częstości względne $n_i' = n_i/N$ = $P(X=x_i)$ | 0.2 0.2 0.2 0.3 0.1 (razem $1.0$) |
mode(kasa) w R nie liczy dominanty, tylko sprawdza typ danych i wypisze "numeric"!). Aby znaleźć dominantę, robisz table(kasa), szukasz największej liczebności w dolnym wierszu (3) i patrzysz, jaka wartość stoi nad nią w górnym wierszu (6). Dominanta $Mo = 6$, a jej częstość względna z prop.table to $0{,}3$.prop.table(table(kasa)), a nie prop.table(kasa)!prop.table() oczekuje w środku tabeli liczebności (dlatego piszemy prop.table(table(kasa)) albo najpierw zapisujemy t <- table(kasa) i potem prop.table(t)). Gdybyś wpisała prop.table(kasa), R podzieliłby każdą liczbę przez sumę kwot ($40$), a nie przez liczbę osób ($10$)!barplot() a hist() (cz. 3 skryptu z zajęć)Na końcu zajęć pojawiły się dwa podstawowe wykresy:
# wykresy (cz.1) ---- ## wykres słupkowy a histogram barplot(t) hist(kasa) hist(kasa, main="wolne środki miesięcznie u 10 osób", xlab="kwota w tys zł", col="blue", border="green")
barplot(t) — wykres słupkowyt (czyli table(kasa)), a nie sam wektor!hist(kasa) — histogramkasa (nie tabelę!).| Argument | Skąd nazwa | Co robi w przykładzie z zajęć |
|---|---|---|
main = "..." | main title | Tytuł główny nad wykresem: main="wolne środki miesięcznie u 10 osób" |
xlab = "..." | X axis label | Podpis osi poziomej (X): xlab="kwota w tys zł" (analogicznie ylab podpisuje oś pionową Y) |
col = "..." | color | Kolor wypełnienia słupków: col="blue" |
border = "..." | border | Kolor obramowania (krawędzi) słupków: border="green" |
"blue", "green", tytuł) muszą być w cudzysłowie " ".| Co chcesz zrobić | Komenda w R | Na co uważać |
|---|---|---|
| Utworzyć wektor liczbowy | x <- c(10, 10, 15, 90, 20) | Przecinki między liczbami, kropka w ułamku |
| Utworzyć wektor tekstowy | u <- c("smartfon", "laptop") | Każde słowo w cudzysłowie " " |
| Podzielić każdy element przez 60 | x / 60 | Działa na całym wektorze naraz |
| Wyciągnąć 3. element wektora | u[3] | Nawias kwadratowy [ ], numeracja od 1 |
| Wyciągnąć 1. i 3. element wektora | u[c(1, 3)] | W środku [ ] musi być c(1, 3) |
| Policzyć średnią ($\bar{x}$) | mean(kasa) | Tylko dla wektora liczbowego |
| Policzyć medianę ($Me$) | median(kasa) | R sam posortuje dane w tle |
| Tabela liczebności ($n_i$) i dominanta ($Mo$) | t <- table(kasa) | Patrzysz, która wartość ma największą liczebność |
| Tabela częstości względnych ($n_i'$) | prop.table(t) lub prop.table(table(kasa)) | W środku musi być wynik table()! |
| Wykres słupkowy | barplot(t) | Przyjmuje tabelę t |
| Histogram | hist(kasa) | Przyjmuje surowy wektor liczbowy kasa |
| Histogram z tytułem i kolorami | hist(kasa, main="...", xlab="...", col="blue", border="green") | Napisy i kolory w " " |
Wpisz dokładną komendę w R (spacje wokół <- i po przecinkach są dowolne). Cel: seria 10 poprawnych komend z rzędu.
Sprawdź, czy nie dasz się złapać na typowe pułapki z R.
Sprawdziłem na Twoim komputerze — obecnie nie masz jeszcze zainstalowanego R ani RStudio. Jeśli chcesz mieć je u siebie na laptopie przed zajęciami, instaluje się je w 2 krokach (oba programy są darmowe):
R-4.x.x-arm64.pkg (dla Maca z procesorem Apple M1/M2/M3/M4) lub x86_64.pkg (dla starszego Maca Intel) i kliknij „Dalej” jak przy zwykłym programie..dmg) i przeciągnij ikonę RStudio do folderu Applications.Mogę też zainstalować oba programy automatycznie z terminala (przez Homebrew), jeśli będziesz chciała.