# 5. zadatak # Iz paketa SenSrivastava ucitavamo bazu E1.19 # Ako paket nije instaliran, odkomentarisati narednu liniju i jednom pokrenuti: #install.packages('SenSrivastava') library(SenSrivastava) podaci = E1.19 View(podaci) ?E1.19 # Imamo 3 promenljive u bazi: Cena knjige, broj stranica i podatak da li je # knjiga ukoricena ili nije. # Napravicemo model koji procenjuje cenu knjige u odnosu na druge dve # promenljive. #a) # Kada pravimo model sa vise nezavisnih promenljivih, sa desne strane ~ dodajemo # + izmedju njih. model = lm(Price ~ P + B, data = podaci) summary(model) # Interpretacija modela: # Model sada ima vise koefijenata, ima slobodan clan, koeficijent uz P, odnosno # broj stranica, i koeficijent uz Bp. B jeste ukoricenost knjige, i Bp onda # predstavlja podatak da li je B jednako p, odnosno da li knjiga ima papirne # korice (nije ukoricena). # Model je sad oblika Cena = 20.601879 - 13.041164(ako knjiga nije ukoricena) + 0.026805*(broj strana) # Ovo moze ovako da se shvati: Pocetna cena knjige je $20.6, onda, ako # knjiga nije ukoricena oduzimamo $13.04 od te cene, i dodajemo $0.027 dolara za # svaku stranicu knjige. # Testiranje hipoteza: # Hipoteze koje testiramo u linearnim modelima su oblika # H0: koeficijent je jednak nuli protiv H1: koeficijent je razlicit od 0 # Da je neki koeficijent jednak nuli u stvari znaci da ta nezavisna promenljiva # ne utice na zavisnu. summary(model) # P-vrednosti ovih testova mogu da se citaju u poslednjog koloni summary-ja: # P-vrednost testa za P(broj stranica) je 0.00147, sto je jako malo, pa # prihvatamo H1 da broj stranica stvarno utice na cenu knjige, da zavisnost # nije samo slucajna. # P-vrednost testa za B(ukoricenost) je 2.27e-09, pa smo jos sigurniji # da ukoricenost stvarno utice na cenu knjige. #b) 13.041164. #v) predict(model, data.frame(P = 100, B = 'c')) #g) # Nalazimo 90% interval predvidjanja, jer on sa verovatnocom 90% obuhvata # cenu slucajno odabrane knjige sa datim vrednostima prediktora. predict(model, data.frame(P = 200, B = 'p'), interval = 'pred', level = 0.9) # Peri je potrebno 17.46715 dolara kako bi bio 90% siguran da ce imati dovoljno # novca. # 6. zadatak # U paketu carData postoji baza Salaries, koja ima podatke o platama raznih # profesora na nekom americkom univerzitetu. Podaci su prikupljeni sa ciljem # da se odrzava ravnopravna zarada izmedju muskih i zenskih profesora na # fakultetu. #install.packages(carData) library(carData) # Pregled baze: View(Salaries) ?Salaries #a) # Prosecne plate muskih i zenskih profesora mozemo da uporedimo sa testom # jednakosti dve populacije normalnih raspodela, odnosno t.test-om. # Potrebno je samo da izvucemo te dve populacije iz baze. Naredni kod to radi: # (nije potrebno da se uci): plate_M = Salaries[Salaries$sex == 'Male',]$salary plate_Z = Salaries[Salaries$sex == 'Female',]$salary # Prvo testiramo jednakost disperzija: var.test(plate_M, plate_Z) # P-vrednost je iznad 0.2, pa dalje pretpostavljamo da su disperzije jednake. # Testiramo jednakost srednjih vrednosti: t.test(plate_M, plate_Z, var.equal = TRUE) # Vidimo da je prosek muskih plata 115090.4, a zenskih 101002.4 i da je # p-vrednost 0.005667, sto je jako malo. Zakljucujemo da postoji znacajna # razlika u platama muskaraca i zena na fakultetu. # Ovaj isti test smo mogli preko modela da uradimo: # Pravimo model plate u odnosu na pol. # Testiramo da li je koeficijent uz pol znacajan, odnosno da li pol utice na # platu. model_sex = lm(salary ~ sex, data = Salaries) summary(model_sex) # Koeficijent je 14088 uz muski pol, sto znaci da model predvidja da muskarci # imaju toliko vecu platu u proseku. # Za test se dobija ista vrednost test statistike i ista p-vrednost. # Problem u ovom pristupu jeste sto ne uzimamo u obzir ostale faktore. # Napravimo model koji uzima u obzir struku, zvanje i godine radnog staza: model_full = lm(salary ~ rank + discipline + yrs.service + sex, data = Salaries) summary(model_full) # Vidimo kako razni faktori utice na platu: # Bazna plata je 68351.67, dodajemo 14560.4 ako je u pitanju vanredni profesor, # dodajemo 49159.64 ako je u pitanju redovni. Dodajemo 13473.38 ako je struka # profesora oznacena sa B (primenjene nauke). Oduzimamo 88.78 za svaku godinu # radnog staza. # Na kraju, kada izolujemo sve faktore, dodajemo 4771.25 na platu ako je # u pitanju muskarac. Odnosno, vidi se mala pristrasnost plate u odnosu na pol. # Ipak, p-vrednost testa za ovaj koeficijent je 0.219311, sto kaze da ne mozemo # da prihvatimo sa znacajnoscu od 5% da pol utice na platu, kada se svi ostali # faktori uzmu u obzir. To jest, na osnovu testa, smatramo da je ova razlika u # prosecnim platama slucajna. # Ovo je dublje istrazivanje, ali i ono ne mora da oslikava verodostojno # situaciju. Mozda bismo, prikupljanjem vise podataka, dobili da je koeficijent # znacajan. Mozda i postoje drugi faktori koje nismo uzeli u obzir, mozda pol # utice na izbor u zvanje, itd. # Zanimljivo je i da je koeficijent uz godine radnog staza negativan, ali je # dosta mali po apsolutnoj vrednosti. Stavise, vidimo da je p-vrednost za # njegovu znacajnost velika, pa mozemo da smatramo da godine radnog staza ne # uticu na platu (kada uzimamo zvanje u obzir!). # Kada bismo napravili model koji uzima samo godine radnog staza kao prediktor, # bile bi znacajne, i to sa pozitivnim uticajem: model_radni_staz = lm(salary ~ yrs.service, data = Salaries) summary(model_radni_staz)