20.09.2017 / Mika Laukkanen

Kun nykyään uutisoidaan tekoälystä ja koneoppimisesta, niin eturintamaan nousee kuvien tunnistus, itseohjautuvat autot tai vaikkapa tekstin kääntäminen tai sen kontekstin ymmärtäminen. Näiden mediaseksikkäiden aiheiden taakse jää aihealueita, joissa tekoälyllä on paljon annettavaa, mutta uutiskynnys ei ylity. Yksi näistä aiheista on shutterstock_425909323erilaisten järjestelmien datan laadun parantaminen algoritmien avulla.

Ongelmia datan laadussa?

Datan laatuongelmat aiheuttavat erittäin suuria kustannuksia yrityksille vuosittain. Kustannuksia syntyy, kun dataa joudutaan parsimaan ja paikkailemaan erilaisissa järjestelmissä, integraatioissa, tietovarastoissa, jne. Lisäksi on huomioitava piilokustannukset, jotka syntyvät puutteellisen tai virheellisen datan perusteella tehdyistä vääristä päätöksistä tai päätösten lykkäämisestä. Ei ole tavatonta, että esimerkiksi tietovarastoprojektissa 10%:ia datan laatuongelmista aiheuttaa vaikka 50-70% kustannuksista. Itse muistan uraltani yhden projektin, jossa 95% datasta saatiin tietovarastoon nätisti 25 päivässä, mutta lopun 5%:n fiksaaminen sinne vei 120 päivää. Työmääräarviot eivät menneet ihan putkeen.

Miten koneoppiminen voisi sitten auttaa?

Case 1, puuttuvan datan paikkaus

Lukuisten tietojärjestelmien datoissa on puutteita, koska käyttäjät eivät syötä tietoja hyvistä ja sinnikkäistä ohjeistuksista huolimatta. Koneoppimista käyttämällä voi olla mahdollista täydentää nämä tiedot. Seuraavat esimerkit ovat oikeista tilanteista.

  • CRM-järjestelmästä puuttui merkittävästi tietoja, joiden kirjaamisesta asiakkaat olivat itse vastuussa (web-portaalin kautta). Koneoppimismalliin tuotiin CRM datat ja kaikkien asiakkaiden ostohistoriat. Ostohistoriadataa hyödyntämällä voitiin luoda ennustamalli, joka osasi varsin tarkasti ennustaa asiakkaan puuttuvat tiedot. Markkinoinnin kannalta tämä oli hyvä asia, koska kohdentaminen menisi nyt todennäköisemmin oikein kuin puuttuvia tietoja hyödyntämällä. Sellainenkin asia paljastui, että ostohistoriasta ennustetut asiakasmuuttujat taisivat olla jopa tarkempia kuin asiakkaan omat merkinnät. Nehän oli tehty joskus asiakkuuden alussa ja sittemmin vanhentuneet.
  • Eräässä tietojärjestelmässä oli puutteita erilaisten luokitusten (esim. tuoteryhmittelyt) merkinnässä. Käyttämällä järjestelmän muita tietoja koneoppimismalli pystyi erittäin tarkasti ennustamaan puuttuvan tiedon luokituksen.

Luulen että Facebook, Google ja muut vastaavat toimijat tekevät tätä aktiivisesti. Vaikket olisikaan antanut itsestäsi jotain tietoa, niin se on ennustettavissa web-käyttösi perusteella.

Case 2, virheellisen datan korjaus

Jälleen pari käytännön esimerkkiä.

  • Kanta-asiakasrekisteri, johon on sama asiakas kirjattu lukuisia kertoja – ehkä pienillä eroilla kirjoitusasussa. Koneoppimista käyttämällä voimme löytää tehokkaasti nämä dublikaattiasiakkaat, jonka jälkeen asiakasrekisterin korjaus käy käden käänteessä. Tosin eräässä mediatalossa oli päädytty excelissä läpikäyntiin, ja aikaa oli varattu puolisen vuotta.
  • Toinen esimerkki on myös asiakasrekisteristä, johon asiakkaan perustietoja on kirjoitettu väärin, esim. Matti Meikäläisestä on tullut Mati Meikälinen. Jälleen koneoppimisen keinoin voimme etsiä virheitä ja korjata niitä. Tässä tapauksessa malli voisi esimerkiksi ehdottaa, että oikea kirjoitusasu on “Matti Meikäläinen 98%”, “Matti Teikäläinen 93%”, … “Matti Nykänen 4%”.  Lopun prosenttiluku viittaa mallin antamaan todennäköisyyteen oikeasta nimestä.
  • Poikkeavien havaintojen etsintä ja mahdollisesti korjaus. Järjestelmiin syntyy vahingossa typoja, esim. iäksi tulee 1983 vuotta tai alennusprosentiksi 120%. Tällaiset kummajaiset toki löytää sql-kyselyillä, mutta se vaatii istumalihaksia ja koodaamista. Ohjelmointia ja koneoppimista hyödyntämällä voidaan kirjoittaa koodi, joka haarukoi isoja datamassoja lävitse ja palauttaa arviot poikkeavista havainnoista, jolloin ihmiset voivat päättää mitä tehdä niille. Joissakin tilanteissa on myös mahdollista on laittaa algoritmi korjaamaan datan suoraan.

