## Ponovno pozivanje i ispravljanje naredbi
# Strelicom na gore (na tastaturi) pozivate naredbu ponovo.
# Strelicom na levo dolazite do mesta koje želite da ispravite, brišete sa
# BACKSPACE (levo od kursora) ili sa DEL (desno od kursora), zatim ukucate novu
# vrednost i sa ENTER izvršite naredbu.
# Ako naredba nije kompletna pojaviće se "+"
# Dovršite je...
2^
4
# U gornjem odeljku to niste mogli videti jer su izvršena oba reda (naredbe). U
# konzolu unesite prvo samo 2^ i pritisnite ENTER. Pojaviće se znak + koji
# označava da je potrebno da kompletirate naredbu. Dodajte 4 i pritisnite ENTER.
# Ispisaće rezultat naredbe 2 na 4.
### SLAJD 13 ####
## Radni direktorijum/folder
getwd()
# …je naredba kojom saznajete koji vam je radni direktorijum (odnosno onaj u
# kojem R traži ili piše datoteke ako ne navedete punu putanju).
# Ako želite da ga promenite, koristite setwd("željeni direktorijum")
setwd("D:/OTSS(R)")
# Napomena: Direktorijum (folder) mora postojati. Koristiti / umesto uobičajenog
# " \ ". Može i "\\".
# Za nastavak rada potrebno je da komandu setwd("D:/OTSS(R)") kopirate u konzolu
# i izvršite jer zbog specifičnog formata ove datoteke neće biti zapamćena izvan
# odeljka (chunk).
### SLAJD 14 ####
## Pozivanje naredbi iz datoteke
# Naredbe možete sačuvati u tekstualnoj datoteci, a iz nje ih možete pozvati
# komandom source
source("D:/OTSS(R)/naredbe.R")
# Ili ako ste podesili radni direktorijum
source("naredbe.R")
# Ako hoćete da vam rezultat bude ispisan na ekranu onda, dodajte argument "echo=TRUE".
# Proverite u folderu "D:/OTSS(R) datoteku naredbe.R - možete je otvoriti sa
# Notepadom ili bilo kojim editorom teksta. Možete je otvoriti i u R-u. U njoj
# se nalaze komande 3*2 (množenje dva broja), sqrt(144) (kvadratni koren iz 144)
# i array(1:180, 180) (napravi niz brojeva od 1 do 180 sa 180 članova)
source("naredbe.R", echo=TRUE)
# TRUE i FALSE se skraćeno mogu pisati T i F
# npr.
source("naredbe.R", echo=T)
# Pomoć u vezi sa ovom funkcijom
?source
### SLAJD 15 ####
## Ispis rezultata u datoteku
# Ako želite da vam svi rezultati budu upisani u datoteku koristite naredbu
# sink("naziv_datoteke")
sink("izlaz.txt")
# Umesto "izlaz.txt" možete dati bilo koje ime.
# Datoteka će biti kreirana u radnom direktorijumu.
# Može i na drugom mestu, ali morate navesti punu putanju do tog mesta.
# Neće biti ispisa na ekranu.
# Ako želite da nastavite pisanje u datoteku u koju ste već pisali onda dodajte
# argument "append=TRUE"
sink("izlaz.txt", append=TRUE)
source("naredbe.R", echo=T)
# Bez append=TRUE pregaziće staru datoteku.
# Proverite da li u radnom folderu sad imate datoteku "izlaz.txt".
# Vidite šta je u njoj.
# Ipis u datoteku prekida se sa
sink()# nekada mora 2 puta da se pokrene
sink()
### SLAJD 16 ####
## OBJEKTI
# R radi sa objektima koje mi kreiramo ili se kreiraju u okviru rada pozvanih funkcija.
# Objekte kreiramo tako što im dodelimo neko ime i pridružimo određene vrednosti.
# Ako neku naredbu izvršimo i ne dodelimo joj ime, njen rezultat se gubi nakon
# ispisa na ekranu.
# Ako je smestimo u objekat ona ostaje sačuvana dok je ne uklonimo, a možemo je
# pozvati imenom objekta.
2*5
A<-2*5 #smeštamo rezultat množenja u objekat A
A #pozivamo objekat A
B=6 #smeštamo vrednost 6 u objekat B
B
A*B #Izvršavamo operaciju sa objektima
### Uklanjanje objekta (u ovom slučaju B)
remove(B)
### ili
rm(B) #ako ste pokrenuli prethodnu naredbu javiće grešku jer B više ne postoji
### SLAJD 17 ####
## OBJEKTI...
ls() # ispisuje spisak svih objekata u okruženju (environment)
# Uklanjanje više objekata (svih)
remove(list=ls())
# ili
rm(list=ls())
ls()
### SLAJD 18 ####
## PRIDRUŽIVANJE
# Vrši se pomoću znakova "<-", "->" ili komandom assign(), a može i sa "=".
# Znak "<-" se u prozoru skripta i terminala najlakše može dobiti ako
# istovremeno pritisnete levi Alt i - sa numeričke tastature.
X<-(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10.5))
X #ispis objekta X
# Funkcija c kombinuje argumente (ono u zagradi) u vektor
assign("Y", c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10.5))
c(X, X)->XX
# Na ovaj način kreirali smo dva ista vektora X i Y i vektor XX koji se sastoji
# od dva vektora X nastavljena jedan na drugi. Prikazaćemo ih
X
Y
XX
### SLAJD 20 ####
## VEKTORI
# Osnovni elementi u R-u.
# Indeksirani skupovi vrednosti istog tipa.
# Svaki element ima svoj indeks (lokaciju) pomoću kojega mu se može pristupiti
# (indeksi su označeni uglastim zagradama).
XX[11] #pozivamo 11. element vektora XX
# Imaju svoj tip
### SLAJD 21 ####
## VEKTORI - TIPOVI
# Numerički
# Slovni (char). Koriste se kao faktori (npr kategorijalne grupišuće varijable),
# ali i za nazive varijabli, natpise na grafikonima...
# Na primer
imena<-c("pol", "starost", "sprema", "v1", "v2", "V3", "V4", "v5", "V6", "v7", "v8") #kreiramo slovni vektor nazvan "imena"
imena #ispisaćemo njegove vrednosti
names(X)<-imena #komandom names(X) dodelićemo ta imena elementima vektora X
X #ispisaćemo da vidimo rezultat
## Logički vektori
# Nastaju evaluacijom logičkih uslova. Elementi su TRUE i FALSE.
# Npr.
NV<-X>6 #napravićemo logički vektor NV i to takav da će vrednost TRUE dobiti elementi vektora X veći od 6
NV
cbind(X,NV) #FALSE prikazano kao 0, TRUE kao 1
# Komanda cbind() spaja elemente u zagradi (moraju biti iste dužine) i prikazuje
# ih vertikalno. Sa rbind() dobijamo isto to, ali korizontalno. Probajte, ako
# želite
## Indeksni vektori
# Služe za pozivanje određenih elemenata drugih vektora i smeštaju se u uglaste zagrade.
# Npr.
Y<-X[1:10]# napravi vektor Y jednak prvih 10 elemenata vektora X
# ili
Y<-X[!is.na(X)] #Neka vektor Y budu samo one vrednosti X koje nisu nedostajuće NA
# Funkcija is.na() testira da li su vrednosti u zagradi nedostajuće. Ako je u
# zagradi naveden vektor, onda se testira svaki element vektora i vraća vektor
# sa nedostajućim vrednostima. Ako ispred funkcije stavimo ! dobijamo njenu
# negaciju - vraća se vektor sa vrednostima koje nisu nedostajuće.
### SLAJD 22 ####
## Računanje sa vektorima
# Ako se dva ili više vektora pojavljuju u nekoј matematičkoj operaciji ona će
# biti ponovljena onoliko puta koliko najduži vektor ima elemenata (samo ako je
# dužina većeg deljiva bez ostatka dužinom kraćih vektora).
X^2 # recimo da je broj 2 vektor dužine 1 (vektor sa 1 elementom) - skalar
# Svaki element vektora X je kvadriran.
X*XX # ranije kreirani vektori
# X je recikliran (pošto X ima 10 elemenata, a XX dvadeset, prvih 10 elemenata XX
# biće pomnoženo sa elementima vektora X, a zatim će drugih 10 elemenata biti
# pomnoženo opet istim vektorom X)
### SLAJD 23 ####
## SVOJSTVA OBJEKATA
# Objekti imaju tip i dužinu (između ostalog)
# Tipovi zavise od sadržaja objekta.
# Od tipa objekta zavisi šta možemo sa njime raditi.
# Tipovi su promenljivi.
# Dužina je takođe promenljiva
### SLAJD 24 ####
## SVOJSTVA OBJEKATA
mode(X); length(X)
# Funkcijom mode saznajemo tip, a length dužinu objekta (u ovom slučaju vektora).
# Znak ; omogućava vam da više komandi smestite u isti red.
X<-as.character(X[1:5]); mode(X); length(X)
X #ispisaćemo vektor X
# Rezultati se ispisuju u posebnim redovima.
# Istovremeno smo skratili i promenili tip vektora.
# Komandom as.character promenili smo numerički vektor u slovni (elementi nisu
# brojevi već karakteri - to vidimo po navodnicima oko njih).
# Pomoću indeksnog vektora [1:5] rekli smo da X bude samo prvih 5 elemenata
# istog tog vektora X.
# Produžićemo vektor dodajući mu na 15. poziciju cifru 6 (ali ne kao broj već
# kao karakter - uokvireno navodnicima)
X[15]<-"6"; length(X)
X
# Skratićemo vektor izbacujući nedostajuće vrednosti
X<-X[!is.na(X)] ; length(X)
X
### SLAJD 25 ####
## DALJE...
X+X
X<-as.numeric(X) # menjamo mu mode u numerički
X+X # i onda može da se sabira
podaci<-read.table("D:/OTSS(R)/test2.txt", header=TRUE, sep="", quote = "\"'", dec = ".")
names(podaci) # nazivi kolona matrice podataka da proverite da li ste učitali dobre podatke
str(podaci) # naredba kojom se proverava struktura objekta (dobijete nazive kolona,
# vrstu, broj opservacija/ispitanika, broj varijabli i prvih 10 vrednosti)
head(podaci) #prikaz prvih (6) redova matrice
podaci2<-read.csv("rezultati.csv", header=TRUE, sep=";", quote="\"'", dec = ".")
podaci2
p_load(xlsx)
podaciXY = read.xlsx("rezultati.xls", sheetIndex=1, rowIndex=NULL, colIndex=NULL)
podaciXY
podaciXY = read.xlsx("rezultati.xls", sheetIndex=1, rowIndex=NULL, colIndex=NULL, encoding="UTF-8")
podaciXY
?read.xlsx #možete pogledati i druge opcije
write.xlsx(podaciXY, "podaciXY.xlsx", col.names=TRUE, row.names=TRUE)
p_load(readxl)
podaciXY = read_excel("rezultati.xls", sheet=1)
podaciXY
?read_excel
podaciXY = data.frame(read_excel("rezultati.xls", sheet=1))
fix(podaci2)
edit(podaci2)
head(podaci2, 10) # ispis prvih 10 redova
tail(podaci2, 5) # ispis poslednjih 5 redova
podaci2$INDEX
mode(podaci2$INDEX) #"character" - slovni vektor
podaci2[1] #numerički indeks, prva kolona
podaci2[1:3] #numerički indeks, prve tri kolone
podaci2[c("INDEX","FORMA", "pit1")] # imena kao indeks, tačnije slovni vektor
# Na taj način možete iz matrice podataka izdvojiti varijable za analizu, na
# primer... Možete ih kopirati i u novi objekat...
podaci0 <- podaci2[c("INDEX","FORMA", "pit1")]
podaci0
podaci2$SUMA<-rowSums(podaci2[3:42], na.rm=FALSE) #SUMA je nova varijabla
podaci2$SUMA
# Funkcija rowSums sabira redove u matrici podataka. Svi podaci moraju biti
# numerički. Argument na.rm=FALSE rezultira nedostajućim podacima (NA) ako je
# bar jedan sabirak NA. na.rm=TRUE rezultira zbirom i u takvoj situaciji.
rowSums(podaci2[3:42], na.rm=TRUE)
write.table(podaci2, file = "podaci2.csv", sep = ";", row.names=FALSE, col.names = TRUE, qmethod = "double")
write.table(podaci2, file = "podaci2.txt", sep = "\t", row.names=FALSE, col.names = TRUE, quote = FALSE)
podaci2$BEZVEZE<-rowSums(podaci2[3:42], na.rm=TRUE)
podaci2$BEZVEZE<- NULL
podaci_s=podaci2[order(podaci2$FORMA),]
podaci_s
podaci_s=podaci2[order(podaci2$FORMA, podaci2$INDEX),]
order(podaci2$FORMA, podaci2$INDEX)
podaci_s
podaci_s=podaci2[order(podaci2$FORMA, -rank(podaci2$INDEX)),]
podaci_s
podaci2[c(1:3)] # je isto što i
podaci2[1:3]
podaci2[10:20, 1:3]
podaci2[10:20, c(1:3, 5, 7)]
16^(1/2)# kvadratni koren – može i
sqrt(16)
16^(1/4) # 4. koren iz 16
16^(-1) # recipročna vrednost - isto što i 1/16
podaci2["pit2"] #naziv varijable kao indeks
podaci2[c("pit2", "pit5")]  #slovni vektor naziva varijabli kao indeks
subset(podaci2, podaci2$pit2!="NA")
subset(podaci2, select=1:3)
subset(podaci2, select=c(1:3, 5))
subset(podaci2,  podaci2$pit3==3, select=c(1:3, 5))
podaci2$SUMA #da pogledamo vrednosti na ovoj varijabli
podaci2a<-podaci2[is.na(podaci2$SUMA)!= TRUE,]
podaci2a$SUMA #da se uverimo da nema nedostajućih
podaci5<-podaci2[!is.na(podaci2$pit1)==TRUE & is.na(podaci2$SUMA)==TRUE,]
podaci5
podaci2b<-podaci2a[podaci2a$SUMA>95,]
podaci2b
podaci2c<-podaci2a[!podaci2a$SUMA>95,c("INDEX", "SUMA")]
podaci2c
attach(podaci2)
INDEX #pozivanje varijable INDEX iz objekta podaci2
mode(INDEX)
SUMA
attach(podaci2a)
find("INDEX")  # vam javlja  odakle pozivate varijablu INDEX (prvi navedeni objekat)
detach(podaci2a) # uklanja "podaci2a" sa putanje
find("INDEX")  # vam javlja  odakle pozivate varijablu INDEX
library(foreign)
podaci3<-as.data.frame(read.spss("test4.sav", use.value.labels = TRUE))
podaci3
p_load(car)
podaci2$SUMA2<-Recode(podaci2$SUMA, "NA=0") # NA u 0 u novu varijablu SUMA2
provera<-subset(podaci2, select=c("SUMA", "SUMA2")) # izdvajanje dve varijable u
# novi objekat PROVERA da vidite šta ste uradili
provera
podaci2$pit3<-Recode(podaci2$pit3, "NA=0; 1=5; 2=4; 4=2; 5=1")
# Sažimanje u istu varijablu (više vrednosti u jednu + promena tipa u char(),
# jer smo zadali tekstualne vrednosti)
# kategorije 0, 1 i 2 u "nisko", a 3, 4 i 5 u "visoko"
podaci2$pit3<-Recode(podaci2$pit3, "c(0, 1, 2)='nisko'; c(3, 4, 5)='visoko'") # 5 u 2 kategorije
podaci2$pit3
library(foreign)
podaci4<-as.data.frame(read.spss("sredjivanje.sav", use.value.labels = TRUE)) #učitavanje podataka
table(podaci4$POL)  # kreiranje tabele vrednosti varijable pol
is.factor(podaci4$POL) # provera da li je varijabla faktor (nije - FALSE)
podaci4$POL<-factor(podaci4$POL, levels=c(1, 2), labels=c("muski", "zenski")) # pretvaranje u faktor sa nivoima muški i ženski. Navedeni nivoi (levels) i labele (labels).
podaci4$POL
is.factor(podaci4$POL)
table(podaci4$POL)
is.factor(podaci4$STA_KAT) # ponovo na varijabli STA_KAT (starost karatista)
table(podaci4$STA_KAT)
podaci4$STA_KAT<-factor(podaci4$STA_KAT, levels=c(1, 2, 3, 4), labels=c("nade", "kadeti", "juniori", "seniori"))
is.factor(podaci4$STA_KAT)
table(podaci4$STA_KAT)
mean(podaci4$OCENA, trim=0.05, na.rm=TRUE)
sd(podaci4$OCENA, na.rm=TRUE) #standardna devijacija
var(podaci4$OCENA) #varijansa
sd(podaci4$OCENA)^2 #rezultate većine funkcija možemo koristiti u daljem računu (ovo je samo primer - kada kvadriramo standardnu devijaciju dobijemo varijansu)
min(podaci4$OCENA) #minimum
max(podaci4$OCENA) #maximum
summary(podaci4$OCENA)
table(podaci4$POL)
table(podaci4$STA_KAT)
table(podaci2$SUMA)
table(podaci2$SUMA, useNA="no") # useNA="no" - zanemaruje nedostajuće
table(podaci2$SUMA, useNA="ifany")
table(podaci2$SUMA, useNA="always") # isto kao prethodno jer ima NA
table(podaci2$SUMA2, useNA="always") # ovde nema NA, ali je kategorija prikazana
table(podaci4$STA_KAT, exclude=c("kadeti"))
table(podaci4$STA_KAT, exclude=c("kadeti", "nade"))
table(podaci4$POL, podaci4$STA_KAT)# dvosmerna
table(podaci4$POL, podaci4$STA_KAT, podaci4$OCENA)# trosmerna
tapply(podaci4$OCENA, podaci4$POL, mean)# drugi argument je faktor
tapply(podaci4$OCENA, podaci4$POL, mean, trim=0.05)
tapply(podaci4$OCENA, podaci4$POL, sd)
tapply(podaci4$OCENA, podaci4$POL, var)
tapply(podaci4$OCENA, podaci4$POL, sd)^2
tapply(podaci4$OCENA, podaci4$POL, min)
tapply(podaci4$OCENA, podaci4$POL, max)
tapply(podaci4$OCENA, podaci4$POL, summary)
library(car) # u ovoj biblioteci se nalazi funkcija
leveneTest(OCENA ~ POL, data=podaci4)# Leveneov test jednakosti varijansi
t.test(OCENA ~ POL, data=podaci4, var.equal=TRUE)
## t-test za zavisne uzorke
# Dovoljno je vrednost argumenta repeated postaviti na TRUE
# Dva merenja se nalaze u dve varijable, T1_PIT1 i T1_PIT2
t.test(podaci4$T1_PIT1, podaci4$T1_PIT2, data=podaci4, repeated=TRUE)
chisq.test(podaci4$POL, podaci4$STA_KAT)  # ili
chisq.test(table(podaci4[1:2])) # drugačije indeksiranje varijabli (preko broja kolone) ili
tabelica=table(podaci4[1:2])#prvo kreiramo tabelu
chisq.test(tabelica) #a zatim tabelu uvrstimo kao argument u funkciju
hi<-chisq.test(table(podaci4$POL, podaci4$STA_KAT), correct = FALSE, simulate.p.value = TRUE, B = 2000)
hi #pozivanjem objekta ispisujete rezultate
str(hi) # da vidite strukturu objekta hi
hi$observed # prikazivanje opaženih frekvencija
hi$expected # očekivanih
hi$residuals # reziduala
hi$residuals[1] # reziduala samo za muške nade
hi$residuals[3] # reziduala samo za ženske nade
hi$residuals[5] # reziduala samo za muške juniore
hi$stdres # standardizovanih reziduala
hi$statistic # vrednost hi kvadrata
hi$p.value # značajnost
plot(podaci4$POL, podaci4$STA_KAT)
plot(podaci4$POL, podaci4$STA_KAT, xlab="pol", ylab="starost", col=c(1, 3, 7, 8), main= "starost karatista po polu")
plot(podaci4$POL, podaci4$STA_KAT, xlab="pol", ylab="starost", col=c("red", "dark blue", "light green", "orange"), main= "starost karatista po polu")
podaci4$ZOCENA<-(podaci4$OCENA - mean(podaci4$OCENA))/sd(podaci4$OCENA)
podaci4$ZOCENA
x<-podaci4$OCENA
podaci4$ZOCENA<-(x - mean(x))/sd(x)
podaci4$ZOCENA
podaci4$ZOCENA2<-scale(podaci4$OCENA, center=TRUE, scale=TRUE)
mean(podaci4$ZOCENA2)#AS
sd(podaci4$ZOCENA2)#SD
stand3_5 <-scale(podaci4[3:5], center=TRUE, scale=TRUE)
stand3_5
shapiro.test(podaci4$OCENA)
hist(podaci4$OCENA)
tapply(podaci4$OCENA, podaci4$POL, shapiro.test)
## Standardizacija ROBUSNA
p_load(effectsize) #potrebna biblioteka
SUMA_S <- standardize(podaci2$SUMA)
# Robusna standardizacija, oko medijane sa MAD (median absolute deivance) jedinicama
SUMA_SR <- standardize(podaci2$SUMA, robust=TRUE)
cbind(podaci2$SUMA, SUMA_S, SUMA_SR)
podaci4$NOCENA <-scale(podaci4$OCENA, center=TRUE, scale=FALSE) # ipak samo CENTRIRANJE
podaci4$NOCENA
hist(podaci4$NOCENA) #vidi se da nije normalizovano
podaci2$RANG<-rank(podaci2$SUMA, na.last = "keep", ties.method = "min")
podaci2$RANG
podaci2$PERC<-(rank(podaci2$SUMA, na.last = "keep", ties.method = "min"))/length(is.na(podaci2$SUMA)==FALSE)
podaci2$PERC
podaci2$NORM<-qnorm((rank(podaci2$SUMA, na.last = "keep", ties.method = "min"))/length(is.na(podaci2$SUMA)==FALSE))
podaci2$NORM
podaci2$Z<-scale(podaci2$SUMA, center=TRUE, scale=TRUE)
par(mfrow=c(1,3)); hist(podaci2$SUMA, main="sirovi", xlab=NULL, col=2); hist(podaci2$NORM, main="normalizovani", xlab=NULL, col=3); hist(podaci2$Z, main="z skorovi", xlab=NULL, col=4)
par(mfrow=c(1,1)) #ili
dev.off()
shapiro.test(podaci2$NORM); mean(podaci2$NORM, na.rm=T); sd(podaci2$NORM,na.rm=T)
normalizuj <- function(nenormalna) {
qnorm((rank(nenormalna, na.last = "keep", ties.method = "min"))/length(is.na(nenormalna)==FALSE))
}
normalizuj(podaci2$SUMA)
# odnosno
podaci2$NORM<-normalizuj(podaci2$SUMA)
par(mfrow=c(1,3)); hist(podaci2$SUMA, main="sirovi", xlab=NULL, col=2); hist(podaci2$NORM, main="normalizovani", xlab=NULL, col=3); hist(podaci2$Z, main="z skorovi", xlab=NULL, col=4);
par(mfrow=c(1,1))
analiza.var<-lm(OCENA ~ STA_KAT, data=podaci4)
summary(analiza.var)
analiza.var
tapply(podaci4$OCENA, podaci4$STA_KAT, mean)
analiza.var<-aov(OCENA ~ STA_KAT, data=podaci4)
analiza.var<-lm(OCENA ~ STA_KAT, data=podaci4)
summary(analiza.var)
analiza.var
analiza.var<-aov(OCENA ~ STA_KAT, data=podaci4)
summary(analiza.var)
anova(analiza.var)
analiza.var2<-lm(OCENA ~ STA_KAT + POL + (POL*STA_KAT), data=podaci4)
summary(analiza.var2)
anova(analiza.var2)
lm(OCENA ~ POL*STA_KAT, data=podaci4)
lm(OCENA ~ POL+(POL:STA_KAT), data=podaci4)
anova(lm(OCENA ~ POL+(POL:STA_KAT), data=podaci4))
analiza.var2<-aov(OCENA ~ STA_KAT + POL + (POL*STA_KAT), data=podaci4)
summary(analiza.var2)
analiza.var3<-aov(OCENA ~ POL*STA_KAT, data=podaci4)
# Operator * traži glavne efekte i interakcije
summary(analiza.var3)
analiza.var4<-aov(OCENA ~ POL:STA_KAT, data=podaci4)
# Operator : traži samo interakciju
summary(analiza.var4)
anova(analiza.var4)
TukeyHSD(analiza.var4)
with(podaci4, interaction.plot(STA_KAT, POL, OCENA, col=2:3, lwd=2))
analiza.var5<-lm(OCENA ~ STA_KAT + POL + (POL*STA_KAT), data=podaci4)
summary(analiza.var5)
anova(analiza.var5, test="F")
p_load(emmeans)
emmeans(analiza.var5, pairwise~STA_KAT*POL, adjust="scheffe") # primer je za sve efekte
emmeans(analiza.var5, pairwise~STA_KAT:POL, adjust="scheffe") # samo za interakciju
emmeans(analiza.var5, ~STA_KAT*POL, adjust="scheffe") # primer je za sve efekte
?emmeans
emmeans(analiza.var5, pairwise~STA_KAT:POL, adjust="scheffe") # samo za interakciju
emmeans(analiza.var5, pairwise~STA_KAT, adjust="tukey") # ovde je za glavni efekat -  a korišćen je tukey
contrast(EMM, "pairwise")
EMM <- emmeans(analiza.var5, pairwise~STA_KAT:POL, adjust="scheffe") # samo za interakciju
contrast(EMM, "pairwise")
EMM <- emmeans(analiza.var5, pairwise~STA_KAT*POL, adjust="scheffe") # samo za interakciju
EMM <- emmeans(analiza.var5, ~STA_KAT*POL, adjust="scheffe") # samo za interakciju
contrast(EMM, "pairwise")
emmeans(analiza.var5, pairwise~STA_KAT, adjust="tukey") # ovde je za glavni efekat -  a korišćen je tukey
cor(podaci4[3:8]) # matrica korelacija
cor(podaci4$T1_PIT1, podaci4$T1_PIT3) # dve varijable
with(podaci4, cor(T1_PIT2, T1_PIT3, method="pearson")) #skraćeno pisanje
cor.test(podaci4$T1_PIT1, podaci4$T1_PIT3) # dve varijable
p_load(psych)
corr.test(podaci4[3:8])
print(corr.test(podaci4[3:8]), short = FALSE)
hist(podaci4$OCENA)
hist(podaci2$SUMA)
hist(podaci2$SUMA, col=3, main="UKUPAN SKOR", xlab="SUMA")
hist(podaci2$SUMA, col=3, main="UKUPAN SKOR", xlab="SUMA", ylab="frekvencija")
boxplot(podaci2$SUMA)
stem(podaci2$SUMA)
plot(podaci4$POL, podaci4$OCENA)
plot(podaci4$OCENA, podaci4$POL)
plot(podaci4$OCENA, podaci4$POL, yaxp=c(1, 2, 1), xaxp=c(1,5,4))
plot(podaci4$OCENA ~ podaci4$POL)
X=rnorm(100, 30, 8); Y=rnorm(100, 25, 8) # kreiranje dve varijable iz normalne raspodele
png(filename = "skater1.png", width = 800, height = 800);  plot(X, Y);
dev.off()
tiff(filename = "skater1.tiff", width = 800, height = 800);plot(X, Y);
dev.off()
tiff(filename = "skater300.tif", width = 9, height = 9,units = "cm", pointsize = 6, bg = "white", res = 300, restoreConsole = TRUE); plot(X, Y, col=3, lwd = 1, lty=2, xlab = "varijabla X", ylab = "varijabla Y", main="skater 300", cex.main = 1.5, cex.lab = 1.3, cex.axis = 1.1);
dev.off()
levi<-read.table("imena.txt", header=TRUE, sep=",", quote = "\"'", dec = ".")
desni<-read.table("odgovori2.txt", header=TRUE, sep=",", quote = "\"'", dec = ".")
sve<-merge(levi, desni, by="INDEX")# spojiće dva seta podataka, ali samo one slučajeve koji se nalaze u obe matrice
sve
sve=merge(levi, desni, all=TRUE, by="INDEX")# spojiće dva seta podataka, a u
# podacima će se nalaziti i svi oni iz oba seta koji nemaju podatke u
# obe matrice (nalaze se samo u jednoj od matrica)
sve
sve<-merge(levi, desni, all.x=TRUE, by="INDEX")
sve
sve<-merge(levi, desni, all.y=TRUE, by="INDEX")
sve
podaci.wide <- read.table(header=T, text='
ispitanik pol merenje1 merenje2 merenje3
1    M      7.9   12.3     10.7
2    Z      6.3   10.6     11.1
3    Z      9.5   13.1     13.8
4    M     11.5   13.4     12.9
')
# Kolona sa subjektima (identifikacijom subjekta) mora biti tipa "factor"
#
podaci.wide$ispitanik <- factor(podaci.wide$ispitanik)
p_load(reshape)
novipodaci.long<-reshape(podaci.wide, direction='long', varying=c('merenje1', 'merenje2', 'merenje3'), timevar='merenje', times=c('1', '2', '3'), v.names=c('stasmomerili'), idvar=c("ispitanik", "pol"))
novipodaci.long
novipodaci.wide<-reshape(novipodaci.long, direction="wide", varying="stasmomerili")
#učitavanje podataka
podaci.long <- as.data.frame(read.table(header=T, text='
ispitanik  pol     merenje        mera
1   M     merenje1         7.9
1   M     merenje2        12.3
1   M     merenje3        10.7
2   Z     merenje1         6.3
2   Z     merenje2        10.6
3   Z     merenje1         9.5
3   Z     merenje2        13.1
3   Z     merenje3        13.8
4   M     merenje1        11.5
4   M     merenje2        13.4
4   M     merenje3        12.9
'))
podaci.long$ispitanik <- factor(podaci.long$ispitanik)
novipodaci.wide<-reshape(podaci.long, direction = "wide", v.names= c("mera"), timevar="merenje", idvar=c("ispitanik", "pol"))
library(reshape2)
novipodaci.long <- melt(podaci.wide, id.vars=c("ispitanik","pol"), measure.vars=c("merenje1", "merenje2", "merenje3" ), variable_name="merenje")
podaci2.wide <- read.table(header=T, sep=";", text='
ispitanik;pol;merenje1;merenje2;merenje3;neponovljeno
1;M;7.9;12.3;10.7;1.2
2;Z;6.3;10.6;11.1;2.2
3;Z;9.5;13.1;13.8;3.2
4;M;11.5;13.4;12.9;4.2'
)
novipodaci2.long <- melt(podaci2.wide, id.vars=c("ispitanik","pol"), measure.vars=c("merenje1", "merenje2", "merenje3" ), variable_name="merenje")
head(novipodaci2.long)
novipodaci3.long <- melt(podaci2.wide, id.vars=c("ispitanik","pol", "neponovljeno"), measure.vars=c("merenje1", "merenje2", "merenje3" ), variable.name="merenje")
head(novipodaci3.long)
p_load(maditr)
p_load(maditr)
p_load(lordif)
?lordif()
