28.03.2014

Hintajoustoanalyysi monimuuttujaisen regressiomallin avulla

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:

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:

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).

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.

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

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.

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.

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.

Share
Contact Person

Blog writer

Lasse Liukkonen

Vincit Bilot

Bilot & Vincit have joined forces!

See where the story continues 

You have Successfully Subscribed!

Vincit Bilot

Bilot & Vincit have joined forces!

See where the story continues 

You have Successfully Subscribed!