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.
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.
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!”
Tutkitaan kampanjoiden eroavaisuutta yksinkertaisella kahden otoksen t-testillä. Seuraavassa kuvassa R-ohjelman tulostus Welchin t-testistä, sekä otosten normaalisuustestit Shapiro-Wilkin-testillä.
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).
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.
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.
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:
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.