Case 3, data-integraatiot ja tietovarastolataukset

Näillä osa-alueilla liikutellaan merkittävästi dataa päivästä toiseen. Virhehallinta datan tarkkailun suhteen on kuitenkin verrattain jäykkää. Jos mitään dataa ei siirry vaikka tietoliikennekatkosten vuoksi, niin niistä saadaan virheilmoituksia. Samoin muista triviaaleista virheistä. Mutta jos dataa siirtyykin esim. 80% normaalivolyymista tai siirtyvän datan sisältö poikkeaa olennaisesti aiemmasta (esim. hinnastossa tulisi pelkkiä nollia), niin yleensä tällaisia virheitä ei saada kiinni. Joskus tällaisten puutteiden huomaaminen voi kestää kauankin, jolloin korjaaminen tulee kalliiksi tai jopa mahdottomaksi. Esimerkiksi eräässä projektissa kaikki varastosaldot eivät siirtyneet pariin viikkoon, eikä niitä ollut enää mistään saatavilla jälkikäteen.

Arvaatte varmaan, että tähänkin löytyy ratkaisuja koneoppimista hyödyntämällä! Eikä se ole edes vaikeaa tai kovin kallista.

Tällä hetkellä myös ohjelmistorobotiikka on erittäin suosittu aihe. Tämä kirjoitus liittyy myös läheisesti siihen, koska koneoppimismallit usein upotetaan ohjelmistojen sisään, jotka niitä sitten käyttävät.

Jos nämä aiheet kiinnostavat, niin ole yhteyksissä.


16.05.2017 / Ville Niemijärvi

Vähittäiskauppiaat ja kaupan alaa tuntevat huomio

Teimme jo pari vuotta sitten mainonnan optimoinnin -sovelluksen. Kyseessä on joukko algoritmeja, jotka opettamalla voidaan kertoa mitä tuotteita mainoskampanjaan kannattaa laittaa, jotta siitä saataisiin mahdollisimman suuri tuotto.

Se toimii niin perinteisessä printtimainonnassa, suoramainonnassa kuin web-mainonnassa. Missä tahansa tilanteessa missä kauppiaalla on iso määrä tuotteita, joista pitäisi päättää mitkä laittaa kampanjaan saadakseen eniten myyntiä.

Analysoimme tilastollisten mallien avulla historiamyyntiä ja menneitä kampanjoita, joiden pohjalta kauppias saa tietää:

  • Mitkä tuotteet ovat nosteessa ja mitkä laskussa?
  • Mille tuotteille mainonnalla on suurin vaikutus?
  • Mitkä tuotteet aiheuttavat suurimman ostoskorin eli nostavat myös muiden tuotteiden myyntiä?

Lopputuloksena on siis älykäs mainonnan suunnittelijan työväline, joka tarjoaa automaattisesti parhaimmat tuotteet kuhunkin kampanjaan.

Emme koodanneet vielä varsinaista käyttöliittymää vaan upotimme sovelluksen ensiksi QlikView:iin ja integroimme sen R:ään. Sitten teimme sen Azuren pilveen, jotta voimme tarjota sitä SaaS -palveluna. Ihan oikea käytännön sovelluskohde koneälylle tai data sciencelle. Se ratkaisee konkreettisen ongelman ja tuottaa lisämyyntiä, joka voidaan vielä todentaa.

Testasimme mainonnan optimointia kourallisella vähittäiskaupan asiakkaita, tulokset olivat todella hyviä.

Kohtasimme dataan liittyviä haasteita, niitä ratkottiin, algoritmeja ja sovellusta muokattiin. Myimme palvelun yhdelle tukkukaupalle, kiinnostusta oli usealla vähittäiskaupalla.

