Author: margusja
DHT11
Meil on digitaalne temperatuuri- ja niiskuseandur DHT-11. Soovides sealt lugeda andmeid peame andma andurile vastavale viigule õigel ajal õige pikkusega 1 ja 0 formaadis sisendi, mille peale annab andur 40 bitise vastuse.
Suurema osa andurite jaoks on valmis kirjutatud paljude arenusvahendite jaoks vajalikud pakid, mis teevad programeerija elu lihtsamaks.
Aga kui me peaks ikka tahtma teada, kuidas asi päriselt välja näeb, siis on ka selleks võimalus. Nagu ma mainisin, tegu on DHT-11 anduriga, mille andmefailis on kirjas:
Siin on kenasti teave olemas, millistest 5 baidist tagastatav vastus koosneb.
Siin on niiskuse osa. Vasaku maha tõmmatud risti alla jääb anduri vastus, et ta on valmis andmeid saatma. Sellele järgneb niiskuse info, kõrgem bit ees ehk meie peame selle keerama 00010100, mis teeb kümnendsüsteemis 40, mis ongi meie niiskuse protsent. Parempoolse risti alla jääb järgmine vastuse bait.
Temperatuuri bait. Vasalult ja paremalt on maha tõmmatud meid hetkel mitte huvitavad paidid. Siin on samuti kõrgem bit ees, ehk:
128 = 0; 68 = 0; 32 = 0; 16 = 1; 8 = 0; 4 = 1; 2 = 1; 1 = 1, mis teeb kokku 23 kraadi.
Kui nüüd vaadata kellegi valmis kirjutatud abiteeki, siis on seal sisalduv informatsioon juba palju selgem.
R linear function solver
Olgu meil võrrandisüsteem:
2x + y = 5
5x – 2y = 3
R keskkonnas saame võrrandisüsteemi lahendada järgmiselt:
Loome matriksi A:
> A <- matrix(c(2,1,5,-2),byrow=T,ncol=2)
> A
[,1] [,2]
[1,] 2 1
[2,] 5 -2
> B = c(5,3)
> solve(A,B)
[1] 1.444444 2.111111 # Vastavalt siis tundmatud x ja y
Väike IT-mees e järelkasvu on oodata
Perpetuum mobile
Minule meeldib minu töö
Sündmuse toimumise tõenäosuse kontrollimine – binom.test
binom.test’i sobib kasutada ka mitte normaaljaotuse korral.
> binom.test(c(682, 243), p = 3/4) # 925 katse puhul õnnestus 682 katset. Väidame (H0), et õnnestumise tõenäosus on 0.75 (3/4)
Exact binomial test
data: c(682, 243)
number of successes = 682, number of trials = 925, p-value = 0.3825
alternative hypothesis: true probability of success is not equal to 0.75
95 percent confidence interval:
0.7076683 0.7654066
sample estimates:
probability of success
0.7372973
Kuna p-value on suurem, kui 0.05, siis ei ole põhjust H0’s kahelda ja võime jääda väite juurde, et õnnestumise tõenäosus on 0.75
Shapiro-Wilk normality test
Soovides kontrollida, kas meie andmehulk on normaaljaotusega H0 või ei ole H1, siis R keskkonnas saab seda teha:
> shapiro.test(test)
Shapiro-Wilk normality test
data: test
W = 0.9927, p-value = 0.07199
Kuna p-value on suurem, kui 0.05, siis ei ole põhjust nullhüpoteesist loobumiseks.
t.test
- Kui meil on andmehulk ja me soovime ümber lükata hüpoteesi, et antud andmehulga keskväärtus (EX) ei ole x, siis saame seda R keskkonnas teha alljärgnevalt:
> t.test(test, mu=33) # Mina väidan, et test andmehulga keskmine on 33
One Sample t-test
data: test
t = 1.6949, df = 363, p-value = 0.09095
alternative hypothesis: true mean is not equal to 33
95 percent confidence interval:
32.86101 34.87369
sample estimates:
mean of x
33.86735
On näha, et p-value on suurem, kui 0.05, siis võime väga suure tõenäosusega alternatiivse hüpoteesi, et 33 ei ole antud andmehulga keskväärtus, tagasi lükata.
- Kui meil on kaks sõltumatut andmehulka ja me soovime võrrelda kahe andmehulga keskväärtusi. Alternatiivne hüpotees oleks: H1: EX <> EY
R keskkonnas:
> t.test(test, test2)
Welch Two Sample t-test
data: test and test2
t = -0.2466, df = 724.868, p-value = 0.8053
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-1.631842 1.267641
sample estimates:
mean of x mean of y
33.86735 34.04945
Siin on näha, et võme H1 tagasi lükata, kuna p-value on suurem kui 0.05 – lausa 0.8
Toome veel teise näite, kus on kasutatud väga erinevate keskväärtustega andmehulkasid
> t.test(test,test3)
Welch Two Sample t-test
data: test and test3
t = 8.8283, df = 652.406, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
6.096112 9.583644
sample estimates:
mean of x mean of y
33.86735 26.02747
Siinkohal on H1’e vastu võtmine õigustatud, kuna p-value on väiksem, kui 0.05.
- Miks on t.test vajalik?
Juhul, kui me võtame mingist suuremast hulgast uurimiseks väiksema näidishulga, siis on t.test abil võimalik kontrollida, kas nädishulk esindab suuremat hulka, mille kohta soovitakse näidishulga najal järeldusi teha.
Samuti saab jaotusi võrrelda. Luues ideaalse normaaljaotusega andmehulga ja võrredes t.test abil andmehulkasid, saame võrreldava adnmehulga jaotuse kohta kinnitust.
Lisaks on võimalik kahte rühma (rühmitatud mingi teguri järgi) võrrelda ja prognoosida, kas rühmitamise aluseks olev tegur avaldab olulist mõju rühmakeskmistele.
H0: EX = EY
H1: EX != EY
> t.test(r1, r2)
Welch Two Sample t-test
data: r1 and r2
t = 5.0673, df = 7.58, p-value = 0.001141
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
5.405005 14.594995
sample estimates:
mean of x mean of y
109 99
kuna p-value on väiksem, kui 0.05, siis on alust H0 kummutada ja vastu võtta H1 e rühmitamise aluseks olev tegur avaldab rühmakeskmistele olulist mõju.
boxplot funktsioon R keskkonnas
Mingi juhusliku suuruse visuaalset analüüsi aitab läbi viia R keskkonnas boxplot funktsioon. Oletame, et meil on andmehulk, milles sisaldub uuritavate vanus ja nendele vastavate laste arv.
kasutades boxplot funktsiooni
> boxplot(andmed$vanus, horizontal=T, main=”Vanuse jaotus”)
saame:
toome ka võrdluse summary funktsiooniga:
> summary(andmed$vanus)
Min. 1st Qu. Median Mean 3rd Qu. Max.
19.00 26.00 32.00 34.05 40.00 66.00
On näha, et graafiline joonis annab edasi mean min ja max parameetrid. Lisaks on olemas ka esimene ja kolmas kvantiil, mille vahel olev andmehulk on kõige kvaliteetsem. Samuti on näha kaks nn outlaierit.
Joonistame, kasutades boxplot funktsiooni, vanuse jaotused ülalpeetavate suhtes
> boxplot(andmed$vanus ~ andmed$lapsi, horizontal=T, main=”Vanuse jaotus grupeeritud ylalpeetavate j2rgi”)
Ülalpeetavate gruppide kaudu nüüd toodud min, max, kvantiilid, mediaanid ja ka vastavate ülalpeetavate gruppide outlierid.
On näha, et null ülalpeetavatega andmehulk on kõige suurem, millele järgneb ühe, kahe ja kolme ülelpeetavaga vanusegrupid.