Rr

2. Pogrupować dane z pliku dane_perla2.csv według pól x i y na 4 klasy 
metodą k-średnich. Następnie przeanalizować częstości występowania 
elementów z różnych klas (pole klasa) w wybranych skupiskach. 
Policzyć jaka cześć elementów "odstaje" od najczęstszych wyborów 
w swoich skupiskach. 
Uwaga: przed wykonaniem zadania proponuję ustawić generator liczb 
pseudolosowych poleceniem set.seed(201 

Zadanie2 
skupiska=read.csv2("skupiska.csv") 
skupiska 
podzial=kmeans(skupiska[,1:2],4) 
podzial 
plot(skupiska[,1:2],pch=podzial$cluster,col=podzial$cluster) 
kolor=c("blue","red","grey","yellow") 
plot(skupiska$x, skupiska$y, col = "white", xlab = "x", ylab = "y") 
text(skupiska$x, skupiska$y, skupiska$klasa, col = kolor[podzial$cluster]) 


(tabl = table(podzial = podzial$cluster, klasa=skupiska$klasa)) 
print("Błąd na zbiorze uczącym:", quote = F) 
1-sum(diag(tabl))/sum(tabl) 

points(podzial$centers, cex=2, pch=19) 

Przeanalizować wyniki wyborów prezydenckich w 2010 roku (dane pzt2010.csv) 
- zbadać popracie dla kandydatów pod kątem geograficznym. Narysować odpowiednią 
mapę percepcji. Czy można (i jest sens) wykonywać dla takich danych 
test niezalezności? 
Uwaga. Aby uczynić mape percepcji czytelniejszą można ograniczyć się do, 
na przykład, czterech kandydatów z największym poparciem. Inne zmiany 
zwiększające czytelność dodatkowo punktowane. 

dene=read.csv2("wybory.csv") 
attach(dene) 
dene 
dane2=dene[,8:17] #zły nawias był 
names(dane2)=c(1:10) 
dane2 
library(ca) 
plot(ca(dane2),mass=T) 
suma_kol=colSums(dane2) 
suma_kol 

#wybieram 2,3,,4,7 

czterech 
czterech 
czterech=data.frame(K1=dane2[,2],K2=dane2[,3],K3=dane2[,4],K4=dane2[,7]) 
plot(ca(czterech),mass=T) 
chisq.test(czterech)

Narysować histogram (o 20 klasach) oraz estymator gęstości dla zmiennej 
x w 1-szej klasie (zmienna klasa) danych dane_usmiech2.csv. Przetestować 
hipotezę, że dane te pochodzą z rozkładu normalnego. 

dane=read.csv2("dane_usmiech2.csv") 
attach(dane) 

dane2=data.frame(x=dane$x[klasa==1]) 
dane2 
plot(dane2) 
attach(dane2) 
k = 20 
mi = mean(dane2) 
sigma = sd(dane2) 
ile = length(dane2) 
w=1:k 
podzial = qnorm(w/k, mi, sigma) 
podzial 
podzial[1] = min(dane2)-0.1 
podzial[length(podzial)] = max(dane2)+0.1 
szereg = table(cut(dane2[,], podzial)) 
szereg 
(t=chisq.test(szereg)) 

1-pchisq(t$statistic, k-3) 
(hist(dane2[,], podzial, col = "yellow")) 
plot(density(dane2[,])) 
detach(dane2) 
detach(dane)

Dla danych z pliku wzrost.csv sporządzić wykres zawierający: 

* histogram (około 15 klas) 
* jądrowy estymator gęstości 
* gęstość rozkładu normalnego o parametrach estymowanych na podstawie danych 



dane=read.csv2("wzrost.csv") 
dane 
attach(dane) 

length(wzrost) 

k=15 
dl=(max(wzrost)-min(wzrost))/(k-1) 
dl 

podzial=dl*(0:k)-dl/2+min(wzrost) 
podzial 
table(cut(wzrost,podzial)) 
podzial2=podzial[c(1,3:13,16)] 
podzial2 
szereg=table(cut(wzrost,podzial2)) 
hist(wzrost,podzial2) 
plot(density(wzrost)) 
sr=mean(wzrost) 
od=sd(wzrost) 

gest=function(x) dnorm(x,sr,od) 
x=seq(min(wzrost),max(wzrost),0.5) 

hist(wzrost,podzial2) 
lines(x,gest(x),col="red",lwd=3) 
lines(density(wzrost),col="blue",lwd=3)

Dane z pliku wzrost.csv rozłożyć w szereg rozdzielczy: 


* (*) o 6 klasach, różnej długości, za to, w przybliżeniu, jednakowej liczności. W oparciu o ten szereg narysować histogram. 


#podzial na 6 klas 

dane=read.csv2("wzrost.csv") 
dane 
attach(dane) 


k=6 
w=0:k 
sr=mean(wzrost) 
od=sd(wzrost) 


podzial=qnorm(w/k,sr,od) 
podzial 
podzial[1]=min(wzrost)-5 
podzial[7]=max(wzrost)+5 
podzial 
szereg=table(cut(wzrost,podzial)) 
szereg 
hist(wzrost,podzial)

# Przetestować normalność dla danych z pliku wzrost.csv za pomocą testu chi-kwadrat, w oparciu o szereg rozdzielczy o 15 klasach o jednakowej liczności teoretycznej (przykład z wykładu). Następnie wykonać ten sam test, ale przed utworzeniem szeregu rozdzielczego dokonać randomizacji danych, zaburzając je o wartość z rozkładu jednostajnego na przedziale [-½, ½]. 



dane=read.csv2("wzrost.csv") 
dane 
attach(dane) 


k=15 
w=0:k 
sr=mean(wzrost) 
od=sd(wzrost) 


podzial=qnorm(w/k,sr,od) 
podzial 
podzial[1]=min(wzrost)-5 
podzial[16]=max(wzrost)+5 
podzial 
szereg=table(cut(wzrost,podzial)) 
szereg 
hist(wzrost,podzial) 

teor=length(wzrost)/k 
stat.test=sum(((szereg-teor)^2)/teor) 
stat.test 
qchisq(0.95,k-3) 
#czyli odrzucamy 

#zaburzamy 
x=seq(-0.5,0.5,0.01) 
zab=sample(x,length(wzrost),replace=T) 

dane2=data.frame(wzrost=wzrost+zab) 
attach(dane2) 


k=15 
w=0:k 
sr=mean(wzrost) 
od=sd(wzrost) 


podzial=qnorm(w/k,sr,od) 
podzial 
podzial[1]=min(wzrost)-5 
podzial[16]=max(wzrost)+5 
podzial 
szereg=table(cut(wzrost,podzial)) 
szereg 
hist(wzrost,podzial) 

teor=length(wzrost)/k 
stat.test=sum(((szereg-teor)^2)/teor) 
stat.test 
qchisq(0.95,k-3) 

#zatem przyjmujemy, gdyż stat.test<qchisq o danych parametrach.

Podzielić dane z pliku zakupy.csv na trzy mniej więcej jednakowo liczne grupy ze względu na wiek klienta (powiedzmy Y, M, O). Następnie zbadać, czy różnica średnich wydatków w tych grupach jest istotna statystycznie. 

dane=read.csv2("zakupy.csv") 
# wykonam test chi^2 niezaleznosci 
attach(dane) 
chisq.test(table(WYDATEK,(cut(WIEK,3)))) #jest ok, ale klasy mało liczne 

podzial=seq(min(WYDATEK),max(WYDATEK), length=5) 
table(cut(WYDATEK,podzial)) 

wiek=cut(WIEK,3) 
levels(wiek)=c("Y", "M", "O") 
table(wiek,cut(WYDATEK,podzial)) 


chisq.test(table(wiek,cut(WYDATEK,podzial))) #jeszcze można by pokombinować z gabarytami klas, ale już jest znośnie.

Zadanie jest zrobione przez Karola i mnie ze mnie: 
3. Dla zależności y od x (dane regresja2.csv) dopasować krzywą regresji 
zadaną równaniem y = a * sin(b*x) + c oraz wybraną nieparametryczną metodą 
regresji. Narysować (i porównac) wykresy. Dla metody parametrycznej wyznaczyć 
wartośc współczynnika R^2. 

dane =read.csv2("regresja2.csv") 
dane 

attach(dane) 

#regresja paramteryczna 
reg = nls(y ~ a*(sin(b*x))+c , start=list(a=1,b=1,c=0)) 
summary(reg) 
#regresja nie parametryczna 
reg2=loess(y~x) 
summary(reg2) 

#wykresy 
plot(x,y) 
ndane = data.frame(x = seq(min(x), max(x), length = 300)) 

#parametryczny 
lines(ndane$x, predict(reg, ndane), lwd = 2, col = "blue") 
#nie parametryczny 
lines(ndane$x, predict(reg2, ndane), lwd = 2, col = "red") 
#obliczamy R_kwadrat dla regresji parametrycznej 
a = 2.008283 
b=1.001095 
c = 0.014549 
x=dane$x 
y = a*(sin(b*x))+c 
y_t=y 
y=dane$y 
roznica1= (y-mean(y))^2 
roznica2 = (y_t-mean(y))^2 
R_kwadrat = sum(roznica2)/sum(roznica1) 
R_kwadrat

  1. Narysować histogram oraz estymator gęstości dla 
    zmiennej x w 1-szej klasie danych dane_usmiech2.csv. 
    Przetestować hipotezę, że dane te pochodzą z rozkładu normalnego. 


    dane=read.csv2("dane_usmiech2.csv") 
    attach(dane) 
    dane2=data.frame(x=dane$x[klasa==1]) 
    dane2 
    k = 40 

    mi = mean(x) 
    sigma = sd(x) 
    ile = length(x) 

    w = 0:k 
    podzial = qnorm(w/k, mi, sigma) 
    podzial 
    podzial[1] = min(x)-0.1 
    podzial[length(podzial)] = max(x)+0.1 
    szereg = table(cut(x, podzial)) 
    szereg 
    t=chisq.test(szereg) 

    1-pchisq(t$statistic, k-3) 
    (hist(x, podzial, col = "violet")) 

#ZADANIE 2 
> wyk=read.csv2("czas_wykonania2.csv") 
> attach(wyk) 
> kw=kwalifikacje 
> cz=czas 
> plec=M 
> datach(wyk) 
Error: could not find function "datach" 
> detach(wyk) 
> ?anova 
> anova(lm(cz~kw) 
+ ) 
Analysis of Variance Table 

Response: cz 
Df Sum Sq Mean Sq F value Pr(>F) 
kw 1 29.400 29.400 90.451 3.646e-15 *** 
Residuals 88 28.603 0.325 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
> anova(lm(cz[46:60]~kw[46:60])) 
Analysis of Variance Table 

Response: cz[46:60] 
Df Sum Sq Mean Sq F value Pr(>F) 
Residuals 14 0.73733 0.052667 
> anova(lm(cz[46:60]~kw[46:90])) 
Error in model.frame.default(formula = cz[46:60] ~ kw[46:90], drop.unused.levels = TRUE) : 
variable lengths differ (found for 'kw[46:90]') 
> anova(lm(cz[46:90]~kw[46:90])) 
Analysis of Variance Table 

Response: cz[46:90] 
Df Sum Sq Mean Sq F value Pr(>F) 
kw[46:90] 1 12.6750 12.6750 135.22 7.309e-15 *** 
Residuals 43 4.0308 0.0937 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
> #użyłem testu anova żeby 
> #poniewaz pozwala ona na przetestowanie wiecej niż jednego kryterium 
> par(mfrow=c(2,1))#wykresy w jednym oknie 
> #wykresy pudełkowe powinny pomóc 
> boxplot(cz[46:90]~kw[46:90],col=heat.colors(3)) 
> #z wykresu mozna powiedzieć że wraz ze wzrostem klasy czas wykonania maleje

1. Narysować histogram o 20 klasach dla zmiennej x dla danych z pliku 
dane_perla2.csv (z wyłączeniem klasy 3-ciej). Przetestować hipotezę, że 
pochodzą one z rozkładu jednostajnego na przedziale [-1,38; 1,385]. 


dane=read.csv2("dane_perla2.csv") 
attach(dane) 
dane_1_2=x[klasa!="3"] 
dane_1_2 
detach(dane) 
plot(dane_1_2) 
hist(dane_1_2) 
k = 20 
mi = mean(dane_1_2) 
sigma = sd(dane_1_2) 
ile = length(dane_1_2) 
w=0:k 
podzial = qunif(w/k, mi, sigma) 
podzial 

szereg = table(cut(dane_1_2, podzial)) 
szereg 
(t=chisq.test(szereg))







2. Pogrupować dane z pliku dane_perla2.csv według pól x i y na 4 klasy 
metodą k-średnich. Następnie przeanalizować częstości występowania 
elementów z różnych klas (pole klasa) w wybranych skupiskach. 
Policzyć jaka cześć elementów "odstaje" od najczęstszych wyborów 
w swoich skupiskach. 
Uwaga: przed wykonaniem zadania proponuję ustawić generator liczb 
pseudolosowych poleceniem set.seed(2011). 

dane = read.csv2("dane_usmiech2.csv") 
dane 

attach(dane) 
x= x[klasa ==1] 

detach(dane) 
#wykonajmy histogram dla danych x 
hist (x,20) 
#widzimy ze program dobrał zły podział i mamy więcej niz 20 klas 
#dokonajmy własnego podzialu 
k = 20 
mi = mean(x) 
sigma = sd(x) 
w =0:k 
podzial = qnorm(w/k, mi , sigma) 
podzial 
podzial[1]=min(x)-0.05 
podzial[length(podzial)]=max(x)+0.05 
podzial 

#histogram wedlug naszego podzialu 
hist(x,podzial) 

#dokonajmy testu na normalność rozkładu naszej zmiennej 
szereg=table(cut(x,podzial)) 
szereg 
(t=chisq.test(szereg)) 

1-pchisq(t$statistic,k-3) 
#z testu wynika ze p-value jest bliskie 1 dlatego przyjmujemy hipoteze








3. Dla zmiennych x i y z uzwględnieniem podziału na klasy policzyć: 
- średnią 
- medianę 
- wariancję 
- skośność 
Traktując dane z pliku dane_perla2.csv jako próbkę statystyczną pochodządzą 
z próby prostej o pewnym rozkładzie.

perla=read.csv2("dane_perla2.csv") 
perla 
attach(perla) 
x_1=x[klasa=="1"] 
x_2=x[klasa=="2"] 
x_3=x[klasa=="3"] 
y_1=y[klasa=="1"] 
y_2=y[klasa=="2"] 
y_3=y[klasa=="3"] 
#Podzial x i y na klasy, lacznie 6 grup 
#Srednia 
(mean(x_1)) 
(mean(x_2)) 
(mean(x_3)) 
(mean(y_1)) 
(mean(y_2)) 
(mean(y_3)) 
#mediana 
(median(x_1)) 
(median(x_2)) 
(median(x_3)) 
(median(y_1)) 
(median(y_2)) 
(median(y_3)) 
#wariancja 
(var(x_1)) 
(var(x_2)) 
(var(x_3)) 
(var(y_1)) 
(var(y_2)) 
(var(y_3)) 
#skosnosc, nalezy wczytac pakiet: e1071 
e1071::skewness(x_1) 
e1071::skewness(x_2) 
e1071::skewness(x_3) 
e1071::skewness(y_1) 
e1071::skewness(y_2) 
e1071::skewness(y_3) 
detach(perla)

zadania 2 zadanie 3 

dane =read.csv2("regresja2.csv") 
dane 

attach(dane) 

#regresja paramteryczna 
reg = nls(y ~ a*(sin(b*x))+c , start=list(a=1,b=1,c=0)) 
summary(reg) 
#regresja nie parametryczna 
reg2=loess(y~x) 
summary(reg2) 

#wykresy 
plot(x,y) 
ndane = data.frame(x = seq(min(x), max(x), length = 300)) 

#wykres parametrycznej regresji liniowej 
lines(ndane$x, predict(reg, ndane), lwd = 2, col = "green") 
#wykres nie parametrycznej regresji liniowej 
lines(ndane$x, predict(reg2, ndane), lwd = 2, col = "pink") 
#spisujemy wartości parametrów z wyników regresji parametrycznej aby obliczyc 
#współczynnik determinacji 
a=2.008283 
b=1.001095 
c=0.014549 
x=dane$x 
y=dane$y 
y_t=a*(sin(b*x))+c 


roznica1= (y-mean(y))^2 
roznica2 = (y_t-mean(y))^2 
R_kwadrat = sum(roznica2)/sum(roznica1) 
R_kwadrat 
#współczynnik determinacji bliski 1 stąd wynika że nasza regresjaparametryczna 
#to dobry model

dane=read.csv2("dane_perla2.csv") 
dane 
attach(dane) 
#tworzę nowe dane które będą mi potrzebne do rozwiązania zadania, 
#mianowicie obcinam je do zmiennej x nie biorąc również pod uwagę 
#klasy trzeciej: 
dane2=x[klasa!="3"] 
dane2 

detach(dane) 
#rysujemy wykres i histogran 
plot(dane2) 
hist(dane2) 
k = 20 
a=-1.38 
b=1.385 
w=0:k 
podzial = qunif(w/k, a, b) 
podzial 

#tworzę szereg rozdzielczy 
szereg = table(cut(dane11, podzial)) 
szereg 

#wykonuję test chi^2 
(t=chisq.test(szereg)) 

dane=read.csv2("dane_perla2.csv") 
dane 
attach(dane) 
#tworzę nowe dane które będą mi potrzebne do rozwiązania zadania, 
#mianowicie obcinam je do zmiennej x nie biorąc również pod uwagę 
#klasy trzeciej: 
dane2=x[klasa!="3"] 
dane2 

detach(dane) 
#rysujemy wykres i histogran 
plot(dane2) 
hist(dane2) 

k=20 
a=-1.38 
b=1.385 
w=0:k 
dl=(max(x)-min(x))/(k-1) 
dl 
podzial=dl*(0:k)-(dl/2)+min(x) 
podzial 
szereg=table(cut(x,podzial)) 
szereg 

t=chisq.test(szereg) 

1-pchisq(t$statistic,k-3) 

  1. Narysować histogram o 15 klasach dla zmiennej x dla danych z pliku 
    dane_perla2.csv (z wyłączeniem klasy 3-ciej). Przetestować hipotezę, że 
    pochodzą one z rozkładu jednostajnego na przedziale [-1,38; 1,385]. 









    2. Pogrupować dane z pliku dane_perla2.csv według pól x i y na 4 klasy 
    metodą k-średnich. Następnie przeanalizować częstości występowania 
    elementów z różnych klas (pole klasa) w wybranych skupiskach. 
    Policzyć jaka cześć elementów "odstaje" od najczęstszych wyborów 
    w swoich skupiskach. 
    Uwaga: przed wykonaniem zadania proponuję ustawić generator liczb 
    pseudolosowych poleceniem set.seed(2011). 




    dane=read.csv2("dane_perla2.csv") 
    attach(dane) 
    set.seed(2011) 
    library(cluster) 
    dane[,1:2]=scale(dane[,1:2]) 
    p2<-clara(dane[,1:2],4,metric="euclidean") 

    points(p2$medoids,pch=2,col="black") 
    tbl=table(podzial=p2$clustering,prawdziwe=dane[,3]) 
    tbl 
    #skupisko nr 1 sklada sie jedynie z elementow z klasy 1 i 3 
    #skupisko nr 2 sklada sie z elementow z klasy 1 i mniejszej ilosci z klasy 3 
    #skupisko 3 i 4 sklada sie z elementow z klas 2 i 3 (przewaga z klay 2) 
    #Policzyć jaka cześć elementów "odstaje" od najczęstszych wyborów 
    w swoich skupiskach: 
    (tbl[1,3]+tbl[2,3]+tbl[3,3]+tbl[4,3])/sum(tbl)






    3. Dla danych z pliku czas_wykonania2.csv przetestować hipotezę, że wśród osób 
    na 3-cim poziomie kwalifikacji kobiety wykonują badaną czynność tak samo szybko 
    jak mężczyźni, przeciwko temu, że robią to wolniej na poziomie istotności 0,95.

1. Przeanalizować wyniki wyborów prezydenckich w 2010 roku (dane pzt2010.csv)

- zbadać popracie dla kandydatów pod kątem geograficznym. Narysować odpowiednią

mapę percepcji. Czy można (i jest sens) wykonywać dla takich danych

test niezalezności?

Uwaga. Aby uczynić mape percepcji czytelniejszą można ograniczyć się do,

na przykład, czterech kandydatów z największym poparciem. Inne zmiany

zwiększające czytelność dodatkowo punktowane.

2. Narysować histogram (o 20 klasach) oraz estymator gęstości dla zmiennej

x w 1-szej klasie (zmienna klasa) danych dane_usmiech2.csv. Przetestować

hipotezę, że dane te pochodzą z rozkładu normalnego.

3. Dla zależności y od x (dane regresja2.csv) dopasować krzywą regresji

zadaną równaniem y = a * sin(b*x) + c oraz wybraną nieparametryczną metodą

regresji. Narysować (i porównac) wykresy. Dla metody parametrycznej wyznaczyć

wartośc współczynnika R^2.


Wyszukiwarka

Podobne podstrony:
Pomiar RR III ROK
RR dzień serca
rr RĂłznice Indywidualne Wszytskie pytania, Studia, Psychologia, SWPS, 2 rok, Semestr 04 (lato), Psy
Laboratorium 6 Temperatury Curie dla?rrytów (3)
Liczba obsł pasaż w Pl portach lot w rr 2010
biologia 2010 rr id 88205 Nieznany (2)
Kształtowanie siły mm RR i obręczy barkowej w treningu funkcjonalnym
Grundig RR 300CD
ocena parametrów sztywności tętnic, wys RR, po transplantacji
OR vs RR MFRP id 339022 Nieznany
naakua stania na rr, Konspekty, Gimnastyka
Badanie właściwości materiałów magnetycznych –?rromagnetyki
skok kuczny, stanie na RR
Wyznaczanie temperatury Curie dla?rrytow3
stanie na rr, przewrot w przod i w tyl
Laboratorium 6 Temperatury Curie dla?rrytów
Stanie na RR doskonalenie
SHSBC 270 TALK ON TV?MO FINDING RR's

więcej podobnych podstron