Prijevod jednadžbi u R
Damir Ćavar, ožujak 2010.
U ovom poglavlju prevodit ćemo neke tipične jednadžbe u R. Kao primjer možemo početi s jednadžbom za varijancu:
LaTeX kod jednadžbe je: S^2_{N-1}=\frac{1}{N-1}\sum_{i=1}^N{(x_i - \bar{x})^2}
Što jednadžba znači je:
a. Ako imamo vektor s vrijednostima (eksperimentalni rezultati ili mjere) dužine N, kao npr.:
x <- c(1, 2, 4, 5, 6, 8, 9)
U ovom slučaju je x dužine 7, znači N = 7, što se može provjeriti sa sljedećom funkcijom u R-u:
length(x)
b. od svake vrijednosti u vektoru x (od početka, indeks i = 1, do kraja, indeks i = N = 7) odbijamo aritmetičku sredinu i kvadriramo rezultat:
Aritmetičku sredinu dobijemo sa sljedećom funkcijom u R-u:
mean(x)
Oduzimanje i kvadriranje može se u R-u računati na sljedeći način:
(x - mean(x))^2
Rezultirajući vektor za x, kako smo ga gore definirali, bio bi:
16 9 1 0 1 9 16
c. Zbrajamo sve vrijednosti u rezultirajućim vektoru i dijelimo kroz (N - 1).
Zbrajanje vrijednosti u vektoru možemo postići s funkcijom sum() u R-u:
sum(x)
Rezultat za x, kao što je gore definiran, bio bi:
35
Kako bi dovršili izračun iz koraka u a. i b., dio jednadžbe možemo prevesti kao:
sum( (x - mean(x))^2 )
Rezultat tog izračuna za definirani x bio bi u R-u:
52
Konačni korak bio bi dijeljenje tog rezultata kroz N - 1, a N se dobije s funkcijom length(N):
sum( (x - mean(x))^2 ) / (length(x) - 1)
Rezultat je:
8.666667
To je varijanca mijera u x vektoru.
Možemo tu jednadžbu definirati kao funkciju u R-u i sačuvati ju u nekoj datoteci, kako bi ju mogli opet korisiti i pozivati. Funkcija se definira na sljedeći način:
s2variance <- function (x) { sum( (x - mean(x))^2 ) / (length(x) - 1) }
s2variance je definirana funkcija koja očekuje jedan parametar, tj. vektor s vrijednostima, mjerama ili rezultatima. Ta funkcija vraća varijancu za neke mjere, kao što je prethodno objašnjeno. Npr.:
s2variance( c(3, 5, 1, 1, 2, 1, 0, 4) )
Rezultat pozivanja te funkcije s tim vektorom bio bi:
2.982143
Činjenica je da R već nudi tu funkciju za izračun varijance, što je objašnjeno u prethodnom poglavlju (funkcija var), tako da:
var( c(3, 5, 1, 1, 2, 1, 0, 4) )
ima rezultat kao naša funkcija:
2.982143
Jedna varijanta te jednadžbe je jednadžba za varijancu populacije:
LaTeX kod za tu jednadžbu je: S^2_N=\frac{1}{N}\sum_{i=1}^N{(x_i - \bar{x})^2}
Jedina razlika je da se na kraju ne dijeli kroz N - 1, nego samo kroz N, kao u sljedećem prijevodu u R:
sum( (x - mean(x))^2 ) / length(x)
Kao sljedeći primjer uzet ćemo jednadžbu za standardnu devijaciju:
LaTeX kod za to jednadžbu je: \sigma = \sqrt{ \frac{1}{N} \sum_{i=1}^N{ (x_i - \bar{x})^2 }}
Ta jednadžba uzima korijen od varijance populacije. R kod je:
sqrt( sum( (x - mean(x))^2 ) / length(x) )
Možemo deklarirati funkciju za sačuvanje i deljne korištenje, i sačuvati tu deklaraciju u nekoj datoteci:
sdd <- function (x) { sqrt( sum( (x - mean(x))^2 ) / length(x) ) }
Tako definiranu funkciju možemo pozvati na sljedeći način:
sdd(x)
Taj poziv, za definirani x, vratio bi sljedeći rezultat:
2.725541
Ako zamislimo jednu slučajnu varijablu X, možemo ju definirati kao vektor s vjerojatnostima:
x <- c(0.1, 0.3, 0.15, 0.25, 0.01, 0.08, 0.01, 0.06, 0.04)
Vektor x je kompletna lista svih mogućih vjerojatnosti nekoh događaja tako da zbrajanje svih vjerojatnosti u x-u točno 1, što se može provjeriti u R-u:
sum(x)
Ako pogledamo kao je definirana Shannonova entropija:
LaTeX kod te jednadžbe je: H(X) = -\sum_{i=1}^n{p(x_i)log_b p(x_i)}
Ta jednadžba se riješava na način da se sve vjerojatnosti nekog događaja, jedne slučajne varijable X, množe s logaritmom te iste vjerojatnosti, zbrajaju i na kraju s -1 množe. U ovom slučaju koristimo logaritam na osnovi 2, što je u R-u:
log2(x)
Kako naš vektor x sadrži vjerojatnosti (što znači p(x)) množenje svake vrijednosti u x-u s logaritmom te iste vrijednosti možemo u R-u opisati kao:
x * log2(x)
Za naš x rezultat bi bio:
-0.33219281 -0.52108968 -0.41054484 -0.50000000 -0.06643856 -0.29150850 -0.06643856 -0.24353362 -0.18575425
Zbrajanje svih tih vrijednosti u R-u dobijemo s funkcijom sum():
sum(x * log2(x))
i apsolutnu vrijednost rezultata dobijemo kroz množenje s -1, što bi u R-u bilo:
-sum(x * log2(x))
Razlog zašto je rezultat zbrajanja umnoška uvjek negativan je, zato što je logaritam vjerojatnosti (znači jedne vrijednosti manjoj od 1) uvjek negativan.