LUNDS UNIVERSITET 1(6) STATISTISKA INSTITUTIONEN Per-Erik Isberg / Lars Wahlgren VT2012 En introduktion till och första övning i @Risk5 for Excel Vi har redan under kursen stiftat bekantskap med Minitab som ett instrument för att utföra olika typer av simuleringar. Minitab är exempel på ett mycket generellt statistiskt program som kan utföra de flesta typer av statistiska beräkningar. Vissa typer av analyser finns förberedda och kan utföras direkt, medan andra kräver ett visst mått av programmering. @Risk är ett exempel på en annan typ av program som är mycket specialiserat för en speciell tillämpning. @Risk utför riskanalys huvudsakligen med hjälp av simuleringar. Själva programmet kan inte användas självständigt utan är en tilläggsmodul till ett kalkylprogram, antingen Excel eller Lotus 1-2-3. Vi skall här använda det tillsammans med Excel. Vid det här stadiet är det lämpligt att starta @Risk5.7 for Excel som du hittar i Start-menyn under All Programs > Brandteknik > Palisade DecisionTools. Nu startas Excel och @Risk samtidigt. Det kan hända att du får frågor om du vill öppna arbetsboken med macro. Gör detta. @Risk är i princip specialskrivna macro i Excel. Att @Risk finns tillgängligt i Excel visas av den @Risk-flik med bland annat nedanstående ikoner som finns ovanför själva kalkylbladet. OBS Utseendet beror på Excel-version. och vet man inte vad en viss ikon betyder håller man bara som vanligt muspekaren still över ikonen så dyker förklaringstexten upp. I. Finance För att kunna få en bild av de olika möjligheterna i programmet skall vi börja med att gå igenom en liten förberedd @Risk-simulering. På kurswebben finns en fil som heter FINANCE.XLS som du ska öppna i Excel. OBS Öppna inte den Finance-fil som ligger i @Risk-katalogen. Detta kalkylblad ser vid första anblick ut som vilket Excel-kalkylblad som helst. Innehållet i varje cell är antingen direkt inmatade värden eller resultatet av någon räkneoperation (en formel i cellen). Klicka i cell E9, d.v.s. Volume No Entry för år 1993. Innehållet i cellen visas i rutan precis ovanför kolumnbeteckningarna A, B, C,...
2 Cell E9 innehåller =RiskNormal(3500;300). Detta är ett exempel på en funktion som kommer från @Risk. Den ser ut som många andra Excel-funktioner ett namn och inom parentes några argument åtskiljda av semikolon men den har ordet Risk först i funktionsnamnet. Funktionen i E9 beskriver att innehållet i cellen är ett slumpmässigt värde från en sannolikhetsfördelning, nämligen en normalfördelning med medelvärdet 3500 och standardavvikelsen 300. Observera att det värdet som visas i kalkylbladet är 3500 som är fördelningens väntevärde. Vid en simulering kommer detta värde att uppdateras efter varje iteration. Gå nu till cell E8. Där finns =RiskTriang(30;50;80). Detta är en triangulär (triangelformad) sannolikhetsfördelning som anges av de tre parametrarna, minsta möjliga värde=30, troligaste värde=50 och största möjliga värde=80. Värdet som visas i cellen (53,33) är det förväntade värdet i fördelningen. Det finns ett 50-tal olika statistiska fördelningar, såväl diskreta som kontinuerliga, som kan specificeras. Till höger syns de första i listan under ikonen Define Distributions. Resultatet av den förberedda simuleringen i Finance-filen skall hamna dels i cell C32 och dels i cellerna C31-L31. Vi måste därför definiera dessa som resultatceller. Markera C32 i kalkylbladet och tryck på Add Output-ikonen (andra från vänster den med en röd pil). Man får då även möjlighet att ge resultatcellen ett specifikt namn. Markera sedan cellerna C31-L31 och gör även dessa till resultatceller. Ge dessa celler namnet Net Cash Flow. Om man vill få en överblick över vilka fördelningar som används i kalkylbladet (Inputs) och vilka resultatceller (Outputs) som finns kan man trycka på Model Window-knappen (sjunde från vänster två pilar, en röd och en blå). Man får då upp följande information när man valt fliken Outputs: Här ser vi vilka celler som är markerade som Output och vad de heter. Dessa resultatceller kan man sedan efter simuleringen göra beräkningar på, rita bilder m.m. Väljer man i stället Inputs-fliken får man en lista över alla celler som innehåller olika @Risk-funktioner (Inputs). Gör det och lägg märke till innehållet i E8 och E9 som vi redan har tittat på. Förutom E8 och E9 är det ytterligare ett antal celler som innehåller värden som kommer att simuleras.
3 Låt oss nu utföra själva simuleringen. Först skall vi dock titta lite på förutsättningarna för simuleringen. Detta kan man göra genom att trycka på knappen Simulation Settings (det lilla blå histogrammet strax höger om Model Window). Här kan man ändra t.ex. antalet iterationer och simuleringsmetod (fliken Sampling). Ändra denna till Monte Carlo, samma som används i Minitab. Passa även på att ändra antalet iterationer till 1000 (fliken General). Tryck OK. Gå ut till kalkylbladet. Starta sedan simuleringen genom att trycka på Start Simulation (röd fördelning). När simuleringen startar visas det längst ner till vänster i bildskärmen en liten ruta som talar om hur långt simuleringen kommit. När simuleringen är färdig kan vi undersöka resultatet. Klicka på Browse Results eller på Summary gubben som pekar på ett rutnät. Normalt behöver detta inte göras då vi hamnar direkt i fönstret Results Summary om inte Automatically Show Results Window är avstängt. Men då klickar vi bara dit det igen! I denna simulering ser detta fönster ut på följande sätt: Här kan man nu dubbelklicka på de olika histogrammen för att få dem i egna fönster (= samma som att välja Browse Results) och till höger om histogrammet ser man sammanfattande statistik (min, max, medelvärde mm). Dubbelklicka på histogrammet för cellen C31. Genom att dra i markeringen ovanför figuren kan man nu se hur stor andel av de simulerade värdena som ligger över/under/mellan olika gränser. Testa! Ställ in värdena så du får 80 % i mitten och 10 % på varje sida. Ikonen Simulation Detailed Statistics ger en väldig massa olika statistiska mått. Prova även detta.
4 Simulation Sensitivities gör en sorts känslighetsanalys, analyserar vilka av de komponenter som bygger upp resultatcellen som har högst påverkan (korrelation) med slutresultatet. Ta fram Simulation Sensitivities, ikonen strax nedanför Summary-gumman. Se till att C32 är vald uppe till vänster under Rank Inputs for Output:. Detta innebär att vi nu gör en känslighetsanalys för denna resultatcell. I nedre delen ser man vilka celler som resultatet i C32 är bildat från. Cellerna är rangordnade efter betydelse, se korrelationerna i kolumnen längst till höger. Den första cellen C11 är den som har högst korrelation med slutresultatet (-0,821). Sedan kommer E20 osv. Vill man ha en grafisk beskrivning av detta kan man göra en s.k. Tornado Graph. Den får man om i Browse Results-läget klickar på cellen C32 och väljer Tornado-ikonen (se figuren till höger) med alternativet Regression Coefficients. Den viktigaste input-cellen C11 kommer överst och de andra följer i viktighetsordning. percentilen. Eftersom cellerna C31-L31 nederst i kalkylbladet mäter samma sak under ett antal år så finns det en annan bild som också kan vara intressant. Nämligen en s.k. Summary Graph. Den kan man rita på följande sätt: Gå in under Results och markera samtliga dessa celler (C31-L31). Klicka på den regnbågsfärgade ikonen i botten av dialogrutan. Välj Summary Trend. Bilden visar medelvärdet standardavvikelsen för respektive cell. Den yttre markeringen är den 5:e och 95:e Gör om figuren ovan till Boxplots. Lägg märke till definitionen av morrhåren.
5 II. Hissen. Vi skall nu försöka att på egen hand utföra en simulering med hjälp av @Risk. Vi börjar med ett enkelt exempel där vi skall simulera den totala vikten för fyra slumpmässigt valda personer ur några populationer. Stäng alla kalkylblad i Excel och öppna sedan ett nytt. Mata sedan in följande text i kalkylbladet: Fall 1 skall innebära att varje person skall komma från en normalfördelning med medelvärdet 80 och standardavvikelsen 20. Detta innebär att en funktion matas in som =RiskNormal(80;20) i cell B4, B5, B6 och B7. Fall 2 innebär att varje person kommer från en likformig fördelning mellan 50 och 100 (=RiskUniform(50;100). I Fall 3 skall fördelningen heta =RiskTriang(50;80;100) Efter att dessa fördelningar har matats in i sina respektive celler så skall kalkylbladet se ut så här: De värden som syns i cellerna är de förväntade värdena i respektive cell. Nu skall vi bilda summan av de fyra personernas vikter i cellerna B8 (Fall 1), C8 (Fall 2) och D8 (Fall 3). Detta kan göras på flera olika sätt. Ett alternativ är att man skriver =B4+B5+B6+B7 i cell B8. Alternativt kan man använda funktionen SUM i Excel (SUMMA i svensk version av Excel). Detta innebär att vi i cell B8 skriver in =SUM(B4:B7). Bilda nu de tre summorna i cellerna B8, C8 och D8. Nästa steg är att definiera dessa tre celler som resultatceller. Markera de tre cellerna och tryck på Output-knappen. Tryck nu på knappen för att kontrollera våra Input-Output-celler. Ändra sedan antalet iterationer till 1000 och metod till Monte Carlo. Gå sedan tillbaka till kalkylbladet och starta simuleringen. Ta nu fram histogram som visar fördelningen för resultaten i de tre olika fallen (Knappen med röda staplar). Observera att alla tre ligger mycket nära en normalfördelning. Räkna sedan ut medelvärdet och medianen samt uppskatta sannolikheten att väga totalt mindre än 350 kg i de tre fallen (görs enklast direkt i histogrammet genom att dra i referenslinjerna). Rita också en Summary Graph.
6 III. Fire Safety Design. Vi skall sedan som ett andra exempel simulera en variant på Scenario 1 från laboration 3. Det vill säga följande modell: G = S D R E där S 167. H Area 026. 044. 054. R är Lognormal(5.4, 0.8) (Se nedan hur denna fördelning specificeras i @Risk) D är Lognormal(2.2, 0.5) E N * Area F* W med följande fördelningar enligt beteckningar i @Risk: - RiskUniform(0.001; 0.1) H - RiskUniform(3; 12) Area - RiskUniform(200; 1200) D - RiskLognorm2(2.2; 0.5) R - RiskLognorm2(5.4; 0.8) N - RiskUniform(0.1; 1.0) F - RiskNormal(1; 0.001) W - 3.6 (Konstant) Förmodligen använder Excel decimalkomma och inte decimalpunkt håll koll! Mata in dessa data och namn på de olika komponenterna i kalkylbladet e nligt beskrivningen till höger. Cellerna B3-B10 innehåller alltså de olika funktionerna. Skapa sedan de olika komponenterna S, D, R och E i kolumnerna B12-B15. Lägg märke till att man måste använda cellerna B3, B4,..., B10 i formlerna. Lägg sedan säkerhetsmarginalen som en resultatcell i B16. Observera att för upphöjt till i Excel används tecknet ^. Simulera nu detta 1000 gånger (Iterations=1000, Monte Carlo). Ta fram följande resultat och grafer för säkerhetsmarginalen: 1) Medelvärde, standardavvikelse och median. 2) Rita ett histogram och uppskatta sannolikheten att säkerhetsmarginalen är större än noll med hjälp av histogrammet. 3) Gör en känslighetsanalys. Vilka variabler har störst påverkan på säkerhetsmarginalen? 4) Avsluta med att spara hela simuleringen på ett säkert ställe. Du kan ha viss nytta av den nästa fredag vi ses.