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.