Myyntiponnistelut jäivät kuitenkin vähiin ja hautautuivat muiden päivätöiden sekaan. Piti laskuttaa ja uuden tuotteen vieminen markkinoille, vaikka kuinka hyvä tahansa, ei ole helppoa. Tuote ei breikannut. Se jäi pöytälaatikkoon. Ei siksi, että se olisi huono tai etteikö se toimisi. Emme vain osanneet ja ehtineet myydä sitä.

Uskon kuitenkin, että käsissämme on valtava potentiaali. Tai sitten ei.

Kokeilenkin nyt uudestaan. Tämä blogikirjoitus on välimuoto markkinakartoitusta ja myyntiä. Toisaalta jos joku haluaa pölliä tästä hyvän idean ja toteuttaa itse, siitä vain.

Hyviä ideoita ei kannata pantata itsellä. Pöytälaatikossa ne eivät hyödytä ketään.

Eli kaikki vähittäiskauppaa tuntevat. Arvostaisin kovasti jos voisitte auttaa ja kertoa:

  • Onko tällaiselle palvelulle tarvetta?
  • Onko kampanjasuunnittelussa ja mainonnassa petrattavaa isosti? Onko business riittävän suuri?
  • Kannattaako tätä lähteä myymään isosti?
  • Miten sitä pitäisi kehittää?
  • Ostaisitko tämän?

Mennään siis suoraan asiaan. Kerron seuraavasti miten mainonnan optimoinnilla voidaan tehdä miljoonia lisämyyntiä.

Ongelma: mainoskampanjat eivät tuota

Olen tehnyt yli 10 vuotta töitä vähittäiskaupan analytiikan ja raportoinnin parissa usean eri ketjun kanssa. Minua on kiinnostanut erityisesti mainostaminen, oli kyse verkkobannereista tai sanomalehdessä olevasta kokosivun mainoksesta.

Lehtimainos

Ongelma mainoskampanjoissa on käsittääkseni seuraava:

  • tuotteita pienemmälläkin kauppaketjulla on kymmeniä tuhansia, joillain nimikkeitä löytyy useita satojatuhansia
  • miten löytää satojentuhansien tuotteiden joukosta ne 10 tai 20 jotka tuovat suurimman myynnin tai katteen?
  • joissakin ketjuissa mainostettavat tuotteet toistavat itseään: kahvi, olut, vessapaperi ja sesonkiin liittyvät tuotteet eli vappuna simaa ja serpentiiniä, kesällä grillitarpeita jne.
  • mainostajat pelaavat varman päälle, jolloin tämä tarkoittaa, että esimerkiksi kahvia myydään miinuskatteella.

Mainonta ei ole siis kovin optimoitua. Se perustuu varman päälle pelaamiselle, tuotteiden myymiselle tappiolla tai sitten mututuntumaan.

Ja toki myös vuosien henkilökohtaiseen kokemukseen, joka on äärimmäisen arvokasta mutta harvemmin jaettavissa muille.

Lähdin pohtimaan miten mainoskampanjoihin löydettäisiin edistyneen analytiikan avulla parhaiten myyvät tuotteet.

Ratkaisu: algoritmit löytävät parhaiten myyvät tuotteet

Ensimmäinen ajatukseni oli etsiä kampanjaan ne tuotteet, joilla on nouseva kysynnän trendi. Eli miksi mainostaa tuotteita, joita kukaan ei osta muutenkaan tai joka on väistyvä.

Toisaalta piti tietää mikä tuote myy juuri mainostettavalla viikolla. Eihän esimerkiksi pääsiäissesonkituotteita, kuten mämmiä, osteta koko vuonna laisinkaan. Joten pelkän trendin katsominen ei riittäisi.

Aikasarja-analyysin avulla saamme myyntiennusteen ja tuotteen kysynnän trendin

Olimme tehneet Louhialla paljon myynnin ja kysynnän ennusteita. Hyödyntäen aikasarja-analyysiä. Toisin sanoen otetaan tuotteen (tai minkä tahansa asian) menekki usealta vuodelta taaksepäin ja pyöräytetään se algoritmin läpi. Lopputuloksena saamme kysynnän ennusteen valitulle ajanjaksolle, esimerkiksi mainosviikolle.

sales_prediction_Qlikview_R_sarimax_louhia

Tämä on lähes aina tarkempi vaihtoehto kuin laskea vuosien välistä keskiarvoa tai verrata vain edelliseen vuoteen (tai viikkoon/kuukauteen).

Aikasarja-analyysi kertoo myös tuotteen kysynnän trendin eli mihin suuntaan kysyntä menee: laskeeko se, pysyykö samana vai nouseeko.

Tätä voidaan hyödyntää myös mainonnassa, ehkä laskevan kysynnän tuotteeseen ei kannata tuhlata mainosrahoja. Tai sitten juuri sitä pitää buustata ja piristää sen myyntiä oikea-aikaisella mainoskampanjalla.

Mainoskampanjan vaikutus tuotteen myyntiin

Aikasarja-analyysin oheistuotoksena saamme ns. kovariantin avulla tietää mikä on mainonnan vaikutus kysyntään. Tai minkä tahansa muunkin ulkopuolisen tekijän.

Mainoskampanjan tuoma noste näkyy piikkeina myynnissä.

Jos vain tuote (tai vastaava tuote) on ollut riittävästi historian aikana mainoksessa, pystymme kertomaan sen perusmyynnin (baseline, myynti ilman mainosta) ja mainonnan tuoman nosteen.

Ja tämä tietenkin suhteutettuna ko. ajanjaksoon.

Esimerkki: Muumivaippoja myydään toukokuussa keskimäärin 5500€/viikko.

Kun muumivaipat ovat lehtimainoksessa, nousee niiden myynti 8000€/viikko.

Mainonnan vaikutus on siis 2500€/viikko eli n. 45% buusti.

Tämä itsessään on jo valtavan informatiivistä ja arvokasta tietoa mainostajalle ja auttaa löytämään ne tuotteet, joilla saadaan valtavasti lisämyyntiä.

Mutta emme olleet tyytyväisiä ihan vielä.

Ostoskorianalyysin avulla maksimoidaan ostoskorin suuruus

Olimme tehneet myös ostoskorianalyysejä monesti. Ostoskorianalyysin avulla tiedetään mitä muita tuotteita mainostettavan tuotteen ohella myydään ja millä todennäköisyyksillä.

Eli jos asiakkaan ostoskorissa on Muumivaipat, kertoo ostoskorianalyysi millä todennäköisyydellä koriin eksyy myös pilttipurkki, äidinmaidonvastike tai six-pack keskiolutta.

Mainonnassa tätä voidaan hyödyntää siten, että laitetaan mainokseen sellaisia tuotteita, jotka imevät sinne mahdollisimman paljon muitakin tuotteita. Toisin sanoen kasvatetaan ostoskorin kokoa oikeilla sisäänheittotuotteilla.

On hölmöä mainostaa tuotetta, vieläpä miinuskatteella, jos asiakkaat tulevat ja ostavat vain tuon yhden tuotteen.

Päätimme siis yhdistää aikasarja-analyysin ja ostoskorianalyysin.

Näin aikasarja-analyysin ja ostoskorianalyysin yhdistelmällä saatiin tietää:

  • millä tuotteilla on suurin myynti tulevilla viikoilla (myyntiennuste)
  • millä tuotteilla mainonnan vaikutus on suurin (kampanjan tuoma noste)
  • mitkä tuotteet keräävät mahdollisimman paljon muita tuotteita (ostoskorianalyysi)
  • mikä on mainoksen tuoma noste näille ostoskorista löytyville lisätuotteille

Tulokset

Kun myyntihistoria siis ajettiin näiden kahden algoritmin läpi, saatiin tuloksena optimaalisin mainostettavien tuotteiden setti, joka tuo suurimman myynnin.

Tai katteen. Tai asiakasmäärän. Mikä nyt mainostajaa eniten kiinnostaa.

Alla oleva kuva esittää kuvitteellisen tilanteen, jossa Partioaitta (ei asiakassuhdetta) käyttäisi mainonnan optimointia.

Mainonnan optimointi Louhia Analytics Oy

Esimerkki:

Mainoskampanjan suunnittelijalle esitetään järjestyksessä eniten lisämyyntiä (tai katetta) tuovat tuotteet.

Tai vaihtoehtoisesti hän voi hakea tiettyjä tuotteita ja vertailla niitä keskenään ja simuloida mikä olisi mainoksen kokonaistuotto tällä tuotekokoonpanolla.

Tässä esimerkissä Fjällräven Kånken repun laittaminen mainokseen nostaa ko. tuotteen myyntiä 186% eli 7310€.

Tämän lisäksi Fjällräven Kånken repun kanssa ostetaan erityisesti neljää yllä esitettyä tuotetta. Näistä saadaan tuotteiden normaaliin perusmyyntiin nähden lisämyyntiä yhteensä n. 8554€. Huom: ilman, että ne itse ovat mainoksessa.

Koska Fjällräven Kånken oli mainoksessa, toi se lisämyyntiä yhteensä 15 864€.

Tässä esimerkissä meillä on siis yksi suositeltu tuote mutta käytännössä mainonnan optimointi kertoo tuotteiden kokonaisvaikutuksen kaikille tuotteille eli kampanjan suunnittelija voi valita sen täydellisen tuotekombon, oli tilaa sitten viidelle tai kymmenelle tuotteelle.

Tuoden mukaan tietenkin oman asiantuntemuksen ja näin tehden mainoksesta vieläkin paremman.

Mainonnan optimointi yhdistää siis:

  • aikasarja-analyysin, joka kertoo paljonko tuotetta tullaan myymään tulevaisuudessa eli esimerkiksi kampanjaviikolla
  • mainonnan vaikutuksen tuotteen myyntiin eli mikä on mainoksen noste (lift)
  • ostoskorianalyysin, joka kertoo mitä tuotteita myydään mainostettavan tuotteen kanssa yhdessä ja mikä on niiden saama noste

Kaikki tämä automatisoituna, vaikka kerran yössä ja integroituna esimerkiksi business intelligence -työvälineeseen tai tuotuna vaikka sitten asiakkaan ERP:hen tai Exceliin.

Louhian mainoskampanjan optimointi 2

Lisämausteet: hintajousto, somepöhinä, menestyskampanjan resepti

Lähdimme jatkokehittämään ratkaisuamme, tehdäksemme siitä vieläkin paremman.

Hintajoustoanalyysi kertoo kannattaako tuotetta laittaa alennukseen

Saimme palautetta eräältä ketjulta. He haluavat mainostaessaan tietää kannattaako tuote laittaa alennukseen ja kuinka suureen. Eli mikä olisi sopiva alennus, jotta tuotteesta todella tulee sisäänheittotuote.

No problem.

Lisäsimme mukaan hintajoustoanalyysin, joka kertoo alennusprosentin vaikutuksen tuotteen kysyntään. Näin mainostaja tietää riittääkö normihinta, 5% alennus vai pitääkö laittaa kunnon jytky ja pudottaa hinta puoleen.

Suomen kattavin somedata mainonnan tukena

Tutustuimme myös kumppanimme Futusomen kautta somedataan ja sen käyttö kampanjoinnissa on kiinnostanut jo vuosia. Tähän liittyen olemme tehneet myös useita harjoituksia ja pystyneet näyttämään, että somedatan perusteella voidaan ennustaa tuotteen kysyntää.

Toisaalta somedatan avulla voidaan katsoa etukäteen onko tuotteen ympärillä pöhinää tai jälkikäteen aiheuttiko mainoskampanja keskustelua ja miten tämä korreloi myynnin kanssa.

Mikä on menestyskampanjan resepti ja voidaanko se toistaa?

Itseä on aina kiinnostanut onko tuotteiden lisäksi jotain muuta tekijää, joka toistuu niissä mainoskampanjoissa, jotka menestyvät.

Valittu media (printti, display, tv, radio), ajankohta, sesonki, tuotteiden määrä, kuvien määrä, koko, väri jne.

Joten lisäsimme mainonnan optimointiin lisäoptioksi mahdollisuuden selvittää ja oppia, mitkä mainokset toimivat ja miksi.

Tämän avulla voidaan selvittää menestyskampanjan resepti ja toistaa se.

Näin palvelumme eri komponentit hahmottuivat ja täydellisen mainoskampanjan kertova konsepti oli valmis.

 

Louhian mainoskampanjan optimointi
Louhian mainoskampanjan optimointipalvelun osa-alueet

 

Kiinnostaako mainonnan optimointi vähittäiskauppoja?

Palataan blogin alussa esitettyihin kysymyksiin.

  • Onko teidän mielestä tässä konseptissa tai tuotteessa ideaa?
  • Onko business case riittävän iso eli onko mainonnan suunnittelussa petrattavaa ja paljon?
  • Mitä ongelmia tai haasteita teille tulee mieleen ratkaisun käyttöönotossa yrityksessänne?
  • Ostaisitteko palvelun?

Kaikki kommentit, ideat ja ajatukset ovat erittäin tervetulleita ja otetaan kiitollisina vastaan.

Jos olet kiinnostunut juttelemaan palvelusta lisää, ota yhteyttä (+358 50 326 4989 / Ville).


28.03.2014 / Lasse Liukkonen

Hintajoustoanalyysi on helpoimmillaan regressioanalyysiä ja regressiomallin oikeanlaista tulkintaa. Artikkelissa (http://www.dataapple.net/?author=1) käsitellään aihetta selkeästi ja melko yksityiskohtaisesti. Tässä blogissa esitellään edellä mainitun artikkelin pääkohdat eli hintajoustoanalyysin päävaiheet, tulokset ja tulkinnat R-ohjelmoinnin sovelluksena. Käytämme tässä generoitua aineistoa, jonka struktuuri on sama kuin artikkelissa.

Hintajoustoanalyysillä haetaan vastauksia muun muassa seuraaviin kysymyksiin:

  • Mitkä tarkasteltavat tuotteet ovat toistensa substituutteja/komplementteja​?
  • Mikä on kampanjan vaikutus kappalemyyntiin?
  • Mikä on tuotteen hintajousto (tuotteen hinnan vaikutus myytyihin kappalemääriin)?
  • Mikä on ristihintajousto muiden tarkasteluissa esiintyvien tuotteiden kanssa?
  • Mikä on optimaalisin hinta tarkasteltavalle tuotteelle, kun muiden tuotteiden hinnat kiinnitetään?
  • Mikä optimaalisen hinnan tuottama katteen määrä?
  • Paljonko varastossa tulee olla tarkasteltavaa tuotetta, kun tuotteelle asetetaan optimaalinen hinta?

Tuntuu aluksi uskomattomalta miten yhdestä regressioyhtälöstä voidaan saada näin moneen kysymykseen vastaukset, mutta näin se vain menee, joskus yksinkertaisuus on se mitä tarvitaan.

1. Aineisto

Aineisto sisältää viikottaiset myyntihinnat Jaffa, DRPepper, sekä Kolajuomasta. Tämän lisäksi aineistossa Kolajuoman viikottaiset myynnin kappalemäärät, sekä kamppanja-indikaattori (2 eri kampanjaa). Suuressa osassa analyysiä kiinnostuksen kohteena on Kolajuoman kappalemääräinen myynti (Myynti_kpl), jota selitetään muilla aineiston muuttujilla. Seuraavassa kuvassa on aineisto kokonaisuudessaan, sekä aineistoa kuvaavia tunnuslukuja.

Hintajousto_data

   Hintajousto_data_kuvaus

Koska jatkon analyysi perustuu lineaariseen regressioon, sekä yksinkertaisiin tilastollisiin testeihin, on syytä tarkastaa löytyykö aineistosta erityisen poikkeavia Kolajuoman myyntimääriä. Lisäksi on syytä tutkia normaalisuusoletus. Blogissa turvaudutaan vain graafiseen tarkasteluun.

Hintajousto_outliers

Viiksilaatikosta (kuvassa vasemmalla) näemme ettei aineisto sisällä poikkeavia havaintoja. Oikean puolen kuva paljastaa, että myyntimäärien tiheysfunktio (histogrammi) on liki normaalinen, voimme siis hyvillä mielin aloittaa analysoinnin.

2. Kampanjoiden vertailu (ilman muiden selittävien muuttujien informaatiota)

Tutkitaan aluksi kumpi kampanjoista toimii paremmin Kolajuoman myynnissä. Jaetaan aineisto aluksi kahteen osaan, filtteröivänä muuttujana Kampanja. Jotta kampanjoista saadaan luotua miellekuva niin oletetaan, että kampanjoiden sanomat ovat seuraavanlaiset:

  • Kampanja=0: “Kolajuoma koko perheen janojuoma!”
  • Kampanja=1: “Kolajuomassa entistä vähemmän kaloreita!”

Hintajousto_kampanjat

Hintajousto_kampanjat_hist

Tutkitaan kampanjoiden eroavaisuutta yksinkertaisella kahden otoksen t-testillä. Seuraavassa kuvassa R-ohjelman tulostus Welchin t-testistä, sekä otosten normaalisuustestit Shapiro-Wilkin-testillä.

Hintajousto_t_testi

Koska Welchin t-testin p-arvo on ~0.0009<0.05 voimme todeta, että viikottaisten myyntimäärien keskiarvot eroavat toisistaan kampanjoiden välillä, kampanjoilla on siis erilaiset vaikutukset myyntimääriin. 95%-luottamusväli paljastaa, että kampanjan “Kolajuoma on koko perheen janojuoma!”  aikana Kolajuoman viikottainen myyntimäärä on suurella varmuudella 81-279 kpl vähemmän kuin kampanjan “Kolajuomassa entistä vähemmän kaloreita!” aikana. Jälkimmäisenä mainittu kampanja tuntuu siis pureutuvan paremmin kuluttajiin. Pidetään tämä tulos mielessä ja verrataan sitä jatkossa muodostettavan regressiomallin vastaavaan kertoimeen. Regressiomalli ottaa huomioon myös muiden aineistossa olevien muuttujien vaikutukset ja näin ollen kampanja-indikaattorin merkitys voi muuttua lopullisessa tulkinnassa (joskin epätodennäköistä, että kääntyisi päälaelleen).

3. Regressiomallin muodostaminen

Noniin! Nyt päästään itseasiaan, regressiomallin muodostamiseen ja sen tulkinnan avulla saataviin tuloksiin. Kertauksena todettakoon, että Myynti_kpl-muuttuja toimii regressiomallin vasteena ja muut aineiston muuttujat selittävinä.

Tutkitaan aluksi muuttujien välisiä korrelaatioita graafisen kuvan avulla (Varoitus: mainos R:n monipuolisista visualisointimahdollisuuksista).

Hintajousto_korrelaatiot

Korrelaatiot kappalemyynnin ja Kolajuoman hinnan, kampanjan, DRPepperin hinnan sekä Jaffan hinnan välillä ovat 0.85, 0.58, 0.37, 0.37. Korrelaatioiden perusteella muuttujien karsimista ei tarvitse suorittaa, otamme siis kaikki muuttujat malliin mukaan. Seuraavassa kuvassa regressiomallin kertoimet ja merkitsevyydet, sekä mallin selitysaste.

Hintajousto_regressio

Kola_hinta, Kampanja, Jaffa_hinta muuttujien kertoimet eroavat merkitsevästi 0:sta (katso p-arvot, PR(>|t|)), joten niiden arvojen muutoksilla on vaikutusta Kolajuoman viikottaiseen kappalemyyntiin. DRPepperi_hinta-muuttujan regressiokerroin 66.27 ei ole tilastollisesti merkitsevä, kun käytetään rajana 0.05 merkitsevyystasoa. Tiedämme kuitenkin kuluttajakokemuksesta, että kun DRPepperin hinta on alhainen ostaa kuluttaja mieluiten kyseistä tuotetta, jolloin muiden virvoitusjuomien kappalemyynti laskee, erityisesti Kolajuoman. Emme siis tiputa DRPepper_hinta-muuttujaa regressiomallista ulos.

Mallin selitysaste on ~0.9, joten selittävät muuttujat pystyvät (melko) hyvin selittämään Kolajuoman kappalemyyntiä.

Ennen kuin voimme tulkita regressiomallin kertoimia täytyy mallioletukset tarkistaa. Seuraavassa nippu graafeja oletuksien tutkimista varten; voimme todeta kaiken olevan kunnossa.

Hintajousto_mallin_oletukset

Testataan lisäksi multikollineaarisuutta VIF-testin (variance inflation factor) avulla, hyvänä nyrkkisääntönä voidaan pitää, että multikollineaarisuus on suurta mikäli regressiokerroin kohtainen VIF-arvo on suurempi kuin 5. VIF-vektori on helppo laskea myös manuaalisesti (joskin ei kauhean nopea tapa), mikäli laskentaa ei ole implementoitu käyttämääsi ohjelmistoon. VIF-arvot saadaan asettamalla yksi selittävä muuttuja kerrallaan regression vasteeksi, jota selitetään jäljelle jäävillä selittävillä muuttujilla. Lasketaan manuaalisesti Kola_hinnan VIF-arvo,

Kola_hinta=4.96 – 0.54*Kampanja – 0.48*DRPepper_hinta+0.01*Jaffa_hinta.

Muodostetun regressiomallin selitysaste on 0.1975, josta saamme VIF-arvon Kola_hinta-muuttujalle

VIF(Kola_hinta)=1/(1-R^2)=1/(1-0.1975)=1.246.

Seuraavassa kuvassa VIF-vektori kokonaisuudessaan:

Hintajousto_VIF

Kuvasta näemme, että kertoimet ovat alle 5, joten multikollineaarisuus on vähäistä. Nyt kun kaikki oleellisimmat mallioletukset on tutkittu voimme hyvillä mielin kirjoittaa regressiomallin auki ja aloittaa sen tulkitsemisen,

Myynti_kpl=1013.42 – 153.72*Kola_hinta + 89.23*Kampanja + 66.27*DRPepper_hinta – 75.83*Jaffa_hinta.

4. Hintajoustot

Hintajoustoilla tarkoitetaan yleisesti ottaen tuotteen ominaisuuden (esim. Kappalemyynti) suhteellista muutosta sen suhteellisen hinnan muuttuessa. Tarkastelemme myös ristihintajoustoa, jossa Kolajuoman kappalemyynnin suhteellista muutosta tutkitaan jonkin muun tuotteen hinnan muuttuessa.

Myynnin hintajousto(Kolajuoma)=suhteellinen muutos kappalemyynnissä / suhteellinen muutos hinnassa=-153.72*0.0045=-0.69,

missä 0.0045=Kolajuoman keskihinta / Kolajuoman kappalemyynnin keskiarvo.

Kolajuoman myynnin hintajousto sievenee muotoon, jonka numeeriset arvot saadaan Kola_hinta-muuttujan regressiokertoimesta sekä keskihinnasta ja keskimääräisestä kappalemyynnistä (keskimääräisien arvojen käyttäminen ei välttämätöntä, mutta loogisinta).

  • Arvon -0.69 tulkinta: 10% muutos Kolajuoman hinnassa vähentää Kolajuoman viikottaista kappalemyyntiä 6,9%. Lisäksi voidaan sanoa, että myynnin hintajousto on joustamatonta; Kappalemyynnin muutos on suhteessa pienempi kuin hinnan muutos.

Myynnin ristihintajousto(Kolajuoma,DRPepper)=66.27*(3.659/650)=0.37,

missä 3.659=DRPepperin keskihinta ja 650=Kolajuoman kappalemyynnin keskiarvo.

Myynnin ristihintajousto(Kolajuoma,Jaffa)=-75.83*(2.622/650)=-0.31,

missä 2.622=Jaffan keskihinta.

  • Arvon 0.37 tulkinta: 10% hinnan lasku DRPepper-juomassa laskee 3,7% Kolajuoman kappalemyyntiä ja kääntäen. DRPepper ja Kolajuoma ovat toistensa substituutteja.
  • Arvon -0.31 tulkinta: 10% hinnan lasku Jaffassa aiheuttaa 3,1% kasvun Kolajuoman myynnissä. Jaffa ja Kolajuoma ovat toistensa komplementteja. Jaffa ja Kolajuoma kannattaa siis asettaa lähekkäin myymälässä.

Hintajoustojen lisäksi saamme regressioyhtälöistä kampanjoita koskevan tiedon:

  • Kampanja “Kolajuomassa entistä vähemmän kaloreita!” lisää viikottaista kappalemyyntiä 89 yksikköä verrattuna toiseen kampanjaan (vrt. blogin alussa vaikutuksen 95%-luottamusväli: -278.77,  -81.23).

5. Hinnan optimointi

Voimme tutkia regressiomallin avulla myös optimaalista Kolajuoman hintaa katteen näkökulmasta kiinnittämällä muiden selittävien muuttujien arvot. Kiinnitetään seuraavat arvot muille selittäville muuttujille: DRPepper_hinta=3.659 (keskihinta), Kampanja=1, Jaffa_hinta=2.622 (keskihinta).

Kiinnittämisen jälkeen muodostettu regressiomalli sievenee muotoon:

Myynti_kpl=1146.31 – 153.72*Kola_hinta

Nyt voimme muodostaa kaavan katteelle, kun oletamme, että Kolajuoman sisäänostohinta on 1.5:

(Myyntihinta-1.5)*(1146.31-153.72*Myyntihinta)=-230.58*Myyntihinta^2 + 1376.89*Myyntihinta – 1719.47

Funktio (Kolajuoman viikottainen kokonaiskate) maksimoituu hinnalla 2.99, jolloin maksimi kate kolajuoman suhteen on 336.

  • Mikäli tarkkailussa olevien muiden tuotteiden hinnat pysyy vakioina ja kampanja=1 on voimassa kannattaa asettaa Kolajuoman hinnaksi 2.99.

6. Varaston optimointi kolajuomalle

Mikä on optimaalinen varastossa olevien Kolajuomien määrä (viikottainen), jos asetamme Kolajuomalle optimaalisen hinnan 2.99? Vastauksen saamme laskemalla kappalemyynnille ennusteen regressiomallin avulla.

Ennuste(Myynti_kpl)=1013.42 – 153.72*2.99 + 89.23*1 + 66.27*3.659 – 75.83*2.622

Tuloksena saamme 687 kpl, sekä luottamusväliksi  570-803.

  • Varastossa on hyvä olla viikottain ~700 kpl Kolajuomia kun uusi hinta otetaan ensimmäistä kertaa käyttöön. “Varman päälle peluri” täyttää varastonsa 800:lla Kolajuomalla.

Kuten blogissa kävi ilmi, kyseessä on hyvin yksinkertainen lähestymistapa hintojoustojen tarkastelemiseen. Olennaista lienee kuitenkin se, että vastauksia päivittäin askarruttaviin kysymyksiin saattaa löytyä yksinkertaisista asioista, kuten lineaarisesta regressiosta.