Avainsana-arkisto: Python

Python ja Power BI yhteiskäyttö

Päivitetty 15.5.2020

Power BI desktop on hyvä työkalu datojen noutamiseen, yhdistelyyn ja visualisointiin. Visualisoinnit kootaan dashboard-tyyppiselle alustalle ja voidaan edelleen julkaista Power BI -pilvipalvelussa tai omalla Power BI -palvelimella.

Jos visualisointien tekemiseksi tarvitaan edistyneempää data-analytiikkaa, niin apuvälineinä voi käyttää Python- ja R-ohjelmointikieliä. Julkaisualustalle siirrettynä tuettuina ovat ainakin seuraavat Pythonin ohjelmakirjastot: numpy, pandas, matplotlib, seaborn, scikit-learn, scipy ja statsmodels.

Seuraavassa luon Excel-muotoiselle datalle ( http://taanila.fi/data3.xlsx ) jointplotin. Lukijan oletan entuudestaan tuntevan Power BI Desktopin toimintoja ja osaavan jonkin verran Python data-analytiikkaa.

Tässä käytävä esimerkki on yksinkertainen, mutta Python-koodi voisi sisältää paljonkin analytiikkaa kunhan lopputuloksena syntyy visualisointi (matplotlib– tai seaborn-kirjaston kuvio).

Käyttöönotto

Power BI desktopille täytyy kertoa, mitä Python-asennusta käytetään:

  • Valitse File – Options and settings – Options.
  • Valitse vasemmasta reunasta Python scripting.
  • Detected Python home directories -listasta löytyy käyttämästäsi koneesta tunnistetut Python-asennukset, joista voit valita haluamasi. Anacondaa käyttävillä, myös minulla, on ollut ongelmia saada Python toimimaan Power BI:n kanssa. Tähän ongelmaan löytyy erilaisia ratkaisuyrityksiä googlaamalla. Tätä kirjoittaessani poistin koneeltani kaikki Python-asennukset ja asensin Anacondan uusimman version. Tässä tapauksessa Anacondan Python toimi ongelmitta Power BI:ssä.

WinPython on kätevä Windows-koneilla toimiva siirrettävissä oleva paketti, joka ei vaadi minkäänlaista asennusta eikä myöskään vaikuta mitenkään koneella jo oleviin Python asennuksiin. Tätä voit käyttää PowerBI:n kanssa, jos et saa muita asennuksia yhteistyöhön. PowerBI ei automaattisesti tunnista koneella olevaa WinPythonia, mutta sen voi ottaa käyttöön valitsemalla Detected Python home directories -listasta Other ja siirtymällä Browse-toiminnolla WinPythonin kansioon:

powerbi1

Visualisointi Pythonilla

Napsauta Visualizations-paneelissa Py-kuvaketta.

powerbi2

Jos saat pyynnön sallia visualisoinnit, niin valitse Enable.

Alareunaan ilmestyy Python script editor, jossa on teksti Drag fields into Values area in the Visualization pane to start scripting. Toimi ohjeen mukaan ja lisää tarvitsemasi kentät Value-alueelle.

powerbi3

Power BI muodostaa valituista kentistä pandas dataframen, jonka nimenä on dataset.

Tärkeää: Power BI poistaa duplikaatit eli rivit, joilla on täsmälleen samat arvot. Jos haluat säilyttää kaikki rivit, niin lisää Value-alueelle myös kenttä, jossa jokaisella rivillä on eri arvo (tässä esimerkissä nro).

Python script editor on valmiina koodia varten. Lisättävän koodin toimivuus kannattaa ehdottomasti testata ohjelmointiympäristössä, jossa yleensä koodaat. Virheiden metsästäminen ja korjaaminen on Power BI:ssä työlästä.

Seuraavassa olen kopioinut koodin Python script editoriin:

powerbi4

Koodin voi suortittaa editorin oikean yläkulman Run script -painikkeella:

powerbi5

Yllä näkyvästä olen lisäksi poistanut Power BI:n tuottaman otsikon.

Ongelmia desimaalipilkkujen kanssa

Pythonia voi käyttää datan noutamiseen valitsemalla Get data – Other – Python script – Connect. Tämän jälkeen pääset kirjoittamaan koodin datan avaamiseen:

powerbi6

Tämä kuitenkin johtaa ongelmiin Suomessa:

  • Python käyttää aina desimaalierottimena pistettä.
  • PowerBI puolestaan tunnistaa pisteitä sisältävän tiedon päivämäärätyyppiseksi.

Seurauksen huomaa tietoa noudettaessa:

powerbi7

Tästä voi toki jatkaa Power Query Editoriin, jossa voi kumota päivämääräksi muuntamisen, korvata pisteet pilkuilla ja antaa sen jälkeen Power BI:n tunnistaa tietotyyppi. Useimmissa tapauksissa kannattanee kuitenkin välttää datan avaamista Python scriptillä.

Power Query Editorissa voit halutessasi muuntaa ja siivota dataa Python scripteillä. Run Python Script -painike löytyy Transform-välilehdeltä.

powerbi8

Toisaalta Power Query Editor tarjoaa monipuoliset toiminnot datan muuntamiseen ja siivoamiseen ilman Python scriptejäkin.

Lisätietoa

https://docs.microsoft.com/fi-fi/power-bi/connect-data/desktop-python-visuals

 

 

 

 

 

Koneoppiminen ja scikit-learn -kirjasto

Päivitetty 21.9.2022

Pythonia käytettäessä useimmat koneoppimisen mallit löytyvät sklearn (scikit-learn) -kirjastosta. Tästä artikkelista opit  sklearn-kirjaston mallien käytön perusperiaatteet.

Mallien käyttö sujuu seuraavien vaiheiden kautta:

  • Valmistele data
  • Tuo malli
  • Sovita malli dataan
  • Arvioi mallin sopivuutta dataan
  • Ennusta mallin avulla

Valmistele data

Käytettävään dataan täytyy tutustua huolellisesti etukäteen. Erityisesti kannattaa kiinnittää huomiota seuraaviin:

  • Puuttuvat arvot: Useimmat mallit eivät siedä puuttuvia muuttujien arvoja. Puuttuvia arvoja sisältävät rivit pitää joka poistaa tai korvata puuttuvat arvot tarkoituksenmukaisella tavalla.
  • Kategoriset muuttujat: Useimmat mallit edellyttävät muuttujien olevan määrällisiä. Kategorisia muuttujia voidaan käyttää, jos ne puretaan dikotomisiksi muuttujiksi eli dummy-muuttujiksi (katso https://www.fsd.tuni.fi/fi/palvelut/menetelmaopetus/kvanti/mittaaminen/ominaisuudet/).
  • Skaalaus: Jos selittävät muuttujat poikkeavat suuruusluokaltaan toisistaan, niin yleensä muuttujat kannattaa skaalata samaan suuruusluokkaan. Tämän voi tehdä esimerkiksi muuntamalla muuttujan arvot standardipisteiksi (muuttujan arvosta vähennetään keskiarvo ja erotus jaetaan keskihajonnalla eli lasketaan kuinka monen keskihajonnan päässä keskiarvosta ollaan).

Ohjatun (supervised) oppimisen malleissa tarvitset kaksi dataframea:

  • Selittävien muuttujien arvot (feature-matriisi , x-muuttujat). Selittävien muuttujien dataframen nimeksi voit antaa esimerkiksi X.
  • Kohdemuuttujan arvot (target, labels, y-muuttuja). Kohdemuuttujan dataframen nimeksi voit antaa esimerksi y.

Tuo malli

Tuo malli sklearn-kirjastosta. Esimerkiksi lineaarisen regressiomallin tuot seuraavasti:

from sklearn.linear_model import LinearRegression

Sovita malli dataan

Sovita malli dataan fit-funktiolla ja tallenna syntyvä olio muuttujan arvoksi. Esimerkiksi seuraavassa sovitetaan lineaarinen regressio dataan X (selittävien muuttujien dataframe) ja y (ennustettavan muuttujan arvot).

malli = LinearRegression().fit(X, y)

Syntynyt olio (malli)  sisältää monenlaista tietoa mallista. Monissa netistä ja kirjallisuudesta löytyvissä esimerkeissä edellinen tehdään kahdessa vaiheessa:

malli = LinearRegression()
malli.fit(X, y)

Tuloksena syntynyt malli-olio on sama muodostettiinpa se kummalla tavalla tahansa.
Mallia voidaan tuunata niin kutsutuilla hyperparametreilla. Esimerkiksi seuraavassa muodostetaan lineaarinen regressiomalli, johon ei otetan mukaan lainkaan vakiotermiä (intercept).

malli = LinearRegression(fit_intercept = False).fit(X, y)

Mallien tuunaus hyperparametreilla edellyttää mallien hyvää tuntemusta.

Arvioi mallin sopivuutta

Sopivuuden arviointiin on monia menetelmiä. Regressiomalleille voit esimerkiksi tulostaa selityskertoimen arvon komennolla malli.score(X, y). Selityskerroin ilmoittaa kuinka monta prosenttia selitettävän muuttujan vaihtelusta malli selittää.

Ennusta mallin avulla

Ennakoivassa analytiikassa keskeisin vaihe on tietenkin ennusteiden laskeminen uudelle datalle. Jos dataframe X_uusi sisältää uusia selittävän muuttujan arvoja, niin saat ennusteet komennolla:

malli.predict(X_uusi)

Lisätietoa

Lisätietoa koneoppimisen koodiesimerkeistä https://tilastoapu.wordpress.com/python/

Miksi Python?

Päivitetty 22.11.2022

Miksi vaivautua koodaamaan, koska datojen analysointiin sopivia valmisohjelmia (Excel, SPSS jne.) on olemassa? Seuraavassa muutamia Pythonin vahvuuksia:

  • Python kattaa kaikki data-analytiikan osa-alueet.
  • Jos sinulla ei ole aiempaa kokemusta koodauksesta, niin opit samalla koodaamaan yhdellä suosituimmista ohjelmointikielistä.
  • Python on ketterä ja toimii hyvin isojenkin datojen kanssa.
  • Perusasiat hoituvat helposti. Esimerkiksi komennolla data.describe() saat datan kaikkien muuttujien keskeisimmät tilastolliset tunnusluvut ja komennolla data.corr() saat datan muuttujien väliset korrelaatiot.
  • Kerran kirjoitettu koodi on aina suoritettavissa uudelleen. Voit analysoida rakenteeltaan samanlaisia datoja ilman koodin uudelleen kirjoittamista. Voit pienin muutoksin hyödyntää kerran kirjoitettua koodia uusien datojen kanssa.
  • Koodi toimii dokumentaationa tehdyistä analyyseistä. Voit milloin tahansa tehdä muutoksia koodiin ja suorittaa analyysit uudelleen.
  • Python tarjoaa monipuoliset mahdollisuudet tulosten graafiseen havainnollistamiseen.
  • Python on yleiskäyttöinen ohjelmointikieli ja sillä laskettuja tuloksia voit käyttää syötteenä muille ohjelmille (esim. tekoälysovellukset).
  • Pythonilla voit automatisoida data-analytiikkaa.
  • Ohjemateriaalia ja esimerkkejä löytyy helposti netistä. Jos kohtaat ongelman, niin kirjoittamalla Googleen englanninkielisen kysymyksen löydät yleensä myös vastauksen (useimmiten stackoverflow-sivustolta).
  • Python toimii samalla tavoin Windows-, Linux– ja MacOS-käyttöjärjestelmissä.
  • Python on ilmainen.
  • Pythonilla voi ohjelmoida ja automatisoida myös Exceliä.

Kuviot ja kaaviot Pythonilla

Päivitetty 23.11.2022

Tehdään aluksi selväksi kuvion (figure) ja kaavion (axes) ero. Kuviota voit ajatella kehykseksi, jonka sisällä on yksi tai useampia kaavioita. Kuvion ja kaavion suhdetta toisiinsa kuvaa oheinen osoitteesta https://realpython.com/python-matplotlib-guide/ lainattu havainnollistus:

matplotlib1

Kaavion laadinnassa ja muotoilussa päähuomio kiinnittyy kaavioon eli Axes-olioon ja sen sisältämiin olioihin. Kuvioon eli Figure-olioon huomio kiinnittyy esimerkiksi kuvion koon määrittelyssä ja usean kaavion kuvioita laadittaessa.

Kuvioiden ja kaavioiden peruskirjasto on matplotlib.pyplot. Sen lisäksi kannattaa opetella käyttämään matplotlibin varaan rakennettua seaborn-kirjastoa. Näiden kirjastojen tuonti sujuu seuraavasti:

import matplotlib.pyplot as plt
import seaborn as sns

Jos kaaviot eivät tulostu näkyviin Jupyter notebookissa, niin lisää kirjastojen tuonnin jälkeen komento %matplotlib inline (yleensä tätä ei tarvita).

Matplotlib

Pandas-kirjastossa on oma helppokäyttöinen käyttöliittymä matplotlib-grafiikkaan. Voin luoda kaavion suoraan dataframesta tai dataframen sarakkeesta. Esimerkiksi pystypylväskaavion (bar) voin luoda:

df.plot.bar()

Muita usein käytettyjä kaaviolajeja ovat barh (vaakapylväs), pie (piirakka) ja line (viiva). Viivakaavio on oletuksena, jos kaaviolajin nimi jätetään pois ( df.plot() )

Kaavion luonnin yhteydessä voin tehdä kaavioon liittyviä asetuksia parametreilla, esimerkiksi:

  • figsize arvoksi voin asettaa kuvion leveyden ja korkeuden, esimerkiksi (6, 4)
  • legend arvoksi voin asettaa False tai ’reverse’. Oletusarvona on True. legend=’reverse’ kääntää selitteen arvojen järjestyksen.
  • width arvoksi voin asettaa luvun väliltä 0 – 1. Oletusarvona on 0.5. Mitä suurempi arvo, sitä lähempänä toisiaan ja sitä paksumpia pylväät ovat. Jos width=1, niin pylväät ovat kiinni toisissaan.
  • rot kääntää luokka-akselin jakoviivojen (ticks) nimiöt annetun asteluvun mukaan. Esimerkiksi rot=45 kääntää nimiöt 45 asteen kulmaan.
  • stacked=True luo pinotun pylväskaavion.
  • color määrittää pylväiden värin. Esimerkiksi color=’C0′ asettaa väriksi käytössä olevan väripaletin ensimmäisen värin. Voin käyttää värien nimiä tai koodeja.
  • style määrittää viivakaavion viivan ja havaintopisteiden tyylin. Esimerkiksi style=’ro-’ tekee punaisen (r) viivan (), jossa havaintopisteet ovat ympyröitä (o). Lisätietoa https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.plot.html
  • edgecolor määrittää pylväiden reunan värin.

Lisätietoa ominaisuuksista, jotka voit asettaa parametreilla:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html

Parametrien lisäksi voin muotoilla kaaviota matplotlib.pyplot-funktioilla. Esimerkiksi kaavion otsikon voin lisätä komennolla plt.title(’Kaavion otsikko’). Funktiot kohdistuvat aina viimeksi luotuun kaavioon. Lisätietoa:

https://matplotlib.org/stable/tutorials/introductory/pyplot.html

Jos tarvitsen muotoiluja, joita en pääse tekemään plt-funktioilla, niin sijoitan kaavion muuttujan arvoksi, jotta voin viitata kaavioon myöhemmin.

ax = df.plot.bar()

Jos aion viitata myöhemmin myös kuvioon (figure), niin voin ennen kaavion määrittelyä luoda ”tyhjän kuvion ja kaavion” plt.subplots-funktiolla. plt.subplots() palauttaa sekä kuvion (jolle seuraavassa annettu nimi fig) että kaavion (jolle seuraavassa annettu nimi ax). Kaavion laadinnassa ilmoitan ax-parametrin arvona kaavion nimen:

fig, ax = plt.subplots()
df.plot.bar(ax = ax)

Vaihtoehtoisesti voin viitata kuvioon ja kaavioon käyttämällä funktioita plt.gcf() (get current figure) ja plt.gca() (get current axes).

Seaborn

Jos teen kaavioita lasketuista yhteenvetotaulukoista (frekvenssitaulukko, ristiintaulukointi jne.), niin käytän edellä kuvattuja tapoja. Jos taas teen kaavion suoraan raakadatasta, niin käytän yleensä seaborn-kirjaston kaaviolajeja. Seaborn-kaavioita voin muotoilla tavallisten matplotlib-kaavioiden tapaan plt-funktioilla. Myös monet kaavion luonnin matplotlib-parametrit ovat käytettävissä.

Seaborn-kaavion luontitoiminnossa figsize-parametri ei ole käytössä. Jos kuvion koko halutaan määrittää, niin se pitää tehdä luomalla kuvio ennen seaborn-kaavion laadintaa. Seuraava esimerkki kuvaa määrätyn kokoisen countplot-kaavion laatimista tips-nimisen dataframen size-nimisestä muuttujasta.

plt.figure(figsize=(6, 4))
sns.countplot(x='size', data=tips)

Seaborn-kaavioita on mukava laatia kunhan pääset sinuiksi käytetyimpien parametrien kanssa:

  • x (x-akselin muuttuja)
  • y (y-akselin muuttuja)
  • hue (minkä muuttujan mukaan värierottelu)
  • data (dataframe)

Seuraavaksi

Pääset hyvään alkuun käymällä läpi seitsemän muistiota Matplotlib perusteista. Aloita tästä:

https://nbviewer.jupyter.org/github/taanila/kaaviot/blob/master/matplotlib1.ipynb

Seaborn-kaavioiden opiskelun voit aloittaa tästä:

https://nbviewer.org/github/taanila/kaaviot/blob/master/seaborn.ipynb

Data-analytiikka Pythonilla

Päivitetty 21.9.2022

Data-analytiikka antaa vastauksia kysymyksiin

Data-analytiikka on tavoitteellista toimintaa: tavoitteena on vastata kysymyksiin. Data-analytiikan avulla vastataan monenlaisiin kysymyksiin:

  • Minkälainen ikäjakauma asiakkaillamme on?
  • Mihin toimintamme osa-alueisiin asiakkaamme ovat tyytymättömiä?
  • Onko asiakkaan iällä yhteyttä asiakastyytyväisyyteen?
  • Miten yrityksen työilmapiiri on muuttunut viime vuodesta?
  • Ketkä asiakkaistamme ovat vaarassa siirtyä kilpailijalle?
  • Keille tuotteen markkinointikampanja kannattaa suunnata?
  • Mikä mainosvaihtoehdoista tehoaa parhaiten kohderyhmään?
  • Mitä oheistuotteita verkkokaupasta ostaneella kannattaa tarjota?
  • Mikä on tuotteen ennustettu kysyntä ensi kuussa?
  • Liittyykö vakuutuskorvaushakemukseen vakuutuspetos?
  • Millä todennäköisyydellä laina-asiakas ei pysty maksamaan lainaansa takaisin?

Data

Tavoitteiden (kysymykset, joihin halutaan vastata) asettamisen jälkeen pitää selvittää minkälaista dataa tarvitaan. Data voi olla esimerkiksi:

  • Yrityksen tietokannoista löytyvää dataa (esimerkiksi CRM- ja ERP-järjestelmistä).
  • Erilaisten tiedontuottajien tarjoamaa ilmaista tai maksullista dataa.
  • Varta vasten kyselytutkimuksella tai kokeellisella tutkimuksella kerättyä dataa.
  • Erilaisten sensorien/mittalaitteiden mittaamaa dataa.

Blogissani rajoitun rakenteelliseen eli strukturoituun dataan. Rakenteellinen data on sellaista, joka voidaan tallentaa taulukkomuotoon. Yleisiä data-analytiikkaan sopivia tiedostomuotoja ovat pilkkueroteltu tekstimuoto (.csv) ja Excel-muoto (.xlsx). Tietokannoista data haetaan kyselyiden (sql kyselykieli) avulla. Nettikyselyohjelmista datan saa yleensä ulos pilkkuerotellussa tekstimuodossa tai Excel-muodossa.

Kun sopiva data on olemassa, niin datasta saadaan vastauksia kysymyksiin seuraavien vaiheiden kautta:

  • Datan valmistelu
  • Kuvaileva analytiikka
  • Selittävä analytiikka; selittävään analytiikkaan liittyy usein tilastollisen merkitsevyyden testaaminen: tilastollinen merkitsevyys kertoo, millä varmuudella otoksessa havaittuja eroja ja riippuvuuksia voidaan yleistää isompaan perusjoukkoon, josta otos on otettu.
  • Ennakoiva analytiikka; tähän käytetään yleensä koneoppimisen malleja.

Datan valmistelu

Datan valmistelulla tarkoitan datojen yhdistelyä, dataan tutustumista, datan siivoamista ja datan muunnoksia.

Datan valmistelu voi olla data-analytiikan aikaa vievin vaihe. Ensimmäiseksi kannattaa varmistaa datan taulukkomuotoisuus:

  • muuttujien nimet / kenttien nimet / sarakeotsikot ovat ensimmäisellä rivillä
  • datassa ei ole tarpeettomia tyhjiä rivejä tai sarakkeita
  • kuhunkin tilastoyksikköön/havaintoyksikköön liittyvät tiedot ovat yhdellä rivillä.

Datan valmistelu voi sisältää muiden muassa seuraavia:

  • Eri lähteistä peräisin olevien datojen yhdistely
  • Muuttujien uudelleen nimeäminen: jatkotoimet sujuvat sutjakkaammin, jos nimet ovat lyhyitä ja helposti tunnistettavia
  • Desimaalipilkkujen tarkistaminen: vaikka Suomessa desimaalipilkkuna käytetään pilkkua, niin Pythonissa täytyy käyttää pistettä
  • Päivämäärien muuntaminen päivämääriksi tunnistettavaan muotoon
  • Mittayksiköiden tarkistaminen ja tarvittavien muunnosten tekeminen
  • Puuttuvien arvojen käsittely: poistetaanko puuttuvia arvoja sisältävät rivit, korvataanko puuttuvat arvot jollain, miten puuttuvia arvoja merkitään
  • Uusien muuttujien laskeminen: esimerkiksi summamuuttuja useasta mielipidemuuttujasta, tilauksen hinta tilausmäärän ja yksikköhinnan avulla jne.
  • Arvojen luokittelu ja uudelleenkoodaaminen: esimerkiksi ikäluokat iän arvoista.

Kuvaileva analytiikka

Datan kuvailu voi sisältää seuraavia:

  • Lukumäärä- ja prosenttiyhteenvetojen laskeminen kategorisille muuttujille (frekvenssitaulukot)
  • Luokiteltujen jakaumien laskeminen määrällisille muuttujille
  • Tilastollisten tunnuslukujen laskeminen määrällisille muuttujille (keskiarvo, keskihajonta, viiden luvun yhteenveto)
  • Prosenttimuutosten laskeminen aikasarjoille
  • Aikasarjojen tarkastelu viivakaavioina
  • Liukuvien keskiarvojen esittäminen aikasarjojen yhteydessä.

Kuvailun tuloksia kannattaa visualisoida ja havainnollistaa hyvin viimeistellyillä taulukoilla ja kaavioilla.

Selittävä analytiikka ja tilastollinen merkitsevyys

Selittävä analytiikka voi sisältää seuraavia:

  • Tilastollisten tunnuslukujen vertailua eri ryhmissä
  • Kategoristen muuttujien riippuvuuden tarkastelua ristiintaulukoimalla
  • Määrällisten muuttujien välisten korrelaatioiden tarkastelua
  • Havaittujen erojen ja riippuvuuksien tilastollisen merkitsevyyden tarkastelua.

Jos käytetty data on otos isommasta perusjoukosta, niin tulokset kuvaavat otosta. Jos tarkoituksena on arvioida koko perusjoukkoa, niin otoksessa havaittujen erojen ja riippuvuuksien tilastollinen merkitsevyys kertoo, millä varmuudella eroja ja riippuvuuksia voidaan yleistää otoksesta perusjoukkoon.

Ennakoiva analytiikka ja koneoppiminen

Koneoppimisen malleilla voidaan luokitella (asiakkaat luottoriski-asiakkaisiin ja muihin, vakuutuskorvaushakemukset selviin tapauksiin ja petokselta haiskahtaviin, sähköpostiviestit roskapostiin ja kunnollisiin viesteihin jne.) ja ennakoida määrällisen muuttujan arvoja (käytetyn auton hinta, tuleva kysyntä jne.). Koneoppiminen perustuu siihen, että kone oppii käytettävän mallin parametrit olemassa olevasta datasta ja tämän jälkeen mallia voidaan soveltaa uuteen dataan.

Koneoppimisalgoritmit voidaan luokitella  seuraavasti:

  • Ohjattu oppiminen (supervised learning): Algoritmi opetetaan opetusdatalla (training data). Esimerkiksi roskapostisuodatin opetetaan sähköpostidatalla, jossa on erilaisia tietoja kustakin sähköpostiviestistä sekä tieto siitä oliko sähköpostiviesti roskapostia. Tämän datan perusteella muodostuu malli, jota käyttäen tulevista sähköpostiviesteistä voidaan tunnistaa roskapostiviestit.
  • Ohjaamaton oppiminen (Unsupervised learning): Esimerkiksi asiakkaiden jakaminen asiakassegmentteihin asiakastietojen perusteella.
  • Vahvistusoppiminen (Reinforcement learning): Algoritmi suorittaa toimia ja saa niistä palautetta palkkioiden ja rangaistusten muodossa. Algoritmi oppii saamistaan palkkioista ja rangaistuksista. Vahvistettua oppimista käytetään esimerkiksi robotiikassa.

Seuraavassa jaotellaan ohjattu ja ohjaamaton oppiminen edelleen alatyyppeihin:

mallit

Ohjattu oppiminen

Kohdemuuttuja kategorinen

Jos kohdemuuttuja (ennakoitava muuttuja) on kategorinen, niin kyseeseen tulevat luokittelua suorittavat algoritmit, esimerkiksi logistinen regressio tai päätöspuut.

Esimerkkejä, joissa on kategorinen kohdemuuttuja:

  • Roskapostisuodatin: kohdemuuttujana on tieto siitä, onko sähköpostiviesti roskapostia vai ei?
  • Lääketieteellinen diagnoosi: Kohdemuuttujana on tieto siitä, onko tutkitulla potilaalla tietty sairaus vai ei?
  • Vakuutuspetosten tunnistaminen: Kohdemuuttujana on tieto siitä, liittyykö korvaushakemukseen petos vai ei?

Kohdemuuttuja määrällinen

Jos kohdemuuttuja on määrällinen, niin kyseeseen tulevat regressiomallit ja aikasarjaennustamisen menetelmät. Esimerkkejä, joissa on määrällinen kohdemuuttuja:

  • Vanhan osakehuoneiston hinnan arviointi: Kohdemuuttujana on asunnon hinta.
  • Kysynnän ennustaminen aikaisemman kysynnän perusteella: Kohdemuuttujana on kysyntä.

Ohjaamaton oppiminen

Ohjaamattoman oppimisen algoritmi muodostaa mallin suoraan datasta (ei siis ole erillistä opetusdataa, jossa olisi valmiina kohdemuuttujan arvoja). Esimerkkinä asiakassegmenttien määrittäminen asiakasdatan pohjalta. Paljon käytetty algoritmi on k-means clustering.

Jos datassa on paljon muuttujia, jotka mittaavat osittain samoja asioita, niin datan rakennetta voidaan yksinkertaistaa yhdistämällä muuttujia uusiksi lasketuiksi muuttujiksi, joita on vähemmän kuin alkuperäisiä muuttujia. Tunnetuin algoritmi tähän tarkoitukseen on pääkomponenttianalyysi.

Data-analytiikkaa Pythonilla

Jos aiot käyttää Pythonia data-analytiikassa, niin aloita asentamalla Anaconda.

Aikasarjaennustaminen 3

Päivitetty 29.12.2020

Tämä artikkeli on jatkoa artikkeleille Aikasarjaennustaminen 1 ja Aikasarjaennustaminen 2.

Edellisen artikkelin Aikasarjaennustaminen 2 lopussa totesin, että esimerkkinä käyttämässäni aikasarjassa on neljän vuosineljänneksen välein toistuvaa kausivaihtelua, joka on syytä huomioida ennustamisessa. Tässä artikkelissa tarkastelen kausivaihtelun huomioivaa Holt-Winterin menetelmää.

Holt-Winterin tulomallissa aikasarjan tason L (level) hetkellä t määrittää lauseke

Lt = alfa * Yt/St-s + (1 – alfa)(Lt-1 + Tt-1)

Yllä Yt on viimeisin havainto, St-s on edellisen vastaavan periodin kausivaihtelu ja  Tt-1 on edellinen trendi.

Trendille T hetkellä t saadaan arvio lausekkeesta

Tt = beta * (Lt – Lt-1) + (1 – beta) * Tt-1

Kausivaihtelulle S hetkellä t saadaan arvio lausekkeesta

St = gamma * Yt/Lt + (1 – gamma) * St-s

Ennuste hetkelle t + p saadaan

(Lt + pTt)St-s

Yllä on kyse Holt-Winterin tulomallista, jossa kausivaihtelu huomioidaan kausivaihtelukertoimena. Holt-Winterin mallia voidaan soveltaa myös summamallina, jolloin kausivaihtelu huomioidaan lisättävänä kausivaihteluterminä. Tulomalli soveltuu paremmin tilanteisiin, joissa kausivaihtelukomponentin suuruus vaihtelee aikasarjan tason L mukaan. Summamalli soveltuu tilanteisiin, joissa kausivaihtelukomponentin suuruus ei riipu aikasarjan tasosta L.

Mallin parametrit alfa, beta ja gamma pyritään määrittämään siten että ennustevirheiden neliöiden keskiarvo saadaan mahdollisimman pieneksi.

Python toteutus

Esimerkkikoodin kolminkertaiseen eksponentiaaliseen tasoitukseen löydät GitHubista:

https://nbviewer.jupyter.org/github/taanila/aikasarjat/blob/main/forecast3.ipynb

Aikasarjaennustaminen 2

Päivitetty 29.12.2020

Tämä artikkeli on jatkoa yksinkertaista eksponentiaalista tasoitusta käsittelevälle artikkelille Aikasarjaennustaminen 1. Tässä artikkelissa käytän kaksinkertaista eksponentiaalista tasoitusta eli Holtin mallia, joka huomioi myös trendin.

Holtin mallissa aikasarjan tason L (level) hetkellä t määrittää lauseke

Lt = alfa * Yt + (1 – alfa) * (Lt-1 + Tt-1)

Yllä Yt on viimeisin havainto ja Tt-1 on edellinen trendi. Trendille hetkellä t saadaan arvio lausekkeesta

Tt = beta * (Lt – Lt-1) + (1 – beta) * Tt-1

Ennuste hetkelle t+p saadaan

Lt + pTt

Mallin parametrit alfa ja beta pyritään määrittämään siten että ennustevirheiden neliöiden keskiarvo saadaan mahdollisimman pieneksi.

Python toteutus

Esimerkkikoodin kaksinkertaisen eksponentiaalisen tasoituksen käytöstä löydät GitHubista:

https://nbviewer.jupyter.org/github/taanila/aikasarjat/blob/main/forecast2.ipynb

Aikasarjan lähempää tarkastelua

Löytääkseni paremman ennustemallin tarkastelen esimerkkikoodissa käyttämääni aikasarjaa hieman lähemmin purkamalla sen komponentteihin.

from statsmodels.tsa.api import seasonal_decompose
seasonal_decompose(data['Demand']).plot()

Tuloksena saan neljä kuviota:

  • alkuperäinen aikasarja
  • aikasarjasta erotettu trendi
  • aikasarjan kausivaihtelu
  • aikasarjan jäljelle jäänyt osa trendin ja kausivaihtelun poistamisen jälkeen.

holt4

Aikasarjassa on erotettavissa selkeä neljän vuosineljänneksen jaksoissa toistuva kausivaihtelu, jota kaksinkertainen eksponentiaalinen tasoitus ei huomioi ennusteessa. Asiaa voin tarkastella myös autokorrelaatioiden avulla. Autokorrelaatio tarkoittaa aikasarjan korrelaatiota viivästetyn aikasarjan kanssa, esimerkiksi aikasarjan korrelaatio neljän vuosineljänneksen takaisiin aikasarjan arvoihin. Autokorrelaatio voidaan laskea eri viiveille. Tämän voin tehdä pandas-kirjaston autocorrelation_plot-toiminnolla:

from pandas.plotting import autocorrelation_plot
autocorrelation_plot(data['Demand'])

holt5

Vaaka-akselilla on viive (lag) ja pystyakselilla autokorrelaatiokertoimen arvo. Huomaan, että viiveen 4 kohdalla on suurehko korrelaatio. Tämä viittaa neljän vuosineljänneksen mittaiseen kausivaihtelujaksoon. Kuvion katkoviivat edustavat tilastollisesti merkitsevän korrelaation rajoja. Viiveen 4 kohdalla korrelaatio on katkoviivan yläpuolella ja näin ollen tilastollisesti merkitsevä.

Seuraavassa artikkelissa Aikasarjaennustaminen 3 laadin ennustemallin, jossa myös neljän vuosineljänneksen jaksoissa toistuva kausivaihtelu on huomioitu.

Aikasarjaennustaminen 1

Päivitetty 29.12.2020

Aikasarjaennustamisessa oletan että toteutuneiden havaintojen muodostama aikasarja sisältää informaatiota, joka auttaa tulevien havaintojen ennustamisessa. Ennustusmenetelmä riippuu siitä, minkälaista systemaattista vaihtelua aikasarjassa esiintyy. Eksponentiaalisia tasoitusmenetelmiä käytettäessä on kolme päävaihtoehtoa:

  • Yksinkertainen eksponentiaalinen tasoitus aikasarjoille, joissa ei ole trendiä eikä kausivaihtelua.
  • Kaksinkertainen eksponentiaalinen tasoitus eli Holtin menetelmä aikasarjoille, joissa on trendi, mutta ei kausivaihtelua.
  • Kolminkertainen eksponentiaalinen tasoitus eli Holt-Winterin menetelmä aikasarjoille, joissa on sekä trendi että kausivaihtelu.

Tämä artikkeli käsittelee yksinkertaista eksponentiaalista tasoitusta. Yksinkertaisessa eksponentiaalisessa tasoituksessa ennuste lasketaan seuraavasti:

alfa*edellinen havainto + (1 – alfa)*edellinen ennuste

Ennuste saadaan viimeisimmän havainnon ja siihen liittyneen ennusteen painotettuna summana. Painokerroin alfa on välillä 0 – 1 oleva luku, joka ilmaisee, kuinka suurella painolla edellistä havaintoa painotetaan ennustetta laskettaessa:

    • Jos alfa on 0, niin ennuste on sama kuin edellinen ennuste.
    • Jos alfa on 1, niin ennuste on sama kuin edellinen havainto.
    • Suuret alfan arvot antavat ennusteita, jotka reagoivat herkästi aikasarjassa esiintyvään vaihteluun, koska viimeisimmillä havainnoilla on suuri paino.
    • Pienet alfan arvot tasoittavat voimakkaasti aikasarjan vaihtelua.

Alfan arvo valitaan yleensä siten että ennustevirheiden neliöiden keskiarvo saadaan mahdollisimman pieneksi. Voin kirjoittaa ennusteen laskentakaavan myös muotoon

edellinen ennuste + alfa*(edellinen havainto – edellinen ennuste)

Ennustetta siis korjataan jokaisen toteutuneen havainnon jälkeen korjaustermillä alfa*edellisen ennusteen virhe.

Python toteutus

Esimerkkikoodin yksinkertaisen eksponentiaalisen tasoituksen käyttöön löydät GitHubista:

https://nbviewer.jupyter.org/github/taanila/aikasarjat/blob/main/forecast1.ipynb

Seuraavaksi

Esimerkkinä käyttämässäni aikasarjassa on melko helppo erottaa alkupään laskeva trendi ja loppupään nouseva trendi. Seuraavassa artikkelissani Aikasarjaennustaminen 2 yritän sovittaa aikasarjaan mallin, joka huomioi trendin.

Merkitsevyyden testaus Pythonilla

Tämän artikkelin ohjelmakoodin ja tulosteet löydät GitHubista:

https://github.com/taanila/tilastoapu/blob/master/p.ipynb

Jos kopioit koodia itsellesi, niin kannattaa käyttää GitHubia. Tästä artikkelista kopioidut koodit eivät välttämättä toimi oikein.

Oletan, että lukijalla on asennettuna Anaconda ja sen mukana tuleva Jupyter notebook.

Otoksessa havaitsemieni erojen ja riippuvuuksien tilastollista merkitsevyyttä voin arvioida laskemalla p-arvon. Pythonin scipy.stats-ohjelmakirjastosta löydän funktiot p-arvojen laskentaan.

Otan ensiksi käyttöön pandas ja scipy.stats -ohjelmakirjastot ja avaan esimerkkinä käyttämäni aineiston:

import pandas as pd
import scipy.stats as stats

df = pd.read_excel('http://taanila.fi/data1.xlsx', 
   sheet_name = 'Data')
df.head()

Korrelaatiokertoimen testaus

Iän ja palkan välisen pearsonin korrelaatiokertoimen ja siihen liittyvän 2-suuntaisen p-arvon saan funktiolla

stats.pearsonr(df['ikä'], df['palkka'])

Jos haluankin käyttää spearmanin järjestyskorrelaatiota, niin saan korrelaatiokertoimen ja 2-suuntaisen p-arvon funktiolla

stats.spearmanr(df['ikä'], df['palkka'])

Korrelaatiokertoimen testaamiseen liittyvistä funktioista löydät lisätietoa scipy.org -sivustolta:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.pearsonr.html#scipy.stats.pearsonr

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.spearmanr.html

Ristiintaulukointi ja khiin neliö -testi

Esimerkiksi sukupuolen ja perhesuhteen väliseen ristiintaulukointiin liittyvän khiin neliö -testin testimuuttujan, p-arvon, vapausasteiden määrän ja odotetut frekvenssit saan funktiolla:

stats.chi2_contingency(pd.crosstab(df['sukup'], 
   df['perhe']))

Lisätietoa khiin neliö -testistä ja sen edeltävyysehdoista löydät scipy.org-sivustolta:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.chi2_contingency.html#scipy.stats.chi2_contingency

Kahden riippumattoman otoksen t-testi

Jos haluan selvittää, onko miesten ja naisten palkkakeskiarvoissa eroa, niin erotan ensin miesten ja naisten palkat toisistaan (aineistossa 1=mies, 2=nainen)

a=df['palkka'][df['sukup']==1] #Mies
 b=df['palkka'][df['sukup']==2] #Nainen

Tämän jälkeen lasken t-testimuuttujan ja 2-suuntaisen p-arvon funktiolla

stats.ttest_ind(a, b, equal_var=False)

Yllä käytin erisuurten varianssien testiä (equal_var=False).

Lisätietoa riippumattomien otosten t-testistä ja sen edeltävyysehdoista löydät scipy.org-sivustolta:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_ind.html

Mann Whitney U -testi

Jos epäilen t-testin edeltävyysehtojen toteutumista, niin voin testata edellisen esimerkin Mann Whitney U-testillä:

stats.mannwhitneyu(a,b)

Tuloksena saan U-testimuuttujan ja p-arvon. Oletuksena saan 2-suuntaisen p-arvon puolikkaan. Lisätietoa löydät scipy.org-sivustolta:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mannwhitneyu.html

Yksisuuntainen varianssianalyysi

Jos haluan selvittää onko eri koulutuksen omaavien keskipalkoissa eroja, niin voin käyttää yksisuuntaista varianssianalyysiä (anova).  Ensiksi erotan eri koulutuksen omaavien palkat toisistaan:

k1=df['palkka'][df['koulutus']==1] #peruskoulu
k2=df['palkka'][df['koulutus']==2] #2. aste
k3=df['palkka'][df['koulutus']==3] #korkeakoulu
k4=df['palkka'][df['koulutus']==4] #ylempi korkeakoulu

Tämän jälkeen lasken anovan F-testimuuttujan ja p-arvon funktiolla:

stats.f_oneway(k1,k2,k3,k4)

Lisätietoa anovasta ja sen edeltävyysehdoista löydät scipy.org-sivustolta:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.f_oneway.html#scipy.stats.f_oneway

Kruskal-Wallis -testi

Jos epäilet varianssianalyysin edeltävyysehtojen  täyttymistä edellisessä esimerkissä, niin voit käyttää varianssianalyysin sijasta Kruskal-Wallis -testiä:

stats.kruskal(k1, k2, k3, k4)

Tuloksena saat H-testimuuttujan ja p-arvon.

Lisätietoa Kruskal-Wallis-testistä löydät scipy.org-sivustolta:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kruskal.html#scipy.stats.kruskal

Muita testejä

Lisää merkitsevyystestejä ja muita tilastollisia funktioita löydät scipy.org-sivustolta:

https://docs.scipy.org/doc/scipy/reference/stats.html

 

 

 

 

Jupyter Notebook

Päivitetty 21.9.2022

Jupyter Notebook on kätevä väline data-analytiikkaan liittyvien Python-ohjelmien kirjoittamiseen ja suorittamiseen. Jupyter Notebook asentuu Anacondan asentamisen yhteydessä.

Käynnistä Jupyter Notebook

Käynnistä Jupyter Notebook suoraan käynnistysvalikosta Anacondan alta. Voit halutessasi tehdä sille oman kuvakkeen työpöydälle.

Jupyter Notebookin etusivu käynnistyy oletusselaimeesi Home-nimiselle välilehdelle.

Luo uusi muistio

Voit luoda uuden tyhjän muistion Jupyterin etusivun oikean yläreunan New – Python 3 -toiminnolla. Uusi muistio avautuu selaimeen uudelle välilehdelle.

jupyter1

muistion yläreunasta löydät työkalupainikkeita ja valikoita, joiden sisältöön kannattaa heti alussa tutustua. Muistion voit nimetä uudelleen File-valikon Rename-toiminnolla.

Kirjoita koodia

Muistio koostuu soluista. Soluun voit kirjoittaa Python-koodia ja kommentteja. Kommenttirivi alkaa aina #-merkillä. Koodin voit suorittaa usealla tavalla:

  • Cell-valikon kautta
  • työkalurivin painikkeella
  • näppäinyhdistelmällä ctrl-enter tai shift-enter (siirtää kohdistimen samalla seuraavaan soluun). Lisää pikanäppäimiä löydät googlaamalla Jupyter keyboard shortcuts.

jupyter2

Koodin suorituksesta mahdollisesti seuraavat tulosteet, varoitukset ja virheilmoitukset tulostuvat solun alapuolelle. Voit milloin tahansa muuttaa solun koodia ja suorittaa koodin uudelleen.

Uusia soluja voit lisätä Insert-valikon kautta ja soluja voit tuhota Edit-valikon kautta.

Aiemmin suorittamasi koodin tallentamat muuttujat ym. tiedot säilyvät koko istunnon ajan. Voit näin ollen suorittaa osan ohjelmasta yhdessä solussa ja jatkaa ohjelman suoritusta toisessa solussa.

Jos muokkaat ja suoritat uudelleen aiempia koodisoluja, niin ajaudut helposti ennakoimattomiin virhetilanteisiin. Voit milloin tahansa suorittaa kaikkien solujen komennot uudelleen Cell-valikon Run All -toiminnolla.

Jos avaat ja jatkat aiemmin aloittamaasi notebookia, niin suorita aiemmin kirjoittamasi koodi valitsemalla Cell-valikosta Run All.

Tallenna muistio

Muistio tallentuu automaattisesti, mutta varmuuden vuoksi kannattaa napsauttaa tallennus-kuvaketta ennen muistion sulkemista. Näin viimeisin versio on varmuudella tallessa.

Muistio tallentuu Jupyterin oletuskansioon. Minun Windows 10 -koneella oletuskansiona on C:/Users/taaak/ (taaak on minun käyttäjätunnukseni). Jupyter Notebook -tiedoston (muistion) tunnistat tiedostonimen loppuosasta .ipynb. Tallentamasi muistiot löydät Jypyterin etusivulta (Home-välilehti) ja voit avata muistion omalle välilehdelleen napsauttamalla muistion nimeä.

Voit luoda oletuskansion alle uusia kansioita. Voit siirtyä toiseen kansioon napsauttamalla Jupyterin etusivulla (Home-välilehti) kansion nimeä. Uusi muistio tallentuu aina siihen kansioon, joka on valittuna muistion luontihetkellä.

Opettele Pythonin perusteet

Voit aloittaa suoraan data-analytiikasta muistion pandas1 avulla. Parhaiten opit kirjoittamalla muistion koodit itse Jupyter muistioon ja tekemällä siinä ohessa omia kokeiluja. Sinulla ei tarvitse olla aiempaa ohjelmointikokemusta! Voit käyttää tukena muistioon liittyvää videota.

Suosittelen myös Pythonin perusteisiin tutustumista Teemu Sirkiän mainion materiaalin avulla: http://www.cs.hut.fi/~ttsirkia/Python.pdf

Asenna Anaconda tai Miniconda

Päivitetty 27.10.2022

Datojen analysointiin tarvittavat olennaiset Python-taidot voit oppia nopeasti vaikket omaisikaan aiempaa ohjelmointikokemusta.

Ensimmäiseksi tarvitset hyvän ohjelmointiympäristön. Datojen analysointia suunnittelevan kannattaa asentaa tietokoneelleen Anaconda tai Miniconda.

Anaconda

Anaconda sisältää muiden muassa

  • Python-tulkin
  • datojen analysointiin tarvittavat ohjelmakirjastot (NumPy, pandas, jne.)
  • graafiseen esittämiseen tarvittavat ohjelmakirjastot (matplotlib, seaborn jne.)
  • koneoppimisen malleihin tarvittavat ohjelmakirjastot (scikit-learn jne.)
  • Jupyter Notebookin ohjelmien kirjoittamiseen ja suorittamiseen
  • Conda-paketinhallintajärjestelmän, jolla voit asentaa ja päivittää ohjelmakirjastoja siten että kirjastojen versiot ovat keskenään yhteensopivia.

Anaconda sisältää paljon kirjastoja, joita et koskaan tarvitse. Jos haluat asentaa vain tarvitsemasi, niin asenna Anacondan sijasta Miniconda.

Löydät Anacondan Windowsille, Macille ja Linuxille osoitteesta

https://www.anaconda.com/products/distribution

Valitse oma käyttöjärjestelmäsi (Windows, macOS tai Linux) ja asenna Anaconda oletusasetuksilla.

Ohjeita Anacondan käyttöön löydät osoitteesta

https://docs.anaconda.com/anaconda/

Miniconda

Miniconda on Anacondan riisuttu versio, johon itse asennat tarvitsemasi kirjastot Conda-paketinhallintajärjestelmällä. Minicondan asennus sujuu nopeasti ja se vie tilaa huomattavasti vähemmän kuin Anaconda.

Löydät Minicondan Windowsille, Macille ja Linuxille osoitteesta

https://docs.conda.io/en/latest/miniconda.html

Valitse oma käyttöjärjestelmäsi (Windows, macOS tai Linux) ja asenna Miniconda oletusasetuksilla.

Käynnistä asennuksen jälkeen Anacondan komentorivi: Windows-koneilla Anaconda prompt (miniconda3) Windowsin käynnistysvalikosta ja MacOS-koneilla terminal.

Komentorivillä voit asentaa tarvittavat kirjastot. Data-analytiikkaa varten suosittelen ainakin seuraavia:

  • conda install jupyter (jupyter notebook on data-analytiikassa suosittu ohjelmointiympäristö).
  • conda install pandas (data-analytiikan peruskirjasto, jonka mukana asentuu myös numeerisen laskennan peruskirjasto numpy).
  • conda install seaborn (grafiikka kirjasto, jonka mukana asentuu myös grafiikan peruskirjasto matplotlib).
  • conda install scikit-learn (koneoppimisen kirjasto, jonka mukana asentuu myös tieteellisen laskennnan peruskirjasto scipy).
  • conda install statsmodels (tilastollisten mallien kirjasto mm. aikasarjaennustamiseen).
  • conda install xlwings (kirjasto Excelin ohjaamiseen).
  • conda install pandas-datareader (tämän avulla voi lukea tietoja useista nettilähteistä).
  • conda install openpyxl (Excel-tiedostojen avaamiseen).
  • conda install xlsxwriter (Excel-tiedostojen kirjoittamiseen).

Myöhemmin voit tarpeen mukaan asentaa muita kirjastoja.

Asennuksen jälkeen

Tutustu asennuksen jälkeen Jupyter notebookin toimintaan.

Analyyseihin sopivat tietokoneohjelmat

Päivitetty 8.11.2019.

Analyysien onnistumiseksi on tärkeää tietää mitä haluat laskea? Jollet tiedä, niin katsele tiekarttoja.

Excel

Excelillä voit laskea lukumäärä- ja prosenttiyhteenvedot, ristiintaulukoinnit sekä tilastolliset tunnusluvut. Lasketuista taulukoista saat helposti havainnollisia graafisia esityksiä. Excelissä on monipuoliset mahdollisuudet tulostaulukoiden ja graafisten esitysten muotoiluun. Tilastollisen merkitsevyyden testaamiseen Excel ei ole paras mahdollinen väline eikä kaikkiin tapauksiin löydy valmista toimintoa.

Jos osaat Excelin perustaidot, niin Excel on luonteva valinta perusanalyyseihin. Tilastollisen merkitsevyyden testaukseen voit käyttää esimerkiksi Pythonia tai SPSS:ää. Excel-muotoon tallennettu data aukeaa Pythonilla tai SPSS:llä.

Python

Jos et karsasta koodaamista, niin kannattaa opetella analysoimaan Python-ohjelmointikielellä. Aikaisempaa ohjelmointi/koodaus-kokemusta et tarvitse. Python  ohjelmakirjastoineen on joustava, tehokas ja ilmainen väline datojen analysointiin, p-arvojen laskentaan ja visualisointiin.

Python sopii erinomaisesti myös koneoppimisen malleihin ja ennakoivaan analytiikkaan.

Lue lisää:

Tilasto-ohjelmat

Tilasto-ohjelmat ovat varta vasten tilastoaineistojen analysointiin tarkoitettuja ohjelmia ja näin ollen varma valinta datan analysointiin. Tilastollisen merkitsevyyden testaus (khiin neliö -testi, t-testit, korrelaation merkitsevyys, Mann-Whitney -testi jne.) sujuu tilasto-ohjelmalla helposti. Tilasto-ohjelmista käytetyimpiä on SPSS.

Pienen opettelun jälkeen SPSS on helppokäyttöinen ohjelma, jolla voit analysoida myös alunperin Excel-muotoon tallennettuja datoja. Graafisten esitysten laatiminen vaatii hieman enemmän opettelua.

Lisätietoa SPSS-tilastohjelmasta.

Nettikyselyohjelmistot

Webropol, SurveyMonkey, Questback ja muut vastaavat ovat nettikyselyn tekemiseen sopivia ohjelmistoja. Niiden avulla saat myös joitain analyysejä nettikyselyn vastauksista. Monipuolisuudeltaan ja joustavuudeltaan ne eivät ole Excelin, Pythonin tai SPSS:n veroisia. Voit hyödyntää niiden tuottamia taulukoita ja graafisia esityksiä harkintasi mukaan. Useimmissa tapauksissa nettikyselyn raakadata täytyy kuitenkin tuoda Exceliin, Pythoniin tai tilasto-ohjelmaan monipuolisempien analyysien tekemiseksi.

Lisätietoa Webropolista.

Pääsääntö

Pääsääntö: Käytetty tietokoneohjelma ei ole itsetarkoitus. Olennaista on, että käytät tilanteeseen sopivia menetelmiä, olet huolellinen sekä esität tulokset selkeästi ja havainnollisesti.