Matemat»-1 * pl\7 V Martin R Obsah: i. Úvod do data miningu: základní pojmy, CRISP-DM, SEMMA. 3 2. Organizace dat, úvod do SQL. 44 3. Příprava dat - čištění, kategorizace, agregace, transformace 101 (WOE), úvod do SAS data step. 168 4. Explorační analýza, vizualizace dat, kontingenční tabulky. 5. Regrese, Logistická regrese I. 274 6. Credit scoring (CS) - historie, základní pojmy. 338 7. Metodologie vývoje scoringových funkcí. 426 8. Příprava dat II. 498 9. Evaluace prediktivního modelu - LC (ROC), Gini, KS, Lift. 545 10. Stanovení cut-off. RAROA, CRE. Monitoring. 587 11. Reference. 623 1. Úvod do data miningu Co je to Data Mining? • Data mining (DM), nebo také dolování z dat či vytěžování dat, je analytická metodologie získávání netriviálních skrytých a potenciálně užitečných informací. Aplikace • Bankovnictví: schvalování úvěrů/kreditních karet • Predikce dobrých zákazníků. • Pojišťovnictví: schvalování pojistných smluv • Odhad pravděpodobnosti pojistné události/výše škody. • CRM (marketing): • Identifikace zákazníků, kteří mají v úmyslu přejít ke konkurenci. • Cross-selling. • Up-selling. • Cílený marketing: • Identifikace pravděpodobných respondentů na nabídku. • Detekce fraudu: telekomunikace, finanční transakce, pojistné podvody • Online/offline identifikace podvodného chování. Aplikace Medicína: efektivita léčebné péče • Analýza pacientovy historie (předchozí nemoci a jejich průběh): nalezení vztahu mezi nemocemi. • Farmacie: identifikace nových léků • Vědecká analýza dat: • Identifikace nových galaxií. • Design webových stránek: • Nalezení vztahu návštěvníka stránek a příslušná změna podoby stránek. Aplikace • Rozpoznávání psaného textu, řeči, obrázků. • Supermarkety • Identifikace současně nakupovaného zboží • Průmysl: • automatické přenastavení ovládacích prvků při změně parametrů procesu. Sport: • NBA-optimalizace herní strategie • další... Aplikace - Rozmístění zboží v supermarketech • Cíl: identifikovat zboží, které je nakupováno souběžně dostatečným množstvím zákazníků. • Výsledek: Jestliže zákazník nakupuje dětské pleny a mléko, pak si velmi pravděpodobně koupí i pivo. Jedna z možných interpretací Správné interpretace výsledků analýz je schopen jen zkušený analytik. Data mining a princip indukce • Dedukce zachovává platné vztahy: 1. Koně jsou savci. 2. Všichni savci mají plíce. 3. Proto platí, že všichni koně mají plíce. • Indukce přidává informace: 1. Všichni doposud pozorovaní koně mají plíce. 2. Proto platí, že všichni koně mají plíce. Problém s indukcí • Z platných faktů můžeme vyvodit nepravdivé tvrzení (model). • Příklad: • Evropské labutě jsou bílé • Indukce: „Labutě jsou bílé" jakožto obecné pravidlo. • Objevením Austrálie se objevili i černé labutě... • Problém: množina pozorování nebyla náhodná a tudíž reprezentativní. http://cs.wikipedia.org/wiki/Labu%C5%A5_%C4%8Dern%C3%A1 Data mining-podpora business rozhodování Increasing potential to support business decisions Making Decisions Data Presentation Visualization Techniques Data Mining Information Discovery Data Exploration Statistical Analysis, Querying and Reporting Data Warehouses / Data Marts _OLAP, MDA_ Data Sources Paper, Files, Information Providers, Database Systems, OLTP End User Business Analyst Data Analyst DBA 12 Historie názvu i960 Data Fishing, Data Dredging (bagrování): • užíváno statistiky 1989 Knowledge Discovery (KD, KDD): • užíváno komunitou zabývající se umělou inteligencí a strojovým učením 1990 Data Mining (DM): • užíváno v komerční sféře a databázové komunitě Další názvy: Data Archaeology, Information Harvesting, Information Discovery, Knowledge Extraction, ... Data mining - nutnost? mt 2000 Jdipj 2004 Největší světové databáze v r. 2005: • Max Planck Inst, for Meteorology • Yahoo •AT&T V roce 2008: • Max Planck Inst, for Meteorology • Yahoo Data mining - nutnost? • Terabytes — ioAi2 bytes: data obchodních řetězců, bank,... Petabytes — ioAi5 bytes: geografická data • Exabytes — ioAi8 bytes: národní databáze zdravotních záznamů • Zettabytes — ioA2i bytes: databáze meteo-snímků • Zottabytes — ioA24 bytes: video-databáze Data mining - nutnost? ■ Proč data mining? Proč dnes? • Data jsou produkována. • Data jsou skladována. • Výpočetní síla je dostupná. • Výpočetní síla je cenově dostupná. • Konkurenční tlak je velice silný. • Komerční produkty (DM software) jsou k dispozici. Data mining vs. Statistická analýza • Data Mining • • Původně vyvinuto pro expertní systémy automaticky řešící zadané problémy. • Neklade takový důraz na přesné porozumění použité metody • Pokud něco dává smysl, pak to použijme! • Žádné předpoklady o datech. • Funguje i pro velmi rozsáhlá data. • Vyžaduje porozumění problému z datovému a business pohledu. Statistická analýza • Testuje se statistická korektnost modelu. ■ Jsou statistické předpoklady modelu splněny? • Testování hypotéz. • Intervalové odhady. • Pracuje se s výběrem hodnot. • Standardní metody nejsou optimalizovány pro rozsáhlá data. • Vyžaduje pokročilé statistické znalosti. 18 Data mining • Proces (polo-) automatické analýzy (rozsáhlých) databází k identifikaci vztahů, které jsou: • validní: platí na nových datech s určitou jistotou obecné platnosti • nové: doposud neznámé • užitečné: dají se v praxi nějak použít • srozumitelné: (vždy) se nalezený vztah dá nějak vysvětlit 19 Data mining není • Brutální hromadné zpracování dat. • Slepé použití algoritmů. • Hledání vztahů tam, kde žádné neexistují. Známé ^ Zajímavé Zajímavé jsou ty vztahy, které se liší od obecných očekávání. Data mining se vyplácí právě díky objevování dosud neznámých a překvapivých vztahů. Mléko a cereálie prodávej dohromady.^1 Mléko a cereálie prodávej dohromady!^ 21 Vztah s ostatními disciplínami Databázové technologie Strojové učení Data Mining Vizualizace Informační technologie Ostatní vědní disciplíny 22 Data mining -proces Ověření vztahů i r Data Mining Relevantní Data Výběr Dat Transformace Dat Data Warehouse Čištění dat Integrace dat Databáze 23 Data Mining Methodology (2007) Kterou metodologii používáte pro data mining? CRISP-DM (63) ^^^^^^^HHI 42% Vlastní (29) ^^^^^^H 19% SEMMA(i9) ^^^^^M 13% KDD Process (11) ^^^B 7% Firemní (8) I 5% Ostatní (20) I 14% 24 CRISP-DM {CRoss Industry Standard Process for Data Mining) 1. pochopení obchodních souvislostí 2. pochopení dat 3. příprava dat 4. modelování 5. vyhodnocení modelu 6. nasazení modelu do obchodního procesu http://community.udayton.edu/provost/it/training/documents/SPSS_CRISPWPlr.pdf 25 SEMMA (Sample, Explore, Modify, Model, Assess) • Sample - identifikovat vhodná učící data, určit odpovídající rozsah dat, a to jak z pohledu časového okna tak i z pohledu počtu případů. Dále se doporučuje rozdělit data na 3 skupiny: Trénovací - využívá se pro vývoj modelu. Validační - využívá se pro vyhodnocení modelu a pro prevenci proti přeučení (over fitting) modelu. Testovací - využívá se pro finální vyhodnocení modelu. Zajímá nás především jak dobře se model chová na datech disjunktních s daty, na kterých byl model vyvinut. • Explore - připravit popisné statistiky, které poskytnou základní představu o obsahu a kvalitě podkladových dat. Pomocí vizualizačních technik odhalit skryté trendy a závislosti v datech. • Modify - na základě předchozího kroku konsolidovat data a odvodit nové proměnné. Následně transformovat data do tvaru vhodného pro modelování. • Model - vytvořit příslušný model. Mezi často používané techniky patří např. neuronové sítě, rozhodovací stromy, logistické modely. • Assess - vyhodnotit úspěšnost modelu a případně implementovat model do praxe. 26 Fáze DM procesu (1 & 2) Porozumění obchodu (Business Understanding): • Stanovení business cílů. • Stanovení data miningových cílů. • Statnovení kriterií úspěchu. Porozumění datům (Data Understanding): • Průzkum dat a ověření jejich kvality. • Nalezení odlehlých hodnot. 27 Fáze DM procesu (3) Příprava dat (Data preparation): • Obvykle zabírá přes 90% celkové času. • Sběr dat • Konsolidace a čištění Vazební tabulky, agregace, chybějící hodnoty... • Selekce Ignorování neužitečných dat? • Odlehlá pozorování? • Výběr dat? • Vizualizační nástroje. • Transformace - vytváření nových odvozených proměnných Fáze DM Procesu (4) Modelování (Model building) • Výběr vhodných modelovacích technik závisí na stanovených data miningových cílech. • Modelování je většinou iterační proces propojený s přípravou dat • Rozdílný přístup pro „superviseď a „unsupervised learning" Základní přístupy k modelování • Prediktivní: jde o matematický model předpovídající (s určitou přesností) budoucí hodnotu/chování nějaké veličiny (entity). • Regrese/ Klasifikace • Analýza časových řad • Deskriptívni: jde o matematický model popisující historické události a předpokládané nebo reálné vazby mezi nimi. • Klastrová (shluková) analýza • Asociační pravidla • Detekce deviací/zlomů • Faktorová analýza / analýza hlavních komponent 30 Klasifikace Na základě známých údajů o „starých" zákaznících a jejich platební morálce máme predikovat platební způsobilost nového žadatele o úvěr. Předchozí zákazníci Klasifikátor Věk Příjem Zaměstnání Bydliště Typ zákazníka Rozhodovací pravidlo Příjem > x Dofcrý/ špatný Data nového žadatele 31 Klasifikační metody • Cíl: Predikovat třídu Ci = f(xi, X2, .. Xn) • Regrese: (lineární nebo polynomiální) • a*xi + b*x2 + c = Ci • Metody nejbližšího souseda (KNN) • Rozhodovací stromy • Pravděpodobnostní modely (GLM) - např. logistická regrese. • Diskriminační analýza (LDA,...) • Neuronové sítě • Support vector machines (SVM) • Bayesovské modely Deskriptívni modelování • Základním cílem je získání ucelených a snadno srozumitelných informací z dostupných dat. •Někdy součástí průzkumové (explorační) analýzy předcházející prediktivnímu modelování, někdy je vytvoření deskriptivního modelu hlavním cílem DM projektu. 33 Klastrová analýza • Máme nalézt skupiny/ klastry stávajících zákazníků na základě platební historie tak, aby poaobní klienti byli ve stejné skupině/ klást ru. • Základní požadavek: Kvalitní míra podobnosti (http://cs.wikipedia.org/wiki/ShluKOva_analyza). s...... 0°-* H-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 16 19 20 21 22 23 2A MěonjM fio aktivaci karty Zdroj: NEPIL, M. Data mining v praxi. Brno : MU v Brně, 2007. s 25-38. 34 Supervised vs. unsupervised learning Supervised learning: • Supervize: Data (pozorování, měření, atp.) jsou označena předem definovanými/známými třídami. • Nová/testovací data jsou následně rozřazena do těchto tříd. • Z pohledu kauzality daný model definuje vztah mezi vstupními daty a daty výstupními. Unsupervised learning: • Předem nejsou definované žádné třídy. • Pro daná data je cílem prokázat existenci nějakých tříd. • Z pohledu kauzality jsou všechna data chápána jako výstupní. Modelujeme závislost daných dat na jakýchsi neznámých skrytých proměnných. 35 Fáze DM Procesu (5) Vyhodnocení modelu (Model Evaluation): Evaluace modelu: jak se chová na testovacích datech. • Metody a kritéria závisí na typu modelu: • Např. koincidenční matice pro klasifikační modely, průměrná chyba pro regresní modely,... • Interpretace modelu: důležitost a obtížnost interpretace značně závisí na zvolené modelovacím algoritmu. business l^-- Understanding!^— [Understanding! 36 Fáze DM Procesu (6) Nasazení do praxe (Deployment) • Je třeba určit, jak mají být výsledky využity. • Kdo je bude využívat? • Jak často budou využívány? • Nasazení data miningových výsledků pomocí: • Skórování databáze. • Využití výsledků pomocí obchodních pravidel. • Interaktivní on-line scoring. SAS - stručné seznámení 2 základní SAS rozhraní: • SAS windowing environment SAS Enterprise Guide (GUI) File Edit View Tasks Program Tools Help | H - GaT ^5 I fl V1 BE) X I 1*3 £*H I Process Flow Process Flow " Project Tree 3 E^o Process Flow customer "|g Club Members Query |t] Non Club Members Query □■■■^1 nonclub =■■-111 List Data ► Run t | | Export ▼ Schedule ▼ Zoom ▼ *^ Project Log [7| Properties clubmembe... \dh\ List Data SAS Report -List Da... 38 SAS - stručné seznámení v Sas □SSI File Edit View Tools Run Solutions Window Help -■ 'il M I * x o # Contents of 'SAS Environment' Libraries File Shortcuts Explorer window Results Viewer - 5as Output Okresy Středních Čech Produkt A Produkt B Ostatní produkty /1 jednoduchy priklad */ /* dopočteni hustoty osidleni */ = data c sobec; 3Et czdata.c sobec; hustota=obývate 1/ (ploch.a+1); graf ickych p scanne tru a vo lani procedury GIIAP */ ľjoptions reset=all colocs= [gĽayŕO grayeO graydO graycO graybO grayaO gray90 gcayBO gtayVO gray60 gray50 gray40 gray3 0 gray2 0 gray10) ft itle=1ar ial1 ctext=black; - proc ijmap data=csobec itiap = czdata. esobec map; id idobec; z horo obývate1; SAS Output Program editor window 39 Pomocí View Code Data Describe Graph Analyze OLAP Add-In Tools Window E3 13 s^g >a a éi L® s l^i EGDefault WORK, IMPWĚ175 Process Flow SAS Output 1 WORK.IMPV/6175 [read-only] | jjs] HTML - Histograi HTML - Pie Chart | Zastoupeni kraju iL Karlovarský kraj if X Task List I Tasks by Category Ta;k-: by Narv-Create New Items in Project ^ Zireate I: :e Create Data using Data Grid Create Note LY create I.ubiji usmg Active Data Ly Zireate Empty Queiji Bqg Create Empty Proces? Flow Add Hems |p Project . 1 Open From My Computer W Open From SAS Server/Binder 0 Open IDLAP Cube Jj^l Open Exchange DpenOLEDB ^ Open ODBC ^ Import Data M Area Plot 111 Bar Chart |h Box Plot [SP Bubble Plot Q Contour Plot ffij Create Map Feature Table f' j-jiv.: 2-1-. ■■■■■■ Line F :■ V Map Graph-Ci Pie Chart ^t; Radar Chart |3l Scatter Plot ■I f X ^SMla, i Plot j£ ARIMA Modeling and Forera^iriq ^ Regression Anal'.'si: with Auto re a n: Ai Basic Forecasting Regression Analysis ot Panel Data |fg Prepare Time Series Data Multivariate |if Canonical Correlation Ik* duster Analysis j ::- t -'lai-z;k: IjW Factor Analysis Principal Comoonents _l 40 SAS Enterprise Guide (EG) Interface • EG automaticky generuje kód, který možné dále editovat BonusReport * ■^y Program y Save " l> Run * ■ Stop Select Server Export ▼ Send To ? Create » | (2) Properties El data work.comp; set orion.sales; Bonus=500; Compensation=sum (Salary, Bonus) ; BonusMonth=month(Hire_Date) ; drop Gender Salary Job_Title Country Birth_Date; format Bonus Compensation doliar8. Hire_Date date9.; label Employee_ID="Employee ID" First_Name="First Name" Last_Name ="Last Name" BonusHonth="Month of Bonus" Hire_Date="Hire Date"; run; - proc print data=work.comp label; title 'Bonus report for 2009'; run; 41 SAS Help •Use the SAS Enterprise Guide Help facility or SAS OnlineDoc for additional direction on SAS Enterprise Guide or the SAS programming language. Go to support.sas.com and select Product Documentation O Base SAS. É? SAS Enterprise Guide Help Hide Back Print Contents I |nden Search Favorites OS Welcome to SAS Enterprise GuidE m cj * cj s CJ * □ m Cj ♦ □ Aboul SAS Enterprise Guide B„_....... ^ Where do I start? "I Tutorial and training for SAS Enteri "I Additional resources "| Accessibility and compatibility feati F| Keyboard shortcuts "I What are 'tasks' and 'projects'? "I Can I still write SAS programs? What's New Using SAS Enterprise Guide Working with Projects Working with Data Building Queries Filtering and Sorting Data Working with Programs Working with Stored Processes Working with Prompts Working with Results Exporting and Sending Files Publishing Data and Results Customizing SAS Enterprise Guide Working with Enterprise Guide Explore Running SAS Tasks □IIIS & Base SAS - Windows Internet Explorer provided by SAS SAS- Enterprise Guide Help SAS Enterprise Guide is a powerful Microsoft Windows client application that pr mechanism to exploit the power of SAS and publish dynamic results throughout Select the topics below to get started. ► Where do I start? ► Tutorial and training for SAS Enterprise Guide ► What are tasks and projects? ► Can I still write SAS programs? ► What tasks are available in SAS Enterprise Guide 4.2? ► What's new in SAS Enterprise Guide 4.2 3 - I S hi:l:p://si_ m/docurrientation/onlinedoc/base/index, html J][g[x] |soogl. □EIS EE ť*1 <Ä <> Base SAS A ' 0 - Ö ' Ear" Pag* - §sas I Search support .sas .com sujpport.sas.com knowledge base support learning center community KNOWLEDGE BASE / PRODUCT DOCUMENTATION KNOWLEDGE BASE Prirt ž- Essva--- • System Requirements • Install Center » Product Documentation j*Wtiars New in SAS j*SAS 9 2 !-»SAS 9 1 !-»SAS 8 2 o Samples & SAS Notes • Focus Areas Base SAS [""10RE ABOUT THIS PRODUCT Base SAS 9.2 * Product Description * Bookstore [Bsse SAS 9.2] [Base SAS 9.1.3] [Base SAS 9.1] * IJSTraining * Worldwide Training • What's New in SAS 9.2 PDF [1.3GMB) I HTML | Purchase book * Base SAS Focus Area FEEDBACK Most Used Documentation * Send a Comment • Base SAS 9.2 Procedures Guide PDF [5.simb> | HTML • Base SAS 9.2 Procedures Guide: Statistical Procedures PDF f+S4MB> | HTML • SAS 9.2 Language Reference: Concepts PDF i7.16MB> | HTML • SAS 9.2 Language Reference Dictionary PDF (T.44MB> | HTML . a t nfl™™ i tlafaiuuum Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. SAS na webu Michal Kulich: Malý manuál uživatele SASu http: / / wwwJ<:arlin. m Phil Spector: An Introduction to the SAS System http://www.stat.berkeley.edu/classes/sioo/sas.pdf Patric McLeod : Introduction to SAS 9 http://www.unt.edu/rss/class/sasi/ http://en.wikipedia.org/wiki/SAS_%28software%29 2. Organizace dat, úvod do SQL Historie skladování dat V minulosti byla data ukládána v jednom velkém souboru, ke kterému se přistupovalo indexovanými sekvenčními metodami. Soubor byl indexován na základě předpokládaných způsobů dotazování. Velkou nevýhodou bylo to, že se informace v záznamech opakovaly a typy dotazů byly předurčeny. 45 Historie skladování dat datum jméno prijmeni adresa_ulice adresa_mesto cislCMJCtU platba zůstatek 980103 Jan Novak Dlouhá 5 Praha 1 9945371 100,00 100,00 980105 Jan Novak Dlouhá 5 Praha 1 9945371 1500,00 1600,00 980106 Jan Novak Dlouhá 5 Praha 1 9945371 -1500,00 50,00 980106 Karel Nemec Lucni 4 Praha 2 24867134 3000,00 6000,00 980107 Karel Nemec Lucni 4 Praha 2 24867134 -4000,00 2000,00 980108 Jan Novak Dlouhá 5 Praha 1 9945371 -150,00 -100,00 980111 Karel Nemec Lucni 4 Praha 2 24867134 5000,00 7000,00 46 Relační databáze i i transakce id_klient jmeno prijmeni adresa_ulice adresa mesto i. ucet id_ucet id klient □ id_transakce id_ucet datum platba zůstatek SELECT klient.jmeno, klient.prijmeni, klient.adresa_ulice, klient.adresa_mesto, ucet.cislo_uctu, transakce.zůstatek FROM klient, ucet, transakce WHERE klient.idjdient = ucet.idjdient; AND transakce.id_ucet = ucet.id_ucet; AND transakce.zůstatek < 100; GROUP BY klient.adresa_mesto; Relační databáze • Relační databáze je databáze založená na relačním modelu. Často se tímto pojmem označuje nejen databáze samotná, ale i její konkrétní softwarové řešení. Relační databáze je založena na tabulkách, jejichž řádky obvykle chápeme jako záznamy a eventuelně některé sloupce v nich (tzv. cizí klíče) chápeme tak, že uchovávají informace o relacích mezi jednotlivými záznamy v matematickém slova smyslu. • Termín relační databáze definoval Edgar F. Codd v roce 1970. způsoby kladení dotazů: QBE (query by example) SQL (structured query language) 48 Relační databáze • Dle relační teorie lze pomocí základních operací (sjednocení, kartézský součin, rozdíl, selekce, projekce a spojení) uskutečnit veškeré operace s daty a ostatní operace jsou již jen kombinacemi těchto pěti. 49 Relační databáze Základem relačních databází jsou databázové tabulky. Jejich sloupce se nazývají atributy nebo pole, řádky tabulky jsou pak záznamy. Atributy mají určen svůj konkrétní datový typ -doménu. Řádek je řezem přes sloupce tabulky a slouží k vlastnímu uložení dat. Konkrétní tabulka pak realizuje podmnožinu kartézského součinu možných dat všech sloupců - relaci. Primární klíč • Primární klíč je jednoznačný identifikátor záznamu, řádku tabulky. Primárním klíčem může být jediný sloupec či kombinace více sloupců tak, aby byla zaručena jeho jednoznačnost. Pole klíče musí obsahovat hodnotu, tzn. nesmí se zde vyskytovat nedefinovaná prázdná hodnota NULL. V praxi se dnes často používají umělé klíče, což jsou číselné či písmenné identifikátory - každý nový záznam dostává identifikátor odlišný od identifikátorů všech předchozích záznamů (požadavek na unikátnost klíče), obvykle se jedná o celočíselné řady a každý nový záznam dostává číslo vždy o jednotku vyšší (zpravidla zcela automatizovaně) než je číslo u posledního vloženého záznamu (číselné označení záznamů s časem stoupá). Cizí klíč • Dalším důležitým pojmem jsou nevlastní/cizí klíče. Slouží pro vyjádření vztahů, relací, mezi databázovými tabulkami. Jedná se o pole či skupinu polí, která nám umožní identifikovat, které záznamy z různých tabulek spolu navzájem souvisí. 50 Relační databáze - vztahy mezi tabulkami • Vztahy, neboli relace, slouží ke svázání dat, která spolu souvisejí a jsou umístěny v různých databázových tabulkách. V zásadě rozlišujeme čtyři typy vztahů. mezi daty v tabulkách není žádná spojitost, proto nedefinujeme žádný vztah. 1:1 používáme, pokud záznamu odpovídá právě jeden záznam v jiné databázové tabulce a naopak. Takovýto vztah je používán pouze ojediněle, protože většinou není pádný důvod, proč takovéto záznamy neumístit do jedné databázové tabulky. Jedno z mála využití je zpřehlednění rozsáhlých tabulek. Jako ilustraci je možné použít vztah řidič - automobil. V jednu chvíli (diskrétní časový okamžik) řídí jedno auto právě jeden řidič a zároveň jedno auto je řízeno právě jedním řidičem. 51 Relační databáze - vztahy mezi tabulkami i:N přiřazuje jednomu záznamu více záznamů z jiné tabulky. Jedná se o nejpoužívanější typ relace, jelikož odpovídá mnoha situacím v reálném životě. Jako reálný příklad může posloužit vztah autobus - cestující. V jednu chvíli cestující jede právě jedním autobusem a v jednom autobuse může zároveň cestovat více cestujících. M:N je méně častým. Umožňuje několika záznamům z jedné tabulky přiřadit několik záznamů z tabulky druhé. V databázové praxi bývá tento vztah z praktických důvodů nejčastěji realizován kombinací dvou vztahů i:N a i:M, které ukazují do pomocné tabulky složené z kombinace obou použitých klíčů (třetí resp. tzv. vazební tabulka). Příkladem z reálného života by mohl být vztah výrobek - vlastnost. Výrobek může mít více vlastností a jednu vlastnost může mít více výrobků. V reálném životě nicméně existuje velké množství vztahů M : N, mimo jiné také proto, že často existuje praktická potřeba zachovávat i údaje o historii těchto vztahů z časového hlediska (jeden řidič v delším časovém období řídí více rozličných aut a jedno auto v delším časovém období může mít více různých řidičů). 52 Slovník pojmů □ ODS □ D WH □ DataMart □ Meta Data □ BI □ OLAP □ OLTP □ ETL □ ELT □ EAI □ ERP □ DBMS □ SQL Operational Data Store DataWareHouse Business Intelligence On Line Analytical Processing On Line Transaction Processing Extract, Transform, Load Extract, Load, Transform Enterprise Application Integration Enterprise Resource Planning Database Management System Structured Query Language Slovník pojmů ODS: Short for operational data store, a type of d 2 that serves as an interim area for ad in order to store time-sensitive operational data that can be accessed quickly and efficiently. In contrast to a data warehouse, which contains large amounts of j : data, an ODS contains small amounts of information that is updated through the course of business transactions. An ODS will perform numerous quick and simple s on small amounts of data, such as acquiring an account balance or finding the status of a customer order, whereas a data warehouse will perform complex queries on large amounts of data. An ODS contains only current operational data while a data warehouse contains both current and historical data. Data Mart: A se, or collection of databases, designed to help managers make strategic decisions about their business. Whereas a combines databases across an entire enterprise, data marts are usually smaller and focus on a particular subject or department. Some data marts, called dependent data marts, are subsets of larger data warehouses. Meta Data: a about data. Metadata describes how and when and by whom a particular set of data was collected, and how the data is formatted. Metadata is essential for understanding information stored in is and has become increasingly important in XML-based Web applications. SQL (někdy vyslovováno anglicky es-kjů-el, někdy též síkvl) je standardizovaný c c používaný pro práci s daty v relačních databázích. SQL je zkratka anglických slov Structured Query Language (strukturovaný dotazovací jazyk). DWH: Abbreviated DW, a collection of d designed to support management decision making. Data warehouses contain a wide variety of data that present a coherent picture of business conditions at a single point in time. Development of a data warehouse includes development of systems to extract data from operating systems plus installation of a warehouse d that provides managers flexible access to the data. The term data warehousing generally refers to the combination of many different databases across an entire enterprise. Contrast with yt. BI: Most companies collect a large amount of c 1 from their business operations. To keep track of that information, a business and would need to use a wide range of sj e programs , such as Excel, Access and different s applications for various departments throughout their organization. Using multiple software programs makes it difficult to retrieve information in a timely manner and to perform analysis of the data. The term Business Intelligence (BI) represents the tools and systems that play a key role in the strategic planning process of the corporation. These systems allow a company to gather, store, access and analyze corporate data to aid in decision-making. Generally these systems will illustrate business intelligence in the areas of customer profiling, customer support, market research, market segmentation, product profitability, statistical analysis, and inventory and distribution analysis to name a few. A Database Management System (DBMS) is a set of o that controls the creation, maintenance, and the use of a d . Details on http://en.wikipedia.org/wiki/ Database management system 54 Slovník pojmů OLAP: Short for Online Analytical Processing, a category of software tools that provides analysis of d a stored in a c se. OLAP tools enable users to analyze different dimensions of multidimensional data. For example, it provides time series and trend analysis views. OLAP often is used in d ig.- The chief component of OLAP is the OLAP , which sits between a rt and a d S). The OLAP server understands how data is organized in the database and has special functions for analyzing the data. There are OLAP servers available for nearly all the major database systems. OLTP: Short for On-Line Transaction Processing. Same as h IS- Transaction processing: A type of c ; processing in which the computer responds immediately to u requests. Each request is considered to be a transaction. Automatic teller machines for banks are an example of transaction processing. The opposite of transaction processing is b ig., in which a batch of requests is s d and then e all at one time. Transaction processing requires interaction with a user, whereas batch processing can take place without a user being present. ETL: Short for extract, transform, load, three e functions that are combined into one tool to pull data out of one database and place it into another database. Extract - the process of reading data from a database. Transform ~ the process of converting the extracted data from its previous form into the form it needs to be in so that it can be placed into another database. Transformation occurs by using rules or lookup tables or by combining the data with other data. Load - the process of writing the data into the target database. ETL is used to rr e data from one database to another, to form and s and also to convert databases from one format or type to another. EAI: Acronym for enterprise application integration. EAI is the unrestricted sharing of data and business processes throughout the or data sources in an organization. Early s e programs in areas such as inventory control, human resources, sales automation and management were designed to run independently, with no interaction between the systems. They were custom built in the technology of the day for a specific need being addressed and were often proprietary systems. As enterprises grow and recognize the need for their information and applications to have the ability to be transferred across and shared between systems, companies are investing in EAI in order to streamline processes and keep all the elements of the enterprise interconnected. ERP: Short for enterprise resource planning, a business management system that integrates all facets of the business, including planning, manufacturing, sales, and marketing. As the ERP methodology has become more popular, s have emerged to help business managers implement ERP in business activities such as inventory control, order tracking, customer service, finance and human resources. 55 Datový sklad (Data Warehouse) • Definice (W.H. Inmon 1996): Datový sklad je >subjektově orientovaný > integrovaný > časově proměnný > stálý soubor dat, který slouží pro podporu rozhodování. Datový sklad • prvotní koncepce datována počátkem 80.let • vznik z potřeby jednoduchého přístupu ke strukturovanému úložišti kvalitních dat • pomáhá získat odpovědi pro lepší rozhodování • umožňuje použití dat pro dotazování, reportování a analýzu 57 Struktura datového skladu • třívrstvá architektura: > datový sklad > aplikační vrstva > prezentační vrstva • fyzicky centralizovaný nebo distribuovaný Datový sklad Pre-Data Data Warehouse Cleansing OLT ■'Server J Data Repositories Date Data Mart ODS Front-End Analytics OLAP Data Mining ŕ^tr' Data Visualization Reporting □ata Flow 59 Datový sklad Data Marts V-- "V----Y-- V-- Data Sources Data Storage OLAP Engine Front-End Tools 60 Datový sklad C «tl-tools.inío OLAP Analysis Datový sklad EAJ & D WH Syslem Configuratiori Diagram Dala etílMtKHi DWH SĚrver I:-i:i:t-M.i>:-Cc.iborjiiicriR-ng CoCaboňtíiCKiRinfl T MspUůt toť HULFT/ nSLtt i--'--.-.-.:-Co-.^or.i'jonkjrig PM 1 ^ * ^ o— 1 1 l • i 1 l • Mťvůr SOHO: Zkratka pro smaZZ office/home office - malé nebo domácí kancelářské prostředí a business kultura, která je s ním spojena. 62 Datové Modely □ Star (hvězda) Star Schema Dl f D3 v D2 □ Snowflake (vločka) □ Starflake Starflake Schema Dl T D3.1 -N- D3.2 □ Constellation (souhvězdí) D2 Snowflake Schema DLI F _> D3.1 D3.2 N. Dl. U2A U2.2 Constellation Schema Fl f: 63 Příklad schématu hvězda (star) time time_key day day_of_the_week month quarter year branch branch_key branch_name branch_type Sales Fact Table time_key item_key * branch_key location_key units sold dollars sold avg_sales item item_key item_name brand type supplier_type ■ ■ I location location_key street city province_ or_street country Příklad schématu vločka (Snowflake) time time_key day day_of_the_week month quarter year branch branch_key branch_name branch_type Measures Sales Fact Table time_key item_key * branch_key location_key units sold dollars sold avg_sales item item_key item_name brand type supplier_key ♦ location location_key street city_key ♦ supplier supplier_key supplierjype 65 time Příklad schématu souhvězdí (Constellation) time_key day day_of_the_week month quarter year ....... branch branch_key branch_name branch_type ....... Sales Fact Table time_key item_key branch_key location_key units sold dollars sold g_sales item item_key item_name brand type supplier_type location location_key street city province_or_street country Shipping Fact Table time_key item_key shipper_key from location to location dollars cost units_shipped shipper shipper_key shipper_name location_key shipper_type Příklad datové kostky $y TV Datum íQtr 2Qtr 3Qtr 4Qtr sum Celkový roční prodej TV v USA VC -/ 7 7 y suma USA Kanada >g li Mexiko suma All, All. All 67 Datové „kvádry" odpovídající datové kostce product country product,date o-D(apex) cuboid í-D cuboids date, country product, elate, country 2-D cuboids 3~D(base) cuboid 68 Typické OLAP Operace □ Roll up (drill-up): sumarizace dat • Postoupení v hierarchii o úroveň výše nebo redukce dimenze (např. z kostky na čtverec). □ Drill down (roli down): opak roll-up -zajímá nás větší detail • Z vyšší úrovně sumarizace na nižší úroveň nebo zavedení nových datových dimenzí. □ Slice and dice (krájet a kostkovat): • Výběr datového podprostoru. □ Ostatní operace: • drill across: zahrnutí více datových tabulek (kostek) • drill through: přes základní úroveň datové kostky zpět k podkladovým relačním tabulkám (pomocí SQL) Architektura OLAP Serverů • Relační OLAP (Relational OLAP -ROLAP) • Využívá relační nebo rozšířenou relační DBMS pro ukládání a správu dat datového skladu a OLAPovou střední vrstvu pro podporu chybějících částí. • Zahrnuje optimalizační možnosti DBMS, implementaci agregační navigační logiky a doplňkové nástroje a služby • Vícedimenzionální OLAP (Multidimensional OLAP - MOLAP) • Technologie založená na vícedimenzionálních datových polích (vč. technik pro řídké matice). • Rychlé indexování předem spočtených sumarizovaných dat. • Hybridní OLAP (Hybrid OLAP - HOLAP) • Uživatelsky flexibilní, tj. low level: relační, high-level: pole. • Specializované SQL servery • specializovaná podpora pro SQL dotazy nad star/snowflake schématy. 70 ROLAP • Data uložená v relační databázi - nejsou duplikována, ovšem není k nim možný přístup bez připojení k zdrojové databázi. • dotazy O LAP se převádějí do klasických dotazů SQL -může být nevýhodou (limitované možnosti SQL, pomalejší odezva). • Vhodný jen pro omezené množství dat. 71 MOLAP • „tradiční" OLAP. • Data uložena v multidimenzionálních kostkách mimo relační databázi. Jsou tudíž duplikována a je možný přístup i bez spojení s původním zdrojem dat. • Hlavní výhodou je rychlá odezva na dotazy. Vše je předpočítáno a uloženo při tvorbě kostek. 72 HOLAP • ponechává původní data v relačních tabulkách, agregace ukládá v multidimenzionálním formátu • poskytuje propojení mezi rozsáhlými objemy dat v relačních tabulkách • výhoda rychlejšího výkonu multidimenzionálně uložených agregací 73 Budování datového sklad • metoda „velkého třesku": > analýza požadavků podniku > vytvoření podnikového datového skladu > vytvoření datových tržišť • přírůstková (evoluční) metoda Plnění datového skladu • počáteční plnění + pravidelná aktualizace • plnění pomocí datových pump • postupy ETL: > extrakce > transformace > loading Co je SQL? The SQL procedure uses Structured Query Language to perform the following tasks: • retrieve and manipulate SAS data sets • create and delete SAS data sets • generate reports • add or modify values in a SAS data set • add, modify, or drop columns in a SAS data set Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Úvod do SQL General form of an SQL procedure query generate output: PROC SQL; SELECT variables FROM SAS-data-set, Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Úvod do SQL • Create a listing report of product activity. • Step 1: Invoke the SQL procedure. proc sql; • Step 2: Identify the variables to display on the report. proc sq sele :i; ct CustomerID, CustomerFirstNamef Cu s tome rLa stName Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 78 Úvod do SQL • Step 3: Identify the input data set. proc sql; select CustomerID, CustomerFirstName, Cu s tome r La s tName from univ.mastercustomers; • Step 4: End the procedure with a QUIT statement, proc sql; select CustomerID, CustomerFirstName, Cu s tome r La s tName from univ.mastercustomers; quit; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 79 Úvod do SQL • SQL joins have the following characteristics • They do not require sorted data. • They can be performed on up to 32 data sets at one time. • They allow complex matching criteria using the WHERE clause. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Úvod do SQL • General form of an SQL procedure join to generate output: PROC SQL; SELECT variables FROM SAS-data-setl AS aliasl, SAS-data-set2 AS alias2 WHERE aliasl. variable=alias2. variable, i Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Úvod do SQL • Create a listing report by joining data sets univ.mastercustomers and univ. customer orders by Customer ID. • Step 1: Invoke the SQL procedure and list the variables to display. proc s< qi; sel- ect CustomerlD, CustomerFi. rstNar tie f CustomerLastName, Orde. rID, UnitPrice, Quantity Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 82 Úvod do SQL • Step 2: Identify the data sets to join and provide a table alias for each. Because Customer ID exists in both data sets, identify which Customer ID to use. select m.CustomerID, CustomerFirstName, CustomerLastName, OrderID, UnitPrice, Quantity from univ.mastercustomers as m, univ.customerorders as c Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 83 Úvod do SQL • Step 3: State the condition on which observations are matched and terminate the query. proc sql; select m.CustomerIDf CustomerFirstName, CustomerLastName, OrderID, UnitPrice, Quantity from univ.mastercustomers as m, univ.customerorders as c where m.CustomerID=c.CustomerlD; quit; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 84 Uvod do SQL Create a new variable named TotSale by multiplying Quantity by UnitPrice. Name the new variable TotSale. proc sql; select m.CustomerlD, CustomerFirstName, Cus tomerLas tName, OrderID, UnitPrice, Quantity, Quantity * UnitPrice as TotSale from univ.mastercustomers as m, univ.customerorders as c where m.CustomerID=c.CustomerlD; quit; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 85 Úvod do SQL • General form of a PROC SQL query to create a SAS data set: PROC SQL; CREATE TABLE SAS-data-set AS SELECT... other SQL clauses; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Úvod do SQL • Join the tables univ .mastercustomers and univ. customerorders to create a new data set. proc sql; create table work.ordertotals as select m.CustomerZD, CustomerFirstName, CustomerLastName, OrderID, UnitPrice, Quantity, Quantity*UnitPrice as TotSale from univ.mastercustomers as m, univ.customerorders as c where m.CustomerID=c.CustomerID; quit; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 87 Úvod do SQL • General form of an SQL procedure query using labels and formats: PROC SQL; SELECT variable LABEL- column-header FORM AT'=format FROM SAS-data-set; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 88 Úvod do SQL Enhance the previous report. proc sql; select m.CustomerIDr CustomerFirstName format=$10., CustomerLastName format=$15.f OrderID, UnitPrice format=dollar7.2, Quantity, Quantity * UnitPrice as TotSale format=dollar8.2 label=fTotal Sale Amount1 from univ.mastercustomers as m, univ.customerorders as c where m.CustomerID=c.CustomerID; quit; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Úvod do SQL • Partial Output Customer Customer Customer Unit Sale ID First Name Last Name OrderlD Price Quantity Amount 062096 Craig Knapmeyer 1240062267 $36.00 3 $108.00 062096 Craig Knapmeyer 1240832690 $27.00 4 $108.00 062284 Robert Britt 1238409388 $15.00 1 $15.00 062284 Robert Britt 1238409388 $33.00 1 $33.00 064810 Randall Goodman 1238248877 $175.00 4 $700.00 064810 Randall Goodman 1238248877 $283.00 1 $283.00 064810 Randall Goodman 1238273875 $220.00 1 $220.00 064810 Randall Goodman 1238768955 $52.00 1 $52.00 064810 Randall Goodman 1238842450 $24.00 1 $24.00 064810 Randall Goodman 1239353817 $59.00 2 $118.00 064810 Randall Goodman 1239489696 $11.00 2 $22.00 064810 Randall Goodman 1239608721 $22.00 3 $66.00 064810 Randall Goodman 1239608721 $46.00 3 $138.00 064810 Randall Goodman 1240590287 $21.00 2 $42.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Úvod do SQL • General form of an SQL procedure query to generate summary output: PROC SQL; SELECT group-variable, SUM{analysis-variableJ FROM SAS-data-set GROUP BY group-variable, • If a summary function is used in the SELECT clause with only one argument, then an overall statistic is calculated down the column. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Úvod do SQL • Step 1: Identify the variables to display, the input data sets, and the matching criteria. proc sql; select m.CustomerIDf CustomerFirstName format=$10., CustomerLastName format=$15., sum(Quantity) label= fTotal Quantity1, sum(Quantity*UnitPrice) as TotSale format=dollarl2.2 label=fTotal Sale Amount1 from univ.mastercustomers as m, univ.customerorders as c where m.CustomerID=c.CustomerID; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 92 Úvod do SQL • Step 2: Identify the grouping variable(s). proc sql; select m.CustomerID, CustomerFirstName format=$10., CustomerLastName format=$15., sum(Quantity) label=f Total Quantity1, sum(Quantity*UnitPrice) as TotSale format=dollarl2.2 label=fTotal Amount Purchased1 from univ.mastercustomers as m, univ.customerorders as c where m.CustomerID=c.CustomerID group by m.CustomerID, CustomerFirstName, CustomerLastName; quit; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 93 Úvod do SQL General form of an SQL procedure query to generate ordered output: PROC SQL; SELECT group-variable, SVM{analys/s-varfable) FROM SAS-data-set GROUP BY group-variable ORDER BY variable 1 <, variable2> ; The default is ascending order. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Úvod do SQL • Order the report by total sale. proc sql; select m.CustomerIDf CustomerFirstName format=$10., CustomerLastName format=$15., sum(Quantity) label=fTotal Quantity1, sum(Quantity*UnitPrice) as TotSale format=dollarl2.2 label=fTotal Amount Purchased1 from univ.mastercustomers as m, univ.customerorders as c where m.CustomerID=c.CustomerID group by m.CustomerlDf CustomerFirstName, Cus tomerLas tName order by TotSale; quit; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 95 Úvod do SQL • Order the report by total sale - v sestupném pořadí proc sql; select m.CustomerIDf CustomerFirstName format=$10., CustomerLastName format=$15., sum(Quantity) label=fTotal Quantity1, sum(Quantity*UnitPrice) as TotSale format=dollarl2.2 label=fTotal Amount Purchased1 from univ.mastercustomers as m, univ.customerorders as c where m.CustomerID=c.CustomerID group by m.CustomerlDf CustomerFirstName, Cus tomerLas tName order by TotSale desc; quit; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 96 Inner IOIN • The INNER JOIN keywords can be used to join tables. The ON clause replaces the WHERE clause for specifying columns to join. PROC SQL provides these keywords primarily for compatibility with the other joins (OUTER, RIGHT, and LEFT JOIN). Using INNER JOIN with an ON clause provides the same functionality as listing tables in the FROM clause and specifying join columns with a WHERE clause. proc sql ; select p.country, barrelsperday 'Production', barrels 'Reserves' from sql.oilprod p inner join sql.oilrsrvs r on p.country = r.country order by barrelsperday desc; proc sql outobs=6; title 'Oil Production/Reserves of Countries'; select p.country, barrelsperday 'Production', barrels 'Reserves' from sql.oilprod p, sql.oilrsrvs r where p.country = r.country order by barrelsperday desc; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Left JOIN • Outer joins are inner joins that are augmented with rows from one table that do not match any row from the other table in the join. The resulting output includes rows that match and rows that do not match from the joins source tables. Nonmatching rows have null values in the columns from the unmatched table. Use the ON clause instead of the WHERE clause to specify the column or columns on which you are joining the tables. However, you can continue to use the WHERE clause to subset the query result. • A left outer join lists matching rows and rows from the left-hand table (the first table listed in the FROM clause) that do not match any row in the right-hand table. A left join is specified with the keywords LEFT JOIN and ON. proc sql; select Capital format=$20., Name 'Country' format=$20., Latitude, Longitude from sql.countries a left join sql.worldcitycoords b on a.Capital = b.City and a.Name = b.Country; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 98 Right JOIN • A right join, specified with the keywords RIGHT JOIN and ON, is the opposite of a left join: nonmatching rows from the right-hand table (the second table listed in the FROM clause) are included with all matching rows in the output. proc sql outobs=l(Deselect City format=$20., Country 'Country' format=$20., Population from sql.countries right join sql.worldcitycoords on Capital = City and Name = Country order by City; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 99 Inner/Full Outer/Left/Right JOIN • A full outer join, specified with the keywords FULL JOIN and ON, selects all matching and nonmatching rows. proc sql outobs=l(Deselect City '#City#(WORLDCITYCOORDS)' format=$20., Capital '#Capital#(COUNTRIES)' format=$20., Population, Latitude, Longitude from sql.countries full join sql.worldcitycoords on Capital = City and Name = Country; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 100 3. Příprava dat-čištění, kategorizace, agregace, transformace dat, úvod do SAS Data Step N=7098 (g=5559. b=1539) 60 10 J I_I_l_I_L_l_!_I_i_I_i_I_I_u_L_ 18 23 28 33 38 43 48 53 58 63 68 Vek Čištění dat: Praktické zkušenosti > Pokud vaše nová data obsahují více než 30 čísel, tak je v nich skoro jistě nějaká chyba. > Čištění a příprava dat zabírá obvykle 80 - 90 % analytikova času. > Pokud budete VELMI pečliví v této fázi, ušetříte si daleko víc času a nervů později - jinak stavíte dům na písku. GIGO > Garbage in, Garbage out (smetí dovnitř, smetí ven) > sebelepší model (proces) nevyrobí ze smetí nic jiného než opět smetí. Co způsobí nekvalitní data > Správa nekvalitních/nadbytečných dat > Nedoručené zásilky (marketing, fakturace) > Nesprávné výsledky zpracování (reporting, analýzy, data mining) > Špatné fungování systému (nekompatibilita) > Ztráta image, nespokojení klienti 104 Co způsobí nekvalitní data Pri mailingové kampani jedné britské maloobchodní společnosti se ukázalo, že jedna pětina oslovených už zemřela. Přesto (nebo pro to?) byli obesláni s pozdravným oslovením „Drahý pane Zesnulý". 1) Jistá pojišťovna zjistila, že většina jejich zákazníků má zaměstnání „Astronaut" - další pátrání ukázalo, že „Astronaut" je první volba v seznamu v jejich CRM systému. 1> 44 000-98 000 Američanů ročně umírá na základě odvratitelné medicínské chyby jako přepsání při psaní receptu, špatně popsaný výsledek krevní zkoušky, nečitelná informace v pacientských záznamech atd. Je to osmá nejčastější příčina úmrtí v USA 2> ^ 7.5.1999 bombardovaly ozbrojené síly USA čínské velvyslanectví v Jugoslávii. Vyšetřováni zjistilo: CIA používá zastaralý mapový materiál; ještě k tomu pracovník předložil v důsledku chyby v datech spatnou adresu - „Doslovně nakreslil X na nesprávné místo" 3> 1) Peel, M: Letters to the dead and other data dereliction. © 2007 Financial Times Deutschland. http://www.ftd.de. vydáni z 2.10.2007 2) Oash, J. (1999): IT Can Reduce Medical Errors. Obsazeno v: Wang, Pierce, Madnick: Information Quality, 2005 3) BBC: Americas Chinese embassy warning ignored. © 1999 BBC. http://n ews/b b c. co. uk/1 /h i/worid/ame ri cas/37775. stm. vydaní z 2.10.2007 105 Datová kvalita > Profiling, DQ Assessment - zjištění v jakém stavu jsou data > Deduplikace, clustering, unifikace, konsolidace > Prevence: > Data Governance - soustavná péče o data > Master Data Management - řešení pro správu klíčových dat 106 Čištění dat: Ověření souboru □ Ověření souboru s daty / zdrojů dat > Jsou to správná data (čas vzniku, výzkum...)? > Jsou kompletní, bez duplicit, umím je číst... □ Zkoumání případů > Mají identifikátory? 0 Jsou tyto ID správné? > Neopakují se (duplicity)? E3 Existují i „skoro" duplicity - dva podobné, ale ne přesně totožné záznamy o tomtéž subjektu. > Nejsou vynechány? 107 Čištění dat: Ověření proměnných □ Zkoumání metadat o proměnných > Jsou tam všechny proměnné a správně značené? > Je jasné, co znamenají (kódovníky, definice...)? Dokumentace OK? 0 Pozor na mezinárodní studie, produkty konsorcií agentur a opakované vlny výzkumů. Jemné nuance metody mohou způsobit hrubý nesoulad ! > Neopakuje se některá proměnná vícekrát? 108 Čistení dat: Průzkum proměnných □ Nabývá přípustných hodnot (x out of range)? □ „Divné" kódy („xxx" „9999"..) □ Duplicitní kódy pro stejnou věc („Ž" „ž" „žena" „zena"... □ Kódování češtiny/ruštiny/... Čištění dat: Průzkum proměnných □ Překlepy apod. > Editovací distance (Levenshteinova (BTiaAHMHpHocHdpoBHH^eBeHmTeHH) ...) pomohou odhalit překlep > Editovací distance = počet elementárních editovacích kroků potřebných pro změnu jednoho řetězce na druhý Viz i k Levenshteinově distanci E3je zde aplet, který ji umí počítat > Shlukování řetězců podle ED 110 Čištění dat: Průzkum proměnných □ Slučování podobných kategorií (prodavač - prodejce -prodavačka); □ Málo četné kategorie (národnost brazilská...) - je třeba sloučit/přiřadit k něj aké (kým) více četné (ným) kategorii(ím) na základě nějakého vhodného kriteria. □ Je distribuce přiměřená našemu očekávání (interval hodnot, rozptyl, šikmost, špičatost, modálni hodnoty...)? Není např. příliš „ořezaná" či naopak „roztažená"? > Někdy se obtížně poznává: Např. věk v části dat může být kódován jako poslední dvojčíslí roku narození, a v jiné části dat jako 200y - rok narození. Čištění dat: Průzkum proměnných □ Shluky (dumping), typicky kolem zaokrouhlených hodnot > Příjem -lidé rádi zaokrouhlují směrem nahoru. > Nebo třeba kolem hranic věkových kvót, vzniklé tím, jak tazatelé „upravují" věky respondentů, aby se vešli do kvót. □ Chybějící hodnoty (příčiny vzniku, zastoupení,...)!!! □ Pozor na kódy časů (amer. x evrop. konvence), regionů apod.! 112 Čištění dat: Vazby mezi daty □ Více proměnných > Kontingenční tabulky, box ploty s kategoriemi, bodové grafy a jejich matice, korelační koeficienty > Logické vazby (např. íotiletý nemůže být ženatý, 30tiletý nemůže pracovat 2olet,...) El Hledání pomocí programu/kódu - podmínky vyjádříme pomocí prostředků matematické logiky a necháme počítač, aby vyhledal případy, kde nejsou splněny. 113 Čištění dat: Vazby mezi daty □ Více proměnných > Extrémní hodnoty vícerozměrného rozdělení s Bodový graf s Mahalanobisova vzdálenost od těžiště: [(x-r)T S_1 (x-r)]~l/2, kde t je vektor těžiště, x zkoumaný bod a S kovarianční matice • např. P. Filzmoser (2004) A multivariate outlier detection method, http://www.statistik.tuwien.ac.at/public/filz/papers/minsk04.pdf > Další vlastnosti; např. existují očekávané korelace? 114 Čištění dat: Vazby mezi daty □ korektní vkládání dat do DB > text. pole s názvem zboží vs. rolovací seznam s typem zboží 100% -i 90% ■-80% ■-70% -|-60% 50% +-40% -|-30% 20% 10% -h > pořadí hodnot v rolovacím seznamu -problém první (defaultní) hodnoty o% ~\—■—■—i—■—■—i—■—■—i—■—■—i—■—■—i—■—■—i—■—■—i—■—■—i—■—■—i—■—■—i—■—■—i—■—■—* 3 4 5 6 7 8 9 10 11 12 1 2 I VT □ OT I NA □ MT □ FK ICT □ BT Čištění dat: Odlehlé hodnoty n - odlehlá hodnota -np- - horní vnitřní hradba nebo max. hodnota -'-1 — horní kvartil - — medián -1-' — dolní kvartil — - dolní vnitřní hradba nebo min. hodnota ■fr - extrémní hodnota > kvartilová odchylka: q= xQ 75 - xQ 25 > vnitřní hradby: xa2 - í.^q , x + í.^q > vnější hradby: xG 25 - 3q, xG 75 + 3q > Odlehlá hodnota leží mezi vnějšími a vnitřními hradbami, tj. v intervalu (xo,75+ 1>5C1' x0,75+ 3Q) čiv intervalu (xQ 25 - 3q, xo 25 - i, 5q). > Extrémní hodnota leží za vnějšími hradbami, tj. v intervalu (x + 3q, oo) >^či v intervalu (-oo, x - 3q). 116 Čištění dat: Opravy chyb □ Zpět k pramenům! □ Vyřazení podezřelých případů: > Záměrné podvody, např. nespolehliví tazatelé (shluková analýza!). > Neověřitelná data. □ Vyřazení podezřelých hodnot. □ Rekódování na správné hodnoty (imputace hodnot): > imputace - průměrem, mediánem, max./min. hodnotou, pomocí modelu. 117 Transformace dat □ Binarizace (dummy proměnné) > Dummy proměnné představují techniku využívající dichotomické proměnné (kódované o neoo i) pro vyjádření jednotlivých hodnot nominálních proměnných. >Název „dummy" poukazuje na fakt, že přítomnost znaku označeného kódem i reprezentuje faktor, nebo soubor faktorů, který není měřitelný žádným lepším způsobem v rámci dané analýzy. 118 Dummy proměnné □ Dummy proměnná přiřazuje hodnotu i danému pozorování vybrané proměnné a hodnotu o ve zbývajících případech. □ Pro pohlaví (2 kategorie), např. přiřadí 1 pro ženu a o pro muže. V tomto případě je postačující vytvoření právě jedné dummy proměnné. □ Pro rasu (4 kategorie), je třeba vytvořit více dummy proměnných. Pi=i, pokud rasa=„běloch" a o jinak. P2=i, pokud rasa=„černoch" a o jinak. P3=i, pokud rasa=„asiať a o jinak. P4=i, pokud rasa=„ostatní" a o jinak. □ Důležité: Všechny 4 proměnné nejsou zahrnuty do regrese (způsobilo by to perfektní multikolinearitu, P4=i-P3-P2-Pi). □ Počet dummy proměnných=počet kategorií -1. □ Vynechaná proměnná je „referenční" proměnnou. □ Konstanta obsahuje informaci o této referenční proměnné. □ Koeficienty zahrnutých proměnných jsou brány ve vztahu ke konstantě. 119 Transformace dat □ Kategorizace spojitých proměnných > decily □ Agregace □ Segmentace Categorization of predictors Every variable should be categorized (divided to reasonable number of categories Best separation (default rates within categories are different as much as possible) Time stability (ordering in categories by default rate is the same in different periods of development sample) aqe def 0.2212 pocet podil badrate 21 35 059 8.2% 13.11% 23 32 401 7.5% 9.81% 26 41 807 9.7% 8.61% 29 38 510 9.0% 8.07% 32 36 271 8.4% 6 79% 3S 44 648 10.4% 6.11% 41 50 015 11.6% 5.74% 45 40 099 9.3% 5.21% '51 54 526 12.7% 4.52% 60 56 551 13.2% 3.71% Info.Value: 0.1558 12.094 : 8.0% 6.0% 4.0% 2.0% 0.0% age_def 1 podil - badrate 11. ~-~-?n 12.00% 10.00% 3.00% S.00% 4.00% 2.00% 21 23 26 29 32 36 41 46 51 ] Total 429 887 100.0% 6.79% Categorization of predictors • We want to find out real statistical dependencies, not random differences in default. I I 1 J 4 5 « 1 I I ID II 11 \i H 122 Transformace dat - WOE □ Good celkový počet dobrých klientů ve vzorku □ Bad celkový počet špatných klientů ve vzorku □ □ □ □ □ goodiS, badis celková šance počet dobrých, resp. špatných klientů v i-té kategorii příslušné s-té proměnné. good odds all = bad šance i-té kategorie s-té proměnné poměr šancí (OR) WOE (weights of evidence) odds/ = goodj' bad4 8 odds ratio/ = odds. odds all WOE" =ln(odds_ratiois)=ln goodi goodi badj8 = ln good good badj8 bad v J v bad y Transformace dat -WOE cat. # bad clients #good clients Def rate odds OR % bad [1] % good [2] [3] = [2]/[1] WOE = ln[3] 1 4 1 80,0% 0,25 0,03 40,0% 1,1% 0,03 -3,58 2 2 6 25,0% 3,00 0,33 20,0% 6,7% 0,33 -1,10 3 2 18 10,0% 9,00 1,00 20,0% 20,0% 1,00 0,00 4 1 12 7,7% 12,00 1,33 10,0% 13,3% 1,33 0,29 5 1 53 1,9% 53,00 5,89 10,0% 58,9% 5,89 1,77 All 10 90 10,0% 9,00 ALL 100 124 The SORT Procedure •The SORT procedure rearranges the observations in work. qtrlsalesrep and places them in order by descending Last Name within Country. ĚSÍ PROG2Review.sas * H libnanie orion T s : \workshop T ; data work.qtrlsalesrep; proc sort data=work.qtrlsalesrep; by Country descending Last Name; run; •The OUT= option in the SORT procedure can be used to create an output data set, instead of overwriting the input data set. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The FORMAT Procedure •The FORMAT procedure creates user-defined formats and informats, and stores them in the SAS catalog work.formats by default. PROG2Review.sas * libname orion 's:\workshop'; H data work.qtrlsalesrep; S proc sort data=¥ork.qtrlsalesrep; > proc format; value $ctryfmt T AU T = T Australia T TUST=TUnited States'; run; • Více na: http://www2.sas.com/proceedings/sugi27/po56-27.pdf Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The FORMAT Procedure •Range(s) can be • single values • ranges of values • lists of values. •Labels • can be up to 32,767 characters in length • are typically enclosed in quotation marks, although it is not required. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 127 Character User-Defined Format character discrete format character name values n— $ctryfmt -t- 'AU' 'US' proc format = 'United run; other = 'Miscoded'; keyword labels •The OTHER keyword matches all values that do not match any other value or range. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Character User-Defined Format Iproc format; value $ctryfmt fAUf = fAustralia1 fUSf = fUnited States other = fMiscoded1; run ; proc print data=orion.sales label; var Employee_ID Job_Title Salary Country Birth_Date Hire_Date; label Employee_ID= f Sales ID f Job_Title=fJob Title1 Salary= f Annual Salaryf Birth_Date=fDate of Birth1 Hire_Date=fDate of Hire1; format Salary dollarlO.O Birth_Date Hire_Date monyy7. Country $ctryfmt.; run; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 129 Character User-Defined Format •Partial PROC PRINT Output Annual Date of Obs Sales ID Job Title Salary Country Birth Hire 60 120178 Sales Rep. II $26,165 Australia N0V1954 APR1974 61 120179 Sales Rep. III $28,510 Australia MAR1974 JAN2004 62 120180 Sales Rep. II $26,970 Australia JUN1954 DEC1978 63 120198 Sales Rep. III $28,025 Australia JAN1988 DEC2006 64 120261 Chief Sales Officer $243,190 United States FEB1969 AUG1987 65 121018 Sales Rep. II $27,560 United States JAN1944 JAN1974 66 121019 Sales Rep. IV $31,320 United States JUN1986 JUN2004 67 121020 Sales Rep. IV $31,750 United States FEB1984 MAY2002 68 121021 Sales Rep. IV $32,985 United States DEC1974 MAR1994 69 121022 Sales Rep. IV $32,210 United States 0CT1979 FEB2002 70 121023 Sales Rep. I $26,010 United States MAR1964 MAY1989 71 121024 Sales Rep. II $26,600 United States SEP1984 MAY2004 72 121025 Sales Rep. II $28,295 United States 0CT1949 SEP1975 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 130 Numeric User-Defined Format numeric ranges proc format; value tiers run; t numeric format name 20000-49999 50000-99999 00000-250000 Tier 1 Tier 2 Tier 3 labels Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Numeric User-Defined Formats •The less than (<) symbol excludes values from ranges. Put < after the value if you want to exclude the first value in a range. Put < before the value if you want to exclude the last value in a range. 50000- 100000 Includes 50000 Includes 100000 50000 - < 100000 Includes 50000 Excludes 100000 50000<-100000 Excludes 50000 Includes 100000 50000<-< 100000 Excludes 50000 Excludes 100000 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Numeric User-Defined Format keyword proc format; 1 value tiers low-<50000 = 1 Tier lf 50000- 100000 = 1 Tier 2f 100000<-high = 1 Tier 3' ; run; Í keyword LOW encompasses the lowest possible value. HIGH encompasses the highest possible value. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Other User-Defined Format Examples proc format; value $grade iAi = 1 Good1 »Bf-fDf = 1 Fair1 »F» = 1 Poor1 111 , 1U1 = 1 See Instructor1 other = 1Miscoded1; run; proc format; value mnthfmt 1,2,3 = fQtr lf 4,5,6 = fQtr 2f 7,8,9 = fQtr 3f 10,11,12 = fQtr 4f • = 1missing1 other = 1 unknown1 ; run; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Multiple User-Defined Formats •Multiple VALUE statements can be in a single PROC FORMAT step. proc format; value $ctryfmt fAUf = Australia1 fUSf = 1 United States1 other = 1Miscoded1; value tiers low-<50000 = 1 Tier lf 50000- 100000 = fTier 2f 100000<-high = 1 Tier 3f; run; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The FORMAT Procedure proc format; value $goods_t tbti=iAi fBZT=TD, T T =Tmissing! 1 T='missingT .='missing1 r run; proc tabulate data=libl.tabl missing; title "D vs. goods_type"; class goods_type Datable (goods_type all) , (D all)*(n colpctn=fc%! rowpctn=1r%1); format goods_type $goods_t.; run; 136 The FORMAT Procedure proc format; value good_typ 1=1 2=3 3=10 ■ run ; Data libl.tabl/ Set libl.tabl; goods_type3=goods_type2 format goods_typen3n good_typ.; run; The FORMAT Procedure proc format; invalue good t2e 1 BT' =4 data libl.tabl; 'BZ' =5 set libl.tabl; 'CK' =5 goods typel=upcase(goods_type); othe r=-l goods type3n=input(goods_typel,goo ■ d_t2e.); r evid id=put(evid id,zlO.); run; • r run; 138 Replacing Missing Values The COALESCE function enables you to replace missing values in a column with a new value that you specify. For every row that the query processes, the COALESCE function checks each of its arguments until it finds a nonmissing value, then returns that value. If all of the arguments are missing values, then the COALESCE function returns a missing value. For example, the following query replaces missing values in the LowPoint column in the SQL.CONTINENTS table with the words Not Available: proc sql; title 'Continental Low Points'; select Name, coalesce(LowPoint, 'Not Available') as LowPoint from sql.continents; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA Oulpul 2.14 Using the COALESCE Function to Replace Missing Values Name Continental LOW Points LowPoint Africa Lake Assal Antarctica Not Available Asia Dead Sea Australia Lake Eyre Central America and Caribbean Not Available Europe Caspian Sea Worth America Death Valley Oceania Not Available South America Valdes Peninsula 139 The DATA Step The SAS DATA step • is the original SAS programming language for data manipulation • can be used as a complete programming language • is generated by SAS Enterprise Guide when data is imported or in support of other tasks. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Advantages of the DATA Step over SQL DATA Step SQL Can read data from many different Can only read from SAS database sources tables Can create multiple tables in a single pass of the data Can only output one table at a time Has comprehensive conditional Only has the CASE clause processing Can deal with repetitive programming using loops and arrays Does not support loops or arrays Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 141 Advantages of SQL over the DATA Step SQL DATA Step Is very flexible when joining Can require several steps to join multiple tables with non-common multiple tables with different key key variables variables Can, in some cases, replace multiple SAS steps Can require several steps Is the native language of databases Might need to generate SQL to get to data that is not SAS data Choose the right tool for the task to be completed. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 142 The DATA Statement The DATA statement begins a DATA step and provides the name of the SAS data set being created. General form of the DATA statement: DATA output-SAS-data-set; SET input-SAS-data-set; RUN; I The DATA statement can create temporary or permanent data sets. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The SET Statement •The SET statement reads observations from a SAS data set for further processing in the DATA step. General form of the SET statement: DATA output-SAS-data-set; SET input-SAS-data-set; RUN; 1 By default, the SET statement does the following: • names the SAS data set(s) to be read • reads all observations and all variables from the input data set • can read temporary or permanent data sets Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 144 Business Scenario: Reading a SAS Data Set This program does the following: ■ reads all the rows and all the columns from the sales data set in the orion library ■ writes all the rows and all the columns to a data set named comp in the Work library Partial Listing of comp work.comp; t orion.sales run; Employee ID First_ Name l&Nam^Gende' 3ÍJ Salary ^ Job_Tille ^ Country Birth Date © Hire_Date 120102! Torn Zhou !M 108255! Sales Manager AU 3510 10744 120103 J Wilson Dawes j M 87975; Sales Manager AU ■3996 5114 120121 Mrenie Elvish j F 26600! Sales Rep. II AU ■5630 5114 120122! Christina Ngan j F 27475! Sales Rep. II AU ■1984 6756 120123!Kimiko Hotstone ! F 26190! Sales Rep. 1 AU 1732 9405 120124!Lucian Daynnond j M 26480! Sales Rep. 1 AU -233 6999 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 145 Selecting Variables •You can control the variables written out to SAS data sets using the following: • the DROP statement to specify the variables that you want excluded • the KEEP statement to specify the variables that you want included •General form of DROP and KEEP statements: DROP variable 1 variable2 ...; KEEP variable 1 variable2 ...; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Business Scenario: Selecting Variables data work.comp; set orion.sa] Les ; drop Gender í Salary Job Title Country Birth Date Hire Date; run ; Partial Listing of comp This program can do these tasks: ■ read all the rows and columns from orion.sales ■ write all the rows and the three columns not excluded via the DROP statement to a data set called comp in the Work library ® Employee ^ A\ Last & Name 1201021 Tom Zhou 120103 J Wilson Dawes 120121 jlrenie Elvish 120122 J Christina Ngan 120123 i Kimiko Hotstone 1201241 Lucian Dayrnond Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 147 Selecting Rows Partial Listing of austemp @ Employee a First J--> Name Last_Name Gender @ Salary ^ Job_Title fy. Country 1 120102 Torn Zhou M 108255 Sales Manager AU 2 120103 Wilson Dawes M 87975 Gales Manager AU 3 120125 Fong Hofmeister M 32040! Sales Rep. IV AU 4 120128 Monica Kletschkus F 30890: Sales Rep. IV AU 5 120129 Alvin Roebuck M 30070! Sales Rep. Ill AU 6 120135 Alewei Platts M 32490! Sales Rep. IV AU 7 120144 Viney Barbis M 30265! Sales Rep. Ill AU 8 120154 Caterina Hayawardhana F 30490! Sales Rep. Ill AU 9 12015S Daniel Pilgrim M 36605! Sales Rep. Ill AU 10 120159 Lynelle Phoumirath F 30765! Sales Rep. IV AU 11 1201G1 Rosette Martines F 30785! Sales Rep. Ill AU 12 120166 Fadi N owd M 30660 Sales Rep. IV AU Orion wants to subset the data to only include Australian employees with a salary greater than $30,000. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 148 Selecting Rows with the WHERE Statement You can control which rows are read from a SAS data set by using the WHERE statement. General form of the WHERE statement: WHERE expression; • Only one WHERE statement can be included in a DATA step. • The expressions that can be used are the same as expressions built in the Filter Data tab using either the Edit Filter window or the Advanced Expression Editor. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Comparison Operators -examples where Gender = TMT; where Gender eq T T; where Salary ne .; where Salary >= 50000; where Country in (T AUT , T US T) ; where Country in (T AUT T US T) ; Values must be separated by commas or blanks. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 150 Arithmetic Operators - examples where Salary / 12 < 6000; where (Salary / 12 ) * 1.10 >= 7500; where Salary + Bonus <= 10000; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Logical Operators - examples where Gender ne TMT and Salary >=50000; where Gender ne TMT or Salary >= 50000; where Country = T AUT or Country = T US T ; where Country not in (TAUT TUST); Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Multiple Choice Poll - Correct Answer •Which WHERE statement correctly subsets for numeric months May, June, or July and character names with a missing value? a. where Months in (5 - 7) and Names = . ; ^b^where Months in (5 , 6 , 7) and Names = 1 1 ; c. where Months in (f5f , 1 6 1 , f7f) and Names = 1 . 1 ; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Creating New Variables •Assignment statements are used in the DATA step to update existing variables or create new variables. •An assignment statement does the following: • evaluates an expression • assigns the resulting value to a variable General form of an assignment statement: variable=expression; DATA output-SAS-data-set\ SET input-SAS-data-set; variable = expression; RUN: Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. SAS Expressions • An expression contains operands and operators that form a set of instructions that produce a value. Operands are ■ variable names ■ constants. Operators are ■ symbols that request arithmetic calculations ■ SAS functions. • An expression entered in an assignment statement is identical to an expression built using the SAS Enterprise Guide Advanced Expression Editor. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Operands •Operands are constants (character, numeric, or date) and variables (character or numeric). •Examples: Bonus = 500; numeric constant NewSalary =1.1 * Salary; variable Hire_Date = T01APR2008Td; date constant Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. SAS Date Constants The constant1ddMMMyyyy d (example: i4 . Frequency count (Limit ^ Group analysis by The selection pane enables you to choose different sets of options for the task. Run J. Save J. Cancel J. "3 lelp The "Analysis variables" role must have at least 1 variable assigned to it. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The Table Analysis Task III Table Analysis for LocafcSASUSER.SALESJNCLEVEL Tables Cell Statistics Table Statistics Association Agreement Ordered Differences Trend Test Computation Options Results Cell Stat Results Table Stat Results Titles Properties Data Data source: Locar.SASUSER.SALESJNCLEVEL Task filter: None Variables to assign: Task roles: Name (ij3) IncLevel (jžj) Purchase .^Gender /Q, Income ©Age Ml Frequency count (Limit: 1 }■ Group analysis by Table variables < variable required> < variable required> J Jj Edit.. Select a column.. The selection pane enables you to choose different sets of options for the task. 3 You must define at least one table on the Tables page. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The FREQ Procedure •The FREQ procedure can do the following: • produce one-way to n-way frequency and crosstabulation (contingency) tables • compute chi-square tests for one-way to n-way tables and measures of association and agreement for contingency tables • automatically display the output in a report and save the output in a SAS data set •General form of the FREQ procedure: - PROC FREQ DATA=SAS-data-set ; TABLES variable(s) ; RUN; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 189 The FREQ Procedure A FREQ procedure with no TABLES statement generates one-way frequency tables for all data set variables. proc freq data=orion.sales; run; This PROC FREQ step creates a frequency table for the following nine variables: • Employ ee_ID • Job_Title First_Name • Country • Last_Name • Birth_Date • Gender * Hire_Date • Salary Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The TABLES Statement The TABLES statement specifies the frequency and crosstabulation tables to produce. proc freq data=orion.sales; tables Gender Country; ^ run; one-way frequency tables An asterisk between variables requests a n-way crosstabulation table. proc freq data=orion.sales; tables Gender*Country; run; two-way frequency table Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The TABLES Statement A one-way frequency table produces frequencies, cumulative frequencies, percentages, and cumulative percentages. proc freq data=orion.sales; tables Gender Country; run; The FREQ Procedure Cumulative Cumulative Gender Frequency Percent Frequency Percent F 68 41.21 68 41.21 M 97 58.79 165 100.00 Cumulative Cumulative Country Frequency Percent Frequency Percent AU 63 38.18 63 38.18 US 102 61.82 165 100.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The TABLES Statement An n-way frequency table produces cell frequencies, cell percentages, cell percentages of row frequencies, and cell percentages of column frequencies, plus total frequency and percent. proc freq data=orion.sales; tables Gender*Country; run; V ^ A ) rows columns Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The TABLES Statement The FREQ Procedure Table of Gender by Country Gender Country Frequency Percent Row Pet Col Pet AU US F 27 16.36 39.71 42.86 41 24.85 60.29 40.20 M 36 21 .82 37.11 57.14 61 36.97 62.89 59.80 Total 63 38.18 102 61 .82 Total 68 41 .21 97 58.79 165 100.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 194 Additional SAS Statements Additional statements can be added to enhance the report. proc format; value $ctryfmt fAUf=fAustraliaf f US f = fUnited States f; run ; options nodate pageno=l; ods html file=fpll2d01.htmlf; proc freq data=orion.sales; tables Gender*Country; where Job_Title contains fRepf; format Country $ctryfmt.; title fSales Rep Frequency Report'; run ; ods html close; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 195 Additional SAS Statements •HTML Output_ Sales Rep Frequency Report The FREQ Procedure Frequency Percent Row Pet Col Pet Table of Gender by Country Total Gender Country Australia United States F 27 40 67 16.98 25.16 42.14 40.30 59.70 44.26 40.82 M 34 58 92 21.38 36.48 57.86 36.96 63.04 55.74 59.18 Total 61 98 159 38.36 61.64 100.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 196 Options to Suppress Display of Statistics •Options can be placed in the TABLES statement after a forward slash to suppress the display of the default statistics. Option Description NOCUM suppresses the display of cumulative frequency and cumulative percentage. NOPERCENT suppresses the display of percentage, cumulative percentage, and total percentage. NOFREQ suppresses the display of the cell frequency and total frequency. NOROW suppresses the display of the row percentage. NOCOL suppresses the display of the column percentage. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 197 Additional TABLES Statement Options •Additional options can be placed in the TABLES statement after a forward slash to control the displayed output. Option LIST CROSSLIST FORMAT= Description displays />way tables in list format, displays n-way tables in column format formats the frequencies in n-way tables Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 198 LIST and CROSSLIST Options Gender Country Frequency Percent Cumulative Frequency Cumulative Percent F Australia F United States M Australia M United States 27 41 36 61 16.36 24.85 21.82 36.97 27 68 104 165 16.36 41.21 63.03 100.00 tables Gender*Country / ' list; Table of Gender by Country Row Column Gender Country Frequency Percent Percent Percent F Australia 27 16.36 39.71 42.86 United States 41 24.85 60.29 40.20 Total 68 41.21 100.00 M Australia 36 21.82 37.11 57.14 United States 61 36.97 62.89 59.80 Total 97 58.79 100.00 tables Gender*Country / ' crosslist; Total Australia 63 38.18 100.00 United States 102 61 .82 100.00 Total 165 100.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 199 PROC FREQ Statement Options Options can also be placed in the PROC FREQ statement. Option Description NLEVELS displays a table that provides the number of levels for each variable named in the TABLES statement. PAGE displays only one table per page. begins the display of the next one-way frequency table COMPRESS on the same page as the preceding one-way table if there is enough space to begin the table. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 200 NLEVELS Option proc freq data=orion.sales nlevels; tables Gender Country Employee_ID; run; Partial PROC FREQ Output The FREQ Procedure Number of Variable Levels Variable Levels Gender 2 Country 2 Employee_ID 165 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 201 Output Data Sets •PROC FREQ produces output data sets using two different methods. • The TABLES statement with an OUT= option is used to create a data set with frequencies and percentages. TABLES variables 10\JT=SAS-data-set ; The OUTPUT statement with an OUT= option is used to create a data set with specified statistics such as the chi-square statistic. OUTPUT 0\JT=SAS-data-set ; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 202 The MEANS Procedure •The MEANS procedure provides data summarization tools to compute descriptive statistics for variables across all observations and within groups of observations. General form of the MEANS procedure: -k PROC MEANS DATA=SAS-data-set ; VAR analysis-variable(s); C LASS classification-variable(s); RUN; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 203 The MEANS Procedure •By default, the MEANS procedure reports the number of nonmissing observations, the mean, the standard deviation, the minimum value, and the maximum value of all numeric variables. proc means data=orion.sales; run; The MEANS Procedure Variable N Mean Std Dev Minimum Maximum Employee_ID Salary Birth_Date Hire Date 165 165 165 165 120713.90 31160.12 3622.58 12054.28 450.0866939 20082.67 5456.29 4619.94 120102.00 22710.00 -5842.00 5114.00 121145.00 243190.00 10490.00 17167.00 pll2d05 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 204 The VAR Statement The VAR statement identifies the analysis variables and their order in the results. proc means data=orion.sales; var Salary; run; The MEANS Procedure Analysis Variable : Salary N Mean Std Dev Minimum Maximum 165 31160.12 20082.67 22710.00 243190.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 205 The CLASS Statement The CLASS statement identifies variables whose values define subgroups for the analysis. proc means data=orion.sales; var Salary; class Gender Country; run; The MEANS Procedure Analysis Variable : Salary Gender Country N Obs N Mean Std Dev Minimum Maximum F AU 27 27 27702.41 1728.23 25185.00 30890.00 us 41 41 29460.98 8847.03 25390.00 83505.00 M AU 36 36 32001.39 16592.45 25745.00 108255.00 us 61 61 33336.15 29592.69 22710.00 243190.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 206 The CLASS Statement classification variables j j Gender Country proc means data=orion.sales; var Salary; class Gender Country; run ; The MEANS Procedure Analysis Variable : Salary N Obs analysis variable N Mean Std Dev Minimum Maximum M AU US AU US 27 41 36 61 27702.41 1728.23 25185.00 30890.00 41 29460.9 36 32001.3 nroftA r\f\ statistics for analysis variable 00 00 61 33336.15 29592.69 22710.00 243190.00 I The CLASS statement adds the N Obs column, which is the number of observations for each unique combination of the class variables. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 207 PROC MEANS Statistics The statistics to compute and the order to display them can be specified in the PROC MEANS statement. proc means data=orion.sales sum mean range; var Salary; class Country; run ; The MEANS Procedure Analysis Variable : Salary Country N Obs Sum Mean Range AU US 63 102 1900015.00 3241405.00 30158.97 31778.48 83070.00 220480.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 208 PROC MEANS Statistics Descriptive Statistic Keywords clm css cv lclm max mean min mode n nmiss kurtosis range skewness stddev stderr sum sumwgt uclm uss var Quantile Statistic Keywords MEpD^Nl pi p5 p10 q1 I p25 q3 | p75 p90 p95 p99 qrange Hypothesis Testing Keywords probt t Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 209 PROC MEANS Statement Options •Options can also be placed in the PROC MEANS statement. Option Description MAXDEC= specifies the number of decimal places to use in printing the statistics. FW= specifies the field width to use in displaying the statistics. NONOBS suppresses reporting the total number of observations for each unique combination of the class variables. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 210 MAXDEC= Option_ Iproc means data=orion.sales maxdec=0; Analysis Variable : Salary N Country Obs N Mean Std Dev Minimum Maximum AU 63 63 30159 12699 25185 108255 US 102 102 31778 23556 22710 243190 proc means data=orion.sales maxdec=l; Analysis Variable : Salary N Country Obs N Mean Std Dev Minimum Maximum AU 63 63 30159.0 12699.1 25185.0 108255.0 US 102 102 31778.5 23555.8 22710.0 243190.0 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 211 FW= Option_ - proc means data=orion.sales; Analysis Variable : Salary Country N Obs N Mean Std Dev Minimum Maximum AU 63 63 30158.97 12699.14 25185.00 108255.00 US 102 102 31778.48 23555.84 22710.00 243190.00 proc means data=orion.sales fw=15; Analysis Variable : Salary Country N Obs N Mean Std Dev Minimum Maximum AU 63 63 30158 .96825397 12699. 13932690 25185 .00000000 108255 US 102 102 31778 .48039216 23555. 84171928 22710 .00000000 243190 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 212 NONOBS Option_ Iproc means data=orion.sales; Analysis Variable : Salary N Country Obs N Mean Std Dev Minimum Maximum AU 63 63 30158.97 12699.14 25185.00 108255.00 US 102 102 31778.48 23555.84 22710.00 243190.00 proc mear is data=orion.sa les nonobs; Analysis Variable : Salary Country N Mean Std Dev Minimum Maximum AU 63 30158.97 12699.14 25185.00 108255.00 US 102 31778.48 23555.84 22710.00 243190.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Output Data Sets •PROC MEANS produces output data sets using the following method: OUTPUT OVT=SAS-data-set \ The output data set contains the following variables: • BY variables • class variables • the automatic variables _T YPE_ and _FREQ_ • the variables requested in the OUTPUT statement Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. OUTPUT Statement OUT= Option The statistics in the PROC statement impact only the MEANS report, not the data set. A, proc means data=orion.sales 1 sum mean range; var Salary; class Gender Country; output out=work.means1; run; proc print data=work.means1; run; pll2d06 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. OUTPUT Statement OUT= Option Obs Gender Country _TYPE_ FREQ_ _STAT_ Salary 1 0 165 N 165.00 2 0 165 MIN 22710.00 3 0 165 MAX 243190.00 4 0 165 MEAN 31160.12 5 0 165 STD 20082.67 6 AU 1 63 f~N 63.00 7 default statistics 1 MIN 25185.00 8 MAX 108255.00 9 ftU 1 DO 1 MEAN 30158.97 10 AU 1 63 L_STD 12699.14 11 US 1 102 N 102.00 12 US 1 102 MIN 22710.00 13 US 1 102 MAX 243190.00 14 US 1 102 MEAN 31778.48 15 US 1 102 STD 23555.84 16 F 2 68 N 68.00 17 F 2 68 MIN 25185.00 18 F 2 68 MAX 83505.00 19 F 2 68 MEAN 28762.72 20 F 2 68 STD 6974.15 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. OUTPUT Statement OUT= Option •The OUTPUT statement can also do the following: • specify the statistics for the output data set • select and name variables proc means data=orion.sales noprint; var Salary; class Gender Country; output out=work.means2 min=minSalary max=maxSalary sum=sumSalary mean=aveSalary; run ; proc print data=work.means2; run ; •The NOPRINT option suppresses the display of all output. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 217 OUTPUT Statement OUT= Option •PROC PRINT Output min max sum ave Obs Gender Country _TYPE_ _FREQ_ Salary Salary Salary Salary 1 0 165 22710 243190 5141420 31160.12 2 AU 1 63 25185 108255 1900015 30158.97 3 US 1 102 22710 243190 3241405 31778.48 4 F 2 68 25185 83505 1955865 28762.72 5 M 2 97 22710 243190 3185555 32840.77 6 F AU 3 27 25185 30890 747965 27702.41 7 F US 3 41 25390 83505 1207900 29460.98 8 M AU 3 36 25745 108255 1152050 32001.39 9 M US 3 61 22710 243190 2033505 33336.15 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 218 OUTPUT Statement OUT= Option •_TYPE_ is a numeric variable that shows which combination of class variables produced the summary statistics in that observation. min max sum ave Obs Gender Country _TYPE_ overall summary 1 2 3 0^ 1—i 1 — H CE AU US summary by Country only ' 1 \jc 4 5 F M AU z—i 2—■ summary by Gender only 6 F 3—^1 2/ 2b1öb 3UÖ9U /4/96b 2//U2.41 7 8 F M US AU 3 3 Summary by Country and Gender 9 M US 3—1 61 22710 243190 2033505 33336.15 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 219 PUTPUT Statement OUT= Option min max sum ave Obs Gender Country _TYPE_ _FREQ_ Salary Salary Salary Salary 1 0 165 22710 243190 5141420 31160.12 2 AU 1 63 25185 108255 1900015 30158.97 3 US 1 102 22710 243190 3241405 31778.48 4 F 2 68 25185 83505 1955865 28762.72 5 M 2 97 22710 243190 3185555 32840.77 6 F AU 3 27 25185 30890 747965 27702.41 7 F US 3 41 25390 83505 1207900 29460.98 8 M AU 3 36 25745 108255 1152050 32001.39 9 M US 3 61 22710 243190 2033505 33336.15 _TYPE_ Type of Summary FREQ 0 overall summary 165 summary by Country only 63 AU + 102 AU = 165 2 summary by Gender only 68F + 97M = 165 3 summary by Country and Gender 27FAU + 41 F US + 36 M AU + 61 M US = 165 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. OUTPUT Statement OUT= Option •Options can be added to the PROC MEANS statement to control the output data set. Option Description specifies that the output data set contain only statistics for the observations with the highest type value. DESCENDTYPES orders the output data set by descending _type_ value. specifies that the _type_ variable in the output data CHARTYPE set is a character representation of the binary value of type . Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 221 OUTPUT Statement OUT= Option min max sum ave Obs Gender Country r _TYPE_ _FREQ_ Salary Salary Salary Salary 1 0 165 22710 243190 5141420 31160.12 2 AU 1 63 25185 108255 1900015 30158.97 3 US 1 102 22710 243190 3241405 31778.48 4 F 2 68 25185 83505 1955865 28762.72 5 M 2 97 22710 243190 3185555 32840.77 6 F AU 3 27 25185 30890 747965 27702.41 7 F US 3 41 25390 83505 1207900 29460.98 8 M AU 3 36 25745 108255 1152050 32001.39 9 M US 3 61 22710 243190 2033505 33336.15 with NWAY Obs Gender Country _TYPE_ _FREQ_ min Salary max Salary sum Salary ave Salary 1 F AU 3 27 25185 30890 747965 27702.41 2 F US 3 41 25390 83505 1207900 29460.98 3 M AU 3 36 25745 108255 1152050 32001.39 4 M US 3 61 22710 243190 2033505 33336.15 pll2d06 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. OUTPUT Statement OUT= Option with DESCENDTYPES min max sum ave Obs Gender Country _TYPE_ ^ _FREQ_ Salary Salary Salary Salary 1 F AU 3 27 25185 30890 747965 27702.41 2 F US 3 41 25390 83505 1207900 29460.98 3 M AU 3 36 25745 108255 1152050 32001.39 4 M US 3 61 22710 243190 2033505 33336.15 5 F 2 68 25185 83505 1955865 28762.72 6 M 2 97 22710 243190 3185555 32840.77 7 AU 1 63 25185 108255 1900015 30158.97 8 US 1 102 22710 243190 3241405 31778.48 9 0 J 165 22710 243190 5141420 31160.12 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 223 OUTPUT Statement OUT= Option with CHARTYPE min max sum ave Obs Gender Country r -TYPE _FREQ_ Salary Salary Salary Salary 1 00 165 22710 243190 5141420 31160.12 2 AU 01 63 25185 108255 1900015 30158.97 3 US 01 102 22710 243190 3241405 31778.48 4 F 10 68 25185 83505 1955865 28762.72 5 M 10 97 22710 243190 3185555 32840.77 6 F AU 11 27 25185 30890 747965 27702.41 7 F US 11 41 25390 83505 1207900 29460.98 8 M AU 11 36 25745 108255 1152050 32001.39 9 M US L 11 61 22710 243190 2033505 33336.15 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 224 The SUMMARY Procedure •The SUMMARY procedure provides data summarization tools to compute descriptive statistics for variables across all observations and within groups of observations. General form of the SUMMARY procedure: PROC SUMMARY DATA=SAS-data-set \ VAR analysis-variable(s); CLASS classification-variable(s); RUN; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 225 The SUMMARY Procedure The SUMMARY procedure uses the same syntax as the MEANS procedure. The only differences to the two procedures are the following: PROC MEANS PROC SUMMARY The PRINT option is set by default, The NOPRINT option is set by default, which displays output. which displays no output. Omitting the VAR statement analyzes all the numeric variables. Omitting the VAR statement produces a simple count of observations. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 226 The TABULATE Procedure •The TABULATE procedure displays descriptive statistics in tabular format. General form of the TABULATE procedure: PROC TABULATE DATA=SAS-data-set ; CLASS classification-variable(s); VAR analysis-variable(s); TA B L E page-expression, row-expression, column-expression \ RUN; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 227 Dimensional Tables •The TABULATE procedure produces one-, two-, or three-dimensional tables. page dimension row dimension column dimension one-dimensional two-dimensional three-dimensional Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 228 The TABLE Statement •The TABLE statement describes the structure of the table. table page expression row expression column expression ' dimension expressions Commas separate the dimension expressions. Every variable that is part of a dimension expression must be specified as a classification variable (CLASS statement) or an analysis variable (VAR statement). Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 229 The TABLE Statement table page row column expression , expression ' expression ; •Examples: table Country; table Gender , Country; table Job Title , Gender , Country; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 230 The CLASS Statement The CLASS statement identifies variables to be used as classification, or grouping, variables. General form of the CLASS statement: CLASS classification-variable(s); | • N, the number of nonmissing values, is the default statistic for classification variables. • Examples of classification variables: Job_Title, Gender, and Country Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The VAR Statement •The VAR statement identifies the numeric variables for which statistics are calculated. •General form of the VAR statement: VAR analysis-variable(s); I • SUM is the default statistic for analysis variables. • Examples of analysis variables: Salary and Bonus Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 232 One-Dimensional Table proc tabulate data=orion.sales; class Country; table Country; run; Country AU US N N 63.00 102.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Two-Dimensional Table proc tabulate data=orion.sales; class Gender Country; table Gender, Country; run; Country AU US N N Gender 27.00 41.00 F M 36.00 61.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Three-Dimensional Table proc tabulate data=orion.sales; class Job_Title Gender Country; table Job_Title, Gender, Country; run ; Job_Title Sales Rep. I Gender M pll2d08 Country AU US Job_Title Sales Rep. II Country AU US N N Gender 10.00 14.00 F M 8.00 14.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 235 Dimension Expression •Elements that can be used in a dimension expression: • classification variables • analysis variables • the universal class variable ALL keywords for statistics Operators that can be used in a dimension expression: • blank, which concatenates table information • asterisk *, which crosses table information • parentheses (), which group elements Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Dimension Expression proc tabulate data=orion.sales; class Gender Country; var Salary; _ table Gender all, Country*Salary; run; Country AU US Salary Salary Sum Sum Gender 747965.00 1207900.00 F M 1152050.00 2033505.00 All 1900015.00 3241405.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. PROC TABULATE Statistics Descriptive Statistic Keywords CSS CV LCLM MAX MEAN MIN MODE N NMISS ■ KURTOSIS RANGE SKEWNESS STDDEV STDERR SUM SUMWGT UCLM USS VAR PCTN REPPCTN PAGEPCTN ROWPCTN COLPCTN PCTSUM REPPCTSUM PAGEPCTSUM ROWPCTSUM COLPCTSUM Quantile Statistic Keywords MEDIAN 1 P50 P1 P5 P10 Q1 I P25 P90 P95 P99 ORANGE Hypothesis Testing Keywords PROBT T Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 238 PROC TABULATE Statistics proc tabulate data=orion.sales; class Gender Country; var Salar^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ table Gender all, Country*Salary*(min max); run; Country AU US Salary Salary Min Max Min Max Gender 25185.00 30890.00 25390.00 83505.00 F M 25745.00 108255.00 22710.00 243190.00 All 25185.00 108255.00 22710.00 243190.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Additional SAS Statements •Additional statements can be added to enhance the report. proc format; value $ctryfmt 1AU1 ='Australia 1 'US'='United States'; run; options nodate pageno=l; ods html file=fpll2d08.html1; proc tabulate data=orion.sales; class Gender Country; var Salary; table Gender all, Country*Salary*(min max); where Job_Title contains 'Rep1; label Salary='Annual Salary'; format Country $ctryfmt.; title 'Sales Rep Tabular Report'; run; ods html close; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA pll2d08 240 Additional SAS Statements •HTML Output Sales Rep Tabular Report Country Australia United States Annual Salary Annual Salary Min Max Min Max Gender F 25185.00 30890.00 25390.00 32985.00 M 25745.00 36605.00 22710.00 35990.00 All 25185.00 36605.00 22710.00 35990.00 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 241 Output Data Sets •PROC TABULATE produces output data sets using the following method: PROC TABULATE DAJA=SAS-data-set OVT=SAS-data-set \ i •The output data set contains the following variables: • BY variables • class variables • the automatic variables _T YPE_, _PAGE_, and _TABLE_ • calculated statistics Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. PROC Statement OUT= Option proc tabulate data=orion.sales out=work.tabulate; where Job_Title contains fRepf; class Job_Title Gender Country; table Country; table Gender, Country; table Job_Title, Gender, Country; run; proc print data=work.tabulate; run; pll2d09 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. PROC Statement OUT= Option ♦Partial PROC PRINT Output Obs Job. Title Gender Country _TYPE_ _PAGE_ _TABLE_ N 1 AU 001 1 1 61 2 US 001 1 1 98 3 F AU 011 1 2 27 4 F US 011 1 2 40 5 AU 011 1 2 34 6 US 011 1 2 58 7 Sales Rep. ] F AU 111 1 3 8 8 Sales Rep. ] F US 111 1 3 13 9 Sales Rep. ] AU 111 1 3 13 10 Sales Rep. ] US 111 1 3 29 11 Sales Rep. ] [I F AU 111 2 3 10 12 Sales Rep. ] [I F US 111 2 3 14 13 Sales Rep. ] [I AU 111 2 3 8 14 Sales Rep. ] [I US 111 2 3 14 15 Sales Rep. ] [II F AU 111 3 3 7 16 Sales Rep. ] [II F US 111 3 3 8 17 Sales Rep. ] [II M AU 111 3 3 10 18 Sales Rep. ] [II M US 111 3 3 9 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. PROC Statement OUT= Option •_T YPE_ is a character variable that shows which combination of class variables produced the summary statistics in that observation. >Partial PROC PRINT Output Obs Job_Title Gender Country _TYPE__PAGE__TABLE_ N 1 2 3 4 5 6 F F M M AU US AU US AU US 1 1 1 1 1 2 61 98 27 0 for Job_Title, 1 for Gender, and 1 for Country Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 245 PROC Statement OUT= Option •_PAGE_ is a numeric variable that shows the logical page number that contains that observation. •Partial PROC PRINT Output Obs Job_Title Gender Country _TYPE__PAGE__TABLE_ N 7 8 9 10 11 12 13 14 15 16 17 18 Sales Sales Sales Sales Sales Sales Sales Sales Sales Sales Sales Sales Rep. Rep. Rep. Rep. Rep. Rep. Rep. Rep. Rep. Rep. Rep. Rep. I I I I II II II II M M AU US AU US AU US AU US AU US AU US Page 1 for Sales Rep. I I Page 2 for Sales Rep. II i Page 3 for Sales Rep. Ill I Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. PROC Statement OUT= Option •_TABLE_ is a numeric variable that shows the number of the TABLE statement that contains that observation. Partial PROC PRINT Output Obs Job_Title Gender Country _TYPE__PAGE__TABLE_ N 1 2 3 4 5 6 7 Sales Rep. 8 Sales Rep. 9 Sales Rep. 10 Sales Rep. I 1 for first TABLE statement AU 011 2 for second TABLE statement M F US AU 011 111 3 for third TABLE statement M us 111 61 98 27 40 34 58 8 13 13 29 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 247 Vice o PROC TABULATE: • In the SUGI 28 proceedings: • 'The Simplicity and Power of the TABULATE Procedure", by Dan Bruns http://www2.sas.com/proceedings/sugi28/197-28.pdf • Online (from the SUGI 27 proceedings): • 'Anyone Can Learn PROC TABULATE" by Lauren Haworth, http://www2.sas.com/proceedings/sugi27/po60-27.pdf The UNIVARIATE Procedure •The UNIVARIATE procedure produces summary reports that display descriptive statistics. •General form of the UNIVARIATE procedure: PROC UNIVARIATE DATA=SAS-data-set; VAR variable(s); RUN; i •The VAR statement specifies the analysis variables and their order in the results. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 249 The UNIVARIATE Procedure The following PROC UNIVARIATE step shows default descriptive statistics for Salary. proc univariate data=orion.nonsales; var Salary; run; •Without the VAR statement, SAS will analyze all numeric variables. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 250 The UNIVARIATE Procedure The UNIVARIATE procedure can produce the following sections of output: • Moments • Basic Statistical Measures • Tests for Locations • Quantiles • Extreme Observations • Missing Values Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Vizualizace - zdroje Na prvním místě se obvykle citují knihy prof. Tufteho, např. Tufte E.R. (1983) The Visual Display of Quantitative Information, Graphic Press, Chesire, Conn. • Weby o vizualizaci, např. • http://www.math.yorku.ca/SCS/Gallery/noframes.html - galerie s poučným výkladem a příklady i nezdařených či lživých grafů • http://www.agocg.ac.uk/ - John Lansdown (1992) Aspects of Design in Computer Graphics: Some Notes -http://www.agocg.ac.uk/train/hitch/hitch.htm • Jiné weby, např. stránky různých vizualizačních programů a organizací • http://www.cybergeography.org/atlas/atlas.html nebo http://miner3d.c0m/products/galleryhtml 252 Vizualizace- historie □ William Playfair, 1786: první publikovaná prezentační grafika □ Dr. John Snow, 1845: epidemie cholery v Londýně Vizualizace - historie □ Florence Nightingale, 1858: důvody úmrtí v průběhu Krymské války (1853-1856) riiE CAUSES of MORTALITY in the ARMY n the EAST l>Kh\>NIIH)> l>L\> Y\» OTHER CAUSES □ Harry Beck, 1931: schéma Londýnského metra Vizualizace - investigativni analyza http://www.i2inc.com/ Law Enforcement » Counterterrorism » Narcotics investigations » Organized crime » Intelligence analysis » Fraud » Missing persons » Major investigations » Counterfeiting » Immigration control » Major event security » Money laundering » Gang investigations Government » Criminal prosecutions » National security » Military intelligence » Embassy security » Postal inspection and fraud » Prison investigations » Park and wildlife services » Antitrust investigations » Tax fraud investigations » Customs investigations Commercial » Forensic accounting » Money laundering » Insider trading violations » Corporate security » Anti-pirating investigations » Entertainment copyright violations » Competitive intelligence » Civil lawsuits » Fraud: » Credit card » Insurance » Retail » Health care » Commercial » Telephone Vizualizace - investigativní analýza □ osobní kontakty, pojistné podvody 256 Vizualizace - investigativní analýza □ Praní špinavých peněz, kriminální gangy j F* E 35) Node 6 Category % n Node 7 Category % n 0 Bad 48,98 241 □ Bad 0,92 1 □ Good 51,02 25 P Good 99,08 1081 Total (15,17) 49 Total (33,75) 109 259 Vizualizace - ekonomie S&PComposite Index: Regression to Trend Real (inflation-adjusted) Price since 1871 with Regression Variance measured below dshortcoin February 2010 This log-scale chart illustrates regress ion to trie trend across 139 years of market history. The peak in 2000 was an unprecedented 162% above trend — double the peak in 1929. The index had been above trend for 17 years. The latest daily close was 3454 above trend. Variance from trend arithmetic scaie 1370 1SS0 1S90 1900 1910 1920 1930 1940 1950 I960 1970 1930 1990 2000 2010 2020 261 Kartogram □ Obce s počtem 500 a více obyvatel s vysokorychlostním připojením k Kartodiagram ZÁSAHY JEDNOTEK PO PROTI HMYZU v okresech České republiky v letech 1997-2000 Grafy-další typy Měřítko grafu □ Která přímka roste strměji? 400 300 200 100 o 100 105 110 115 100 105 110 115 X y 103 567 105 577 107 587 109 597 110 602 Měřítko grafu □ Pohled tvůrce grafu: > Zvýraznění trendu - pozitivní výsledky. > Potlačení trendu - negativní výsledky. □ Pohled uživatele grafu: > Grafy bez uvedeného měřítka jsou silně podezřelé. > Nepodléhat podsouvané informaci o růstu/poklesu. What Is SAS/GRAPH Software? SAS/GRAPH software is a component of SAS software that enables you to create the following types of graphs: • bar, block, and pie charts • two-dimensional scatter plots and line plots • three-dimensional scatter and surface plots • contour plots • maps • text slides • custom graphs Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 267 Základní typy grafů Bar Charts (GCHART Procedure) «Pie Charts (GCHART Procedure) Frequency of Job Title, Broken Down by Gender FREQUENCY 70 Sales Rep. I Sales Rep. II Sales Rep. I Employee Job Title Employee Gender I I F I I M Sales Rep. IV Frequency Distribution of Job Titles 3-D Pie Chart Sales Rep. II 46 Sales Rep II 34 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 268 Základní typy grafů •Scatter and Line Plots (GPLOT Procedure) Plot of Budget by Month for 2006 and 2007 Budget 115,000,000 2 3 4 5 6 7 Month •Bar Charts with Line Plot Overlay (GBARLINE Procedure) Costs and Personnel for Western Regions Total Cost S3,000,000 $2,000,000 £1,000,000 # of Employees 1,500,000 1,250,000 1,000,000 750,000 500,000 250,000 Beaumont Cheyenne Portland REGION Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 269 Three-Dimensional Surface and Scatter Plots (G3D Procedure) Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 270 Maps (GMAP Procedure) Maps (GMAP Procedure) Distribution of Jobs An Empty State Indicates No Jobs •Multiple graphs on a page (GREPLAY Procedure) Number of Jobs 1 58 — 127 Total Equipment Costs by Region fbi CO and Lsad $100,000 $200,000 $300,000 $400,000 $500,000 POL TYPE ^CO Regional Office Locations Equipment and Personnel Costs in Canada Equipment ■ Personnel Number of Contracts by Pollution Type For Boston ani Raleigh Raleigh Boston Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Producing Bar and Pie Charts with the GCHART Procedure •General form of the PROC GCHART statement: PROC GCHART DATA=SAS-data-set; •Use one of these statements to specify the chart type: HBAR chart-variable. . . ; HBAR3D chart-variable. . . ; VBAR chart-variable. .. ; VBAR3D chart-variable. . . ; PIE chart-variable... ; PIE3D chart-variable. . . ; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 272 Producing Plots with the GPLOT Procedure You can use the GPLOT procedure to plot one variable against another within a set of coordinate axes. •General form of a PROC GPLOT step: PROC GPLOT DATA=SAS-data-set; PLOT vertical-variable*horizontal-variable ; RUN; QUIT; Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 5. Regrese. Logistická regrese 274 Overview Type of Predictors Type of Response Categorical Continuous Categorical and Continuous Continuous Analysis of Variance Linear Regression Analysis of Covariance (Regression with dummy variables) Categorical Logistic Regression or Contingency Tables Logistic Regression Logistic Regression Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 275 Přehled procedur SASu pro regresi 1 SAS/STATi logistická regrese C ATM OD, GAM, GENMOD,^GLIMMIX, GLM, LIFEREG, LOESS, LOGISTIC, MIXED, NLIN, NLMIXED, ORTHOREG, PHREG, PLS, PROBIT, REG, ROBUSTREG, RSREG, SURVEYLOGISTIC, SURVEYPHREG, SURVEYREG, TRANSREG. „klasická „, „ lineární regrese • SAS/ETS: 8 AUTOREG, COUNTREG, MODEL, PANEL, PDLREG, SYSLIN. 276 Simple Linear Regression Model Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Simple Linear Regression Model Predictor (X) Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The REG Procedure •General form of the REG procedure: PROC REG DAJA=SAS-data-set ; MODEL dependent(s)=regressor(s) \ RUN; Popis + jednoduchý příklad: http://support.sasxom/documentation/cdl/en/statug/63033/HT M L/defa u It/viewer. h tm # statug_reg_sect003. htm Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 279 Lineární regrese - PROČ REG PROČ REG ; MODEL dependents= ; BY variables ; FREQ variable ; ID variables ; VAR variables ; WEIGHT variable ; ADD variables ; DELETE variables ; MTEST ; OUTPUT < keyword=names> <...keyword=names> ; PAINT condition | ALLOBS> | < STATUS | UNDO> ; RESTRICT equation, ...,equation ; REWEIGHT condition | ALLOBS> | < STATUS | UNDO> ; PLOT <=symbol> <...yvariable*xvariable> <=symbol> ; PRINT ; REFIT; RESTRICT equation, ...,equation ; REWEIGHT condition | ALLOBS> | < STATUS | UNDO> ; TEST equation,<,...,equation> ; Vice na: http://support.sasxom/documentation/cdl/en/statug/63033/HTML/default/viewer.htm Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 280 Modelování kategoriální responze Nastane default? st. X Y 1 2.6 1 2 1.4 0 3 .65 1 4 4.1 1 5 .25 0 6 1.9 0 „klasická" regrese není vhodná nepoužívá se logistická regrese 0 1 281 Types of Logistic Regression Response Variable Two Categories ^ Type of Logistic Regression Three or More Categories en nary Nominal ] Ordinal ] Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Why Not Ordinary Least Squares Regression? Yi = PG + PAi + Si • If the response variable is categorical, then how do you code the response numerically? • If the response is coded (i=Yes and o=No) and your regression equation predicts 0.5 or 1.1 or -0.4, what does that mean practically? • If there are only two (or a few) possible response levels, is it reasonable to assume constant variance and normality? Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 283 What About a Linear Probability Model? Pi = Po + PiXii + 8i • Probabilities are bounded, but linear functions can take on any value. (Once again, how do you interpret a predicted value of -0.4 or 1.1?) • Given the bounded nature of probabilities, can you assume a linear relationship between X and p throughout the possible range of X? • Can you assume a random error with constant variance? • What is the observed probability for an observation? Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 284 Měření pravděpodobnosti úspěchu • Pravděpodobnost je měřena pomocí šance úspěchu (události). • Jestliže P je pravděpodobnost události, pak (í-P) je pravděpodobnost, že nenastane. • Šance události = P / í-P Logistická regrese Simultánní efekt nezávislých (explanačních) proměnných na šanci Odds = P/i-P = e P°+ PiXi + P2*2 + Jestliže logaritmujeme obě strany Log{P/i-P} = log e Po+t31x1+p2x2+...+pkxk Ix>gitP = P0+PÄ+PÄ+..+PÄ Logit Transformation Logistic regression models transform probabilities called logits*. r \ Pi v(l-R)y logit( Pi) = In where z indexes all cases (observations) Pi is the probability the event (a default, for example) occurs in the zth case In is the natural log (to the base e). * The logit is the natural log of the odds. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Logit link function 1.0 H 10H Logit Transform logit link function o -10- The logit link function transforms probabilities (between o and 1) to logit scores (between -oo and +00). Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 288 Logistic Regression Model logit (pf) = (30 + + . . . + P/cX/c where • logit (Pi)= l°git of the probability of the event • P0=intercept of the regression equation • p/c= parameter estimate of the kth predictor variable Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 289 Logistic Regression Curve 290 Logistic Regressions -example logit( p } = w0 + wr xA + w2 x2 A P = 1 1 + e-logit(p) Find parameter estimates by maximizing 2>g(P/)+ Zlogtl-p/) primary outcome training cases secondary outcome training cases log-likelihood function U.U 0.1 U.Z U.o U.4 U.Í) U.b u./ u.b u.a 1.U Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Logistic Regressions -example logit(p) =-0.81+0.92x1 + 1.11 x2 0.9 0.8 A P = 1 \ + e-logit(p) Using the maximum likelihood estimates, the prediction formula assigns a logit score to each x1 and x2. Další příklad na: http://support.sasxom/documentation/cdl/en/statug /63033/HTM L/defau It/viewer. htm #statug_log istic_se ct002.htm Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 Odhad parametrů Metoda maximální věrohodnosti vede na soustavu nelineárních rovnic. • Tuto soustavu řešíme Netwon-Raphsonovou iterační metodou. Více na: • http://www.stat.cmu.edu/^cshalizi/402/lectures/14-logistic- regression/lecture-H.pdf • http://czep.net/stat/mlelr.pdf • http://www.stat.psu.edu/~jiali/course/stat597e/notes2/logit.pdf 293 Maximálně věrohodný odhad (MLE) MLE is a general purpose method for parametric model estimation. We will make use of it to estimate the logistic regression. If we have a model with parametric structure 9, we can compute the likelihood that the model will generate a sequence of n observations L(6|D) = P(D\&) The model which best fits the data is selected as the one which maximizes this likelihood. 9 = argmaxL(G|D) If we assume independence between the observations, this then gives B = aiBnMx]~|p(di|G) E = l Zdroj: http://www2.imperial.ac.uk/-abellott/Credit%2oScoring%202.pdf 294 Maximálně věrohodný odhad This MLE can be expressed more conveniently in terms of log-likelihoods (since log is monotonie on its argument): Remember: • We do not know the true value of the parameter 9, but we want to estimate it. • To distinguish the estimate from the true value, in our notation, we put a "hať' on the estimate: 8. MLE has several nice asymptotic properties: o Consistency o Asymptotic normality o Efficiency. 295 Maximálně věrohodný odhad Consider the training data set Dtraln with n observations (borrowers). Remember • Xj denotes values for predictor variables for observation i. • yt denotes the outcome for observation if either 0 or 1. Then the likelihood of the outcome for each observation i is given by P(yt = Q\xirfí 1 - P(yÉ = 0|xĚ, p) ifyr=0, ifyi=i which is P(w = 0|x(,p)1^(l-P(yi = 0|x|rp)) giving log-likelihood for each observation: (1 - yt) \ogP(yi = 0\xt, p) + yt log(l - P(yt = Q\xit p)) Maximálně věrohodný odhad Assuming independence between observations, this gives the log-likelihood function for p: ji logUP|Dtrain) = ^(1 - yd log(1 + e_(ft+p.Xi)) + 7t log(1 + eft+p.Xj) 1=1 Differentiating by each coefficient in p and setting the derivative equal to zero to find the maxima gives n Z (1_ Ml+ *-«.♦■*>)) = ° i=l v ' and for each attribute ;'=! to m. These are non-linear equations that can be solved by computer intensive processes such as Newton-Raphson methods. 297 Standard errors on the MLE Since G is only an estimate of the best model to explain the data, it is possible to derive standard errors s on the estimates. Asymptotic normality for MLE is such that ^^Ua/(0,1) as7i^oo where §j, 8j and sj are theyth components of 9, 6 and s respectively a N(Q,1) is the standard normal distribution. This property then allows us to generate:- • Generate a hypothesis tests using the Wald chi-square statistic; • Generate confidence intervals around the estimate. MLE- testování hypotéz We test the hypothesis that an estimated coefficient is not zero against the null hypothesis that it is zero. That is, we testing if a parameter has a genuine effect in the model. • Null hypothesis: H0\ 6} = 0 • Alternative hypothesis: H^. 9j =t 0 \e I The Wald test says reject H0 if -r^- > za/2 for some significance level a, where za/2 = <3>-1(l - a/2) and <$> is the CDF for the standard normal distribution. 299 MLE - konfidencni intervaly The asymptotic normality property also allows us to compute confidence intervals (CIs): ~ za/2$j < Qj < Sj + 1 _ a as n —> co. This is a range of possible values of the parameter within a given confidence level 1 — a. Note: the larger the confidence level, the broader the confidence interval. Likelihood Ratio Test The maximized likelihood gives a measure of how well the model fits the data (l = perfect fit, 0 = no fit). The ratio of likelihoods between two models, A "nested" in B, can be used to test whether the fit of A improves on B. Definitions Suppose we have two models A and B with the same structure except A has more parameters than B: ®a = (&if">6m+r) and 9S = (0lf...,0m) Then A is nested in B. The likelihood ratio statistic is Ä Newton-Raphsonova metoda • Základní princip metody: 1 2 _1 p(x,/?) =-L(^) = Xy1^Tx1-lo^l + e^) ^new = ^old d L(/?) 5L(/?) ► Maticový zápis: y9new = (X'WXr1 XTW(X^old +W_1(y - p)) y... vektor pozorování vysvětlované proměny X ... matice plánu, typu n x ( p +1) P ••• vektor pravděpodobností P (xi,/?°ld) W...nxn diagonální matice vah, s diag. prvky pC^, /?°ld) -(1 — (Xj, /?°ld)) de o numerickou iterační metodu -> ie třeba zkontrolovat, zda 3yla splněna podmínka konvergence (metoda „dokonvergovala" k optimálnímu řešení) 302 Výhody logistické regrese • Málo parametrů • Snadné použití i interpretace • Lze snadno začlenit i diskrétní prediktory Funguje dobře i na datech, která se poměrně značně liší od gaussovských směsí • A především většinou dobře funguje, pokud věnujeme odpovídající pozornost přípravě dat • praktická zkušenost: ve čtyřech případech z pěti je logistická regrese na datech, která analyzuji, buď nej lepší nebo zhruba stejně dobrá jako jiné metody 303 Interpretace, rozdíly proti OLS • Regresní koeficienty b: kladné znamenají, že proměnná svým růstem zvyšuje šanci zařazení do skupiny kódované číslem i, a naopak záporné indikují pokles této šance Často se používá exp(Ďř): je to faktor, kterým se násobí šance pl(í-p) při jednotkovém nárůstu xt a neměnných ostatních xk • Pozor na různá měřítka, v nichž xt mohou být měřena; • Místo F-testu celkové validity nyní máme chí-kvadrátový test pro totéž Místo t-testu signifikance proměnných v modelu jsou Waldovy statistiky; je to v podstatě totéž a čteme to stejně • Místo R2 jsou jen pseudo-R2 Příklad The following logistic regression output was produced on a data set of 40,000 credit cards. Likelihood Ratio = 1819 (p-value < 0.001) Variable Coefficient Estimate Standard error Wald chi-square P > chi-square Intercept ßo -0.181 0.084 4.6 0.032 Age ßi + 0.0353 0.0013 757.6 <0.001 Income (log) ß2 -0.0164 0.0100 2.67 0.10 Residential phone ß* + 0.622 0.030 430.8 <0.001 Home owner * 0 Renter A -0.155 0.039 15.6 <0.001 Lives with parents ßs + 0.256 0.045 32.1 <0.001 Months in residence -0.00025 0.00011 5.4 0.020 Months in current job ß? + 0.00210 0.00025 72.9 <0.001 * Notice that the Home owner category is set as base residency category and so has no coefficient estimate. We will discuss this in a later lecture. Zdroj: http://www2.imperial.ac.uk/-abellott/Credit%2oScoring%202.pdf 305 Příklad We have used logistic regression to model the negative outcome (ie y = 0). • This may seem odd given that the outcome of interest is the positive one (eg default). • However, this model ensures the log-odds scores are the right way round: ie increasing scores imply increasing creditworthiness. • There is no material difference. If we had modelled y = 1, the signs on the coefficient estimates would be reversed but everything else would be the same. Interpretations: • The estimates (highlighted) form the scorecard. • Estimates greater than 0 indicate relative decrease in risk. • Estimates less than 0 indicate relative increase in risk. • Small p-values indicate coefficients that are statistically significantly different to zero (how small?). • Large p-values indicate coefficients that have a good chance of actually being zero. 306 Příklad Remember in the exercise in Chapter 1 we gave details of six borrowers. You were asked to select three to accept and three to reject. Here the scores assigned by the model above are shown. The observations with the three lowest scores are rejected by the model. The actual outcome in each case is also shown. How does your performance compare with the model? Age Monthly Residential Residence Months in Months Score Model Actual Income phone? type? residence In current accept or outcome (£) job reject? 22 1,145 Yes Home owner 43 12 1.11 Reject Good 46 15,500 Yes Renter 48 192 2.14 Accept Good 71 900 Yes Renter 96 12 2.6S Accept Good 32 5,000 Yes Renter 48 168 1.61 Accept Bad 25 1,385 Yes Renter 12 0 1.05 Reject Bad 43 3,145 No Home owner 96 36 1.25 Reject Bad Příklad Variable Value Coefficient Estimate Value x Estimate Intercept n/a ft -0.181 -0.181 Age 22 ft + 0.0353 +0.777 Income (log) log(1145) =7.04 ft -0.0164 -0.116 Residential phone 1 ft + 0.622 + 0.622 Home owner * 1 0 0 Renter 0 ft -0.155 0 Lives with parents 0 ft +0.256 0 Months in residence 48 ft -0.00025 -0.012 Months in current job 12 ft + 0.00210 0.025 Score (sum) + 1.115 Compute the PD of the borrower. I > P(y = lis) = — ~ 0. Score = 1.115 1—y Ky 1 J i+es Multinomiální logistická regrese • Taktéž polytomická regrese • Závisle proměnná má M kategorií, více než dvě. Např.: kterou stranu respondent volí? • Základní idea: • Prohlásit jednu kategorii za referenční • Spočítat M-i obyčejných logistických modelů pro každou ze zbylých kategorií oproti referenční • A predikovat tu kategorii, kde vyšla největší pravděpodobnost přes všechny modely 309 Budování modelu □ Forward □ Backward □ Stepwise - začíná se s prázdným modelem - postupné přidávání proměnných - začíná se s plným modelem (všechny proměnné) - postupné odebírání proměnných - začíná se s prázdným modelem - postupně se přidávají a odebírají proměnné □ Enter - je předepsán seznam proměnných v modelu Logistic Regression with Sequential Steps • Forward regression • starts with a baseline model (intercept-only) • searches all variables and finds the strongest one • keeps adding variables in order of strength until no significant improvement is achieved in the model. • Backwards regression • starts with a full model using all variables • removes the weakest input variable provided that taking it out does not cause a significant reduction in the fit of the model • continues removing the weakest input variables in order unless there is a significant reduction in the fit of the model; at which point the algorithm stops. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Logistic Regression with Sequential Steps • Stepwise regression • is a combination of forward and backward regression • begins the same way as forward • re-evaluates the statistical significance of all included variables after each new variable is added. • If a previously included variable becomes statistically insignificant when a new variable is added, that variable is then removed. • f The algorithm stops when no more variables can be found that add significantly to the fit of the model and all variables remaining in the model are statistically significant. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. The Logistic Regression Task . Logistic Regression for Local:SASUSER.SALES_INCLEVEL Model Response Effects Selection Options Plots Predictions Titles Properties Preview code Data Data source: Local:SASUSER.SALESJNCLEVEL Task filter: None Variables to assign: Name @ IncLevel @ Purchase ^.Gender Income ® Age Task roles: Dependent variable (Li : < variable required> F Quantitative variables Classification variables Group analysis by Frequency count (Limit Relative weight (Limit: ' ±1 2i The selection pane enables you to choose different sets of options for the task. Edit.. Ť I 4- Cancel —3 Help The "Dependent variable" role must have a variable assigned to it. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 313 Which link function, which response Level to Model? Volba . Logistic Regression For LocaLSASUSER.SALES INCLEVEL Data Model Response Effects Selection Options Plots Predictions Titles Properties Model > Response 3 Preview code linkovaci funkce. Specify the level of the response variable that you want to model. For example, do you want to model the probability of a o orai? Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 314 LOGISTIC Procedure General form of the LOGISTIC procedure: PROC LOGISTIC DATA=SAS-data-set \ CLASS variables \ MODEL response=predictors \ UNITS independent =Hst... \ ODDSRATIO <'label'> variable \ OUTPUT OUT=SAS-data-set keyword=name ; RUN; Více např. na: http://www.okstate.edu/sas/v8/sashtml/onldoc.htm http://wwwokstate.edu/sas/v8/saspdf/stat/chap39.pdf Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. LOGISTIC Procedure - příklad ods html file="logistic_vyvoj.htmr style=sasweb; proc logistic data=dm1.data_vyvoj descending; model good4=goods_type_w phone_w a_uver_w fam_state_w income_w credit_w vekw ■ run; ods html close; LOGISTIC Procedure - příklad proc logistic data=dm1.score_base outest=work.model_def; CLASS AGE_d EDUCATIONd CARAGEd / param=glm; MODEL def_bad = AGE_d EDUCATIONd CAR_AGE_d total_income_d(init_pay_by_INCOME_d) / SELECTION=FORWARD HIERARCHY=MULTIPLECLASS; score out=work.tab_scored_def; run; LOGISTIC Procedure - příklad proc logistic data=dm1 .score_base outest=work.model_def namelen=200; where client_type="1-Novy"; CLASS sex_k child_num_k fam_state_k age_k; MODEL def_bad = AGE_w EDUCATION_w AGE_w*EDUCATION_w s ex_k | c h i I d_n u m_k | fa m_st at e_k | ag e_k@ 4 /selection=stepwise slentry=0.6 slstay=0.1 details corrb run: 318 LOGISTIC Procedure - příklad proc logistic data=dm1 score_base inest=hc.modelSU namelen=200; CLASS sex_k child_num_k fam_state_k age_k; MODEL def_bad = AGE_w EDUCATION_w AGE_w*EDUCATION_w s ex_k | c h i I d_n u m_k | fa m_st at e_k | ag e_k@ 4 /selection=none maxiter=0; output out=dm1 .data_all_scr (keep=id_credit score def_bad compress=yes) prob=score; run; What Happens to Classification Variables? • The Logistic Regression task assumes a linear relationship between predictors and the logit for the response. • For categorical variables, that assumption cannot be met. • Specification as a Classification variable creates "design variables" representing the information in the categorical variables. • The design variables are the ones actually used in model calculations. • There are many possible "parameterizations" of the design variables. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 320 Effects (Default) Coding: Three Levels Design Variables CLASS Value Label 1 2 incLevel l Low Income 1 0 2 Medium Income 0 1 3 High Income -1 -1 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 321 Effects Coding: An Example logit(/7) = ß0 + ßi * DLowjncome + ß2* DMedium income ßQ = the average value of the logit across all categories ßx = the difference between the logit for Low income and the average logit P2 = the difference between the logit for Medium income and the average logit Analysis of Maximum Likelihood Estimates Parameter DF Estimate Standard Error Wald Chi-Square Pr > ChiSq Intercept i -0.5363 0.1015 27.9143 <.0001 IncLevel 1 1 -0.2259 0.1481 2.3247 0.1273 IncLevel 1 -0.2200 0.1447 2.3111 0.1285 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Reference Cell Coding: Three Levels Design Variables CLASS Value Label 1 2 IncLevel 1 Low Income 1 0 2 Medium Income 0 1 3 High Income 0 0 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 323 Reference Cell Coding: An Example logit(/7) - P0 + Pi * DLow jncome + P2* ^Medium income p0 = the value of the logit when income is High Pi = the difference between the logits for Low and High income p2 = the difference between the logits for Medium and High income Analysis of Maximum Likelihood Estimates Parameter DF Estimate Standard Error Wald Chi-Square Pr > ChiSq Intercept ■< -0.0904 0.1608 0.3159 0.5741 IncLevel 1 1 -0.6717 0.2465 7.4242 0.0064 IncLevel 1 -0.6659 0.2404 7.6722 0.0056 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Odds Ratio Calculation from the Current Logistic Regression Mode •Logistic regression model: logit(p) = log(odds) = fiQ+ pl* (gender) Odds ratio (females to males): oddsfemales =qP°+P1 oddsmales = e/Wi A odds ratio =--— = e Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Odds Ratios for Categorical Predictors Odds Ratio Estimates Effect Point Estimate 95% Wald Confidence Limits Gender Female vs Male 1.549 1.040 2.3G5 Profile Likelihood Confidence Interval for Odds Ratios Effect Unit Estimate 95% Confidence Limits Gender Female vs Male 1.0000 1.549 1.043 2.312 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Odds Ratio Plot Odds Ratios with 95% Profile-Likelihood Confidence Limits Gender Female vs Male 1.00 1.25 1.50 1.75 2.00 Odds Ratio 2.25 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Odds Ratios for Continuous Predictors Odds Ratio Estimates Effect Point Estimate 95% Wald Confidence Limits Age 1.G52 1.016 1.G90 Profile Likelihood Confidence Interval for Odds Ratios Effect Unit Estimate 95% Confidence Limits Age 1D.00D0 1.663 1.176 2.373 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 328 Predicted Probability Plots - Continuous Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 329 Model Fit versus Complexity Model fit statistic Evaluate each sequence step. n~B~rn i i ■ i ■ rrmm ■ ■■■■1 1 2 3 4 5 6 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Select Model with Optimal Validation Fit Model fit statistic 11 ■ 111 11 ■ i ■ 1 2 3 4 5 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Choose simplest optimal model. 331 Model Assessment: Comparing Pairs • Counting concordant, discordant, and tied pairs is a way to assess how well the model predicts its own data and therefore how well the model fits. • In general, you want a high percentage of concordant pairs and low percentages of discordant and tied pairs. • Následuje příklad určení těchto párů na modelu predikujícím zda daná osoba nakoupí zboží za více než 100$. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 332 Comparing Pairs To find concordant, discordant, and tied pairs, compare everyone who had the outcome of interest against everyone who did not. < $100 $100 + Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 333 Concordant Pair Compare a woman who bought more than $100 worth of goods from the catalog and a man who did not. < $100 $100 + P(100+) = .32 P(100+) = .42 The actual sorting agrees with the model. This is a concordant pair. 334 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Discordant Pair Compare a man who bought more than $100 worth of goods from the catalog and a woman who did not. < $100 $100 + P(100+) = .42 P(100+) = .32 The actual sorting disagrees with the model. This is a discordant pair. Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Tied Pair Compare two women. One bought more than $100 worth of goods from the catalog, and the other did not. < $100 $100 + P(100+) = .42 P(100+) = .42 The model cannot distinguish between the two. This is a tied pair. 00c Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. Model: Concordant, Discordant, and Tied Pairs • PROC Logistic standardně nabízí četnosti (relativní) jednotlivých typů párů a z nich odvozené statistiky kvality modelu: Association of Predicted Probabilities and Observed Responses Percent Concordant 30.1 Somers1 D 0.1G7 Percent Discordant 19.5 Gamma G.215 Percent Tied 50.4 Tau-a G.G5G Pairs 43578 c 0.553 Reprodukováno se svolením společnosti SAS Institute Inc., Cary, NC, USA. 337 6. Credit scoring- historie, základní pojmy Good customers Bad customers Low risk High risk Business Loan Úvod • Credit Scoring je soubor prediktivních modelů a jejich základních technik, které slouží jako podpora finančním institucím při poskytování r v o uveru. • Tyto techniky rozhodují, kdo dostane úvěr, jaká má být výše úvěru a jaké další strategie zvýší ziskovost dlužníků vůči věřitelům. • Credit Scoringové techniky kvantifikují a posuzují rizika při poskytování úvěrů konkrétnímu spotřebiteli. Úvod • Nerozeznají a nestanovují "dobré" nebo "špatné" (očekává se negativní cnování, tj. např. default) žádosti o úvěr na individuální bázi, nýbrž poskytují statistické šance, nebo pravděpodobnosti, že žadatel s daným skóre se stane dobrým" nebo "špatným". • Tyto pravděpodobnosti nebo skóre, spolu s dalšími obchodními úvahami jako jsou předpokládaná míra schvalování, zisk nebo ztráty, jsou pak použity jako základ pro rozhodování o poskytnutí/neposkytnutí úvěru. 340 Why do we need score? HISTORICAL EVOLUTION": Money lender • lend only to people which he knows Operators • they make decision based on client's information and their experience Automatic scoring • make decision on statistical base PAST EXPERIENCE -> ESTIMATION FOR FUTURE score? ANTAGES: • Automatization of approval proces • Cost - effective • Less fraud possibilities DISADVANTAGES i -> • Statistical based, not take in account client like individual Úvod • Zatímco historie úvěru sahá 4000 let nazpět (první zaznamenaná zmínka o úvěru pochází ze starověkého Babylonu - 2000 let před n.L), nistorie credit scoringu je pouze 50-70 let stará. • První přístup k řešení problému identifikace skupin v populaci představil ve statistice Fisher (1936). V roce 1941, Durand jako první rozpoznal, že tyto techniky mohou být použity k rozlišování mezi dobrými a špatnými úvěry. 343 Úvod • Významným milníkem při posuzování úvěrů byla druhá světová válka. • Do té doby bylo standardem individuální posuzování žadatele o úvěr. Dále bylo standardem, že ve finanční sféře byli zaměstnáni (téměř) výhradně muži. • Odchod značné části mužské populace do služeb armády měl za následek potřebu předat zkušenosti dosavadních posuzovatelů žádostí o úvěr novým pracovníkům. • Díky tomu vznikla jakási rozhodovací pravidla a došlo k „automatizaci" posuzování žádostí o úvěr. Úvod • Příchod kreditních karet ke konci šedesátých let minulého století a růst výpočetního výkonu způsobil obrovský rozvoj a využití credit scoringových technik. Událost, která zajistila plnou akceptaci credit scoringu, bylo přijetí zákonů „Equal Credit Opportunity Acts" (o rovné příležitosti přístupu k úvěrům) a jeho pozdějších znění přijatých v USA v roce 1975 a 1976. Tyto stanovily za nezákonné diskriminace v poskytování úvěru, vyjma situace, pokud tato diskriminace „byla empiricky odvozená a statisticky validní". 345 Úvod V osmdesátých letech minulého století začala být využívána logistická regrese, dodnes v mnoha oblastech považovaná za průmyslový standard, a lineární programování. O něco později se objevily na scéně metody umělé inteligence, např. neuronové sítě. Mezi další používané techniky lze zařadit metody nejbližšího souseda, splajny, waveletové vyhlazování, ádrové vyhlazování, Bayesovské metody, regresní a dasifikační stromy, support vector machines, asociační pravidla, klastrová analýza a genetické algoritmy. 346 Historie -detail Date Event 2000 BC First use of credit in Assyria, Babylon, and Egypt. 1100s First pawnshops in Europe established by charitable institutions, and by 1350 they were being run as commercial concerns. 1536 Charging of interest deemed acceptable by the Protestant church. 1730 hirst advertisement for credit placed by Christopher Thornton of Southward, London who offered furniture that could be paid off weekly. 17S0s First use of cheques in England, IS 03 First consumer reports by Mutual Communications Society in London. 1S 32 Fi rst pu bl ication of the A rnerican Railroad Journal. IS41 Mercantile Agency is first American credit reporting agency. IS49 HarrodTs established as one of the world's first department stores, IS51 First use of credit ratings for trade creditors by John M. Bradstreet. IS56 Singer Sewing Machines offers consumer credit. IS 62 Poor's Publishing publishes Manual of the Railroads of the United States. IS69 First American consumer bureau is Retailers Commercial Agency (RCA) in Brooklyn, 1SSĚ Sears established, and launches its catalogue in 1S93. S^a^^e^Swažován za přijatelný Advertisement for credit = reklama na úvěr Zdroj: Anderson Mercantile agency = obchodní agentura 347 Historie -detail Date Event 1906 National Association of Retail Credit Agencies formed in the USA. 1909 John M, Moody publishes first credit rating grades for publicly traded bonds. 1913 Henry Ford uses production lines to produce affordable automobiles. 1927 Establishment of Schuf a Holdings AG, first credit bureau in Germany. 1934 First public credit registry (PCR) established in Germany, 1936 U.A. Fisher's use of statistical techniques to discriminate between iris species. 1941 David Durand writes report, suggesting statistics can assist credit decisions. 194? Henry Wells uses credit scoring at Spiegel Inc. 1950 Diners Club and American Express launch first charge cards. 1950s Sears uses propensity scorecards for catalogue mailings. 1956 FI consultancy established in California, USA. 1958 First use of application scoring by American Investments. 1960s Widespread adoption of credit scoring by credit card companies. 1966 Credit Data Corp, becomes first automated credit bureau. 1970 Fair Credit Reporting Act governs credit bureaus. 1974 Equal Credit Opportunity Act causes widespread adoption of credit scoring. 1975 FI implements first behavioural scoring system for Wells Fargo, 1978 Stannic implements first vehicle finance scorecards in South Africa. 1982 CCN offers Credit Account Information Sharing (CAIS), its consumer credit bureau service. 1984 FI develops first bureau scores used for pre-screening. 1987 MDS develops first bureau scores used for bankruptcy prediction. 1995 Mortgage securitisers Freddy Mac and Fannie Mae adopt credit scoring. 20QO Moody's KMV introduces RiskCalc for financial ratio scoring [FRSj. 2000s Basel II implemented by many banks. Zdroj: Anderson affordable = dostupný iris species = druhy kosatců Charge card = kreditní karta Propensity scorecard = scoringová karta pro modelování náchylnosti (k nákupu) FI = splolečnost Fair, Isaac...dnes FICO Mortgage = hypotéka 348 Historie -detail Table 2.4. Genealogies and milestones—credit cards Dace Event 1914 Western Union introduces embossed metal plate first charge card in the United States, 1920s Introduction of 'shoppers plates', early version of modern store cards. 1950 Diners Club and American Express launch first charge cards. 1 -' v Diners Club launches first credit card in New York city. I960 Bank Amerlcard established, later to become Visa. 1966 Master Charge established, later to become MasterCard, 1966 Barclay card established in the United Kingdom. Table 2.5. Genealogies and milestones—credit scoring consultancies Zdroj: Anderson Name Year Notes Fair Istitic (Fii FI 1956 Founded San Francisco CA, by Bill Fair and Earl [saac 19SS First scorecard development, for American Investments 1984 Develops first bureau score for pre-screening 1995 First use of scoring by mortgage securitisers Experian-Scorex Management Decision 1974 Founded by John Coffman and Gary Chandler Systems (MDS) 1982 MDS purchased by CCN Scorex 1984 Founded in Monaco by Jean-Michel Trousse MDS 1987 MDS develops first monthly bureau score, for bankruptcy Experian-Scorex 2003 Created as subsidiary of Experian, after purchase of Scores 349 Historie -detail Table 2.7. Genealogies and milestones—credit bureaux Name Year Notes Du» & Bradsireet Mercantile Agency John M. Bradstreet Co. R.G. Dun Sc Co. Dun 6t Biadstreet Expcrittn Manchester Guardian Society Chilton Corp. Michigan Merchants TRW TRW CCN TRW Experian Equifax London Assn. for the Protection of Trade RCA RCC United Assn. for the Protection of Trade Equifax Trans Um/on TransUnion 1841 1849 1849 1851 1859 1933 1827 1897 1932 1368 1976 1980 1884 1989 1996 1842 1869 1899 1934 1965 1975 1994 1968 1969 Founded, New York NY, by Lewis Tappan. Benjamin Douglass takes over, and expands. Founded, Cincinnati OH. First use of credit rating grades. Robert G. Dun incorporates Mercantile Agency. Merger orchestrated by Arthur Whiteside. Founded, Manchester, UK. Founded, Dallas TX. Publishes "Red Book1. Founded, later to become Credit Data Corp. Purchases Credit Data Corp., and changes name to TRW-Credit Data. Information Systems and Services (ISBfS) division produces first business credit report. Founded, when Great Universal Stores (GUS) spins off information services division Purchases Manchester Guardian Society Purchases Chilton Corp. Founded, through TRW divestiture of TRW-CD & ]S6fS. Purchased by GUS, who merges it with CCN. Founded, London, UK Founded, Brooklyn, NY Founded, Atlanta, CA Purchases RCA LAPT renamed RCC renamed to Equifax Purchases UAPT-Infolink and Canadian Bonded Credits Founded, as holding company for Union Tank Car Company (UTCC} Purchases the Credit Bureau of Cook County Zdroj: Anderson 350 Historie -detail Table 2.8. Genealogies and milestones—credit rating agencies Name Year Notu s Standard & Poor's fi&Pi Poor's Publi shi ng Co. 18 62 S&P 1941 Moody's Investor Services (MIS) John Moody Sc Co. 1900 John Moody 1909 Moody1! Investor Services 1914 1962 Moody1! KMV 2002 Fitch IBCA Fitch Publishing Co. 1913 IBCA 1973 KiKh [KCA 1997 Founded, by Henry Vamum Poor Poors Publishing and Standard Statistics merge Founded, by John Mood); but fails in 1907 First use of rating grades for bonds Incorporation of MIS MIS purchased by DficB Created as MIS subsidiary after merger of Risk Management Services and KMV Founded, by John Knowles Fitch Founded Merger of Fitch Publishing and IBCA Zdroj: Anderson 351 Historie -další zajímavé čtení http://www.fundinguniverse.com/company-h^ Com pa ny-Com pa ny- H istory. htm I http://www.fico.com/en/Company/News/Pages/03-10-2009.aspx http://www.directlendingsolutions.com/history_credit_scoring.htm http://www.pbs.org/wgbh/pages/frontline/shows/credit/more/scores.html http://en.wikipedia.org/wiki/Credit_score 352 Risk Management - Acquisition • Credit Bureau • Other External Data Policy Rules Scorecards • Fraud • Delinquency • Bankruptcy • Claims Strategy Fail Pass Data Acquisition Risk Management - Customer Credit Line Management Usage Monitoring Transaction Fraud Transaction Approval Renewal/Reissue Collections Claims V Scorecards V V Policy Rules V Strategies .. Lots of analysis Risk Management Risk Management I I Financial I I Commercial/Consumer 1 Enterprise Delinquency, Fraud, Claim, Collections Operational Market, Interest, VaR (Risk Dimensions) 355 Risk Management a druhy rizik Selhání procesů a systémů, podvody, přepadení, pověst společnosti Risk Management Commercial/Consumer Delinquency, Fraud, Claim, Collections _i- Delinquency Fraud Claim ■ Late payments - Bankruptcy _ Write-off Applicant Transaction Claims Internet (app+trans) P&C, Life, Health Mortgage insurance Export financing insurance _I_ Collections Payment Projection (recovery) Outsourcing to agency P&C: Property & Casualty Insurance (majetkové a úrazové pojištění) Why Manage Risk? ¥ € £ £ $ ¥ € $ $ € £ ¥ Reduce exposure to high-risk accounts. Decrease bad debt and claims payouts. Ensure better pricing to reflect risk. Detect fraud early-on. Increase approval rates (the "right kind" - potentially increasing revenue). Handle most approvals/declines quickly (customer service). Analysts/investigators only focus on difficult accounts. Ensure consistent, equal and objective treatment of each applicant across the organization. Offer more efficient marketing initiatives. 358 Users of Risk Management • Banks Citibank, Royal Bank, CIBC, BankOne • Finance Companies • GE Capital, HFC, GMAC • Insurance • Life, Property and Casualty, Health • Government • Ministries/Departments of Health (Medicare), Ministries of Finance (IRS), Workers Compensation. 359 Users of Risk Management • Utilities • Hydro/Power/Energy, Water • Communications • Bell, Sprint, AT&T (land lines and cellular) • Retail • JC Penneys, Sears, Hudsons Bay Company, Target • Manufacturers/Industrials Those who give credit to small businesses. 360 Risk Management "Toolbox" • Risk Data Mart/Data Warehouse • Risk prediction models (scorecards) • Reporting • Analysis tools • Operational/strategy implementation software (for example, FICO™ Blaze Advisor®, FICO@ TRIAD® Customer Manager, Experian Probe SM, Experian NBSM, Cardpac, VisionPlus, Pro-Logic Ovation). 361 FICO™ Blaze Advisor® gl ft Ife X -inlxi RulBflOW; I Lending Decision Flow Ruteflow Cortert | Rule How Attrtiui« | S\J\* írľun l^^s tj a as a q <> s _? t Initial CKiďli nation i Get Additional Info + Store Applicant Retrieve Customer Info 1 l + Validation Rules Student Loan Selection Non-student Loan Selection t ^ 1 ^^J^^^ Set Loan Limit Funding Process m^tm™ Assign Promo Display Results t l_ A B 1 C D 1 E_F_G j H ' I 'II VT X ft KL *lr *W 3j *J i HatPtřrcok lfl 9 S 7 E S A al Lřies n Erdora omenta Quote 111 Watimal D RÚB ill Itatflcatjon me Endo re em h tie Rctiig ■jTÍ ^CBDf51[udLJB2519_TÉ3lB 2 ,n.še üf b-rj^urc surcharge Surcharge bL.rc-:rgc su'chü'gc surcharge surcharge sj'cha'gc 6 7 >50 4C<..<=50 M< ..<=4C ZO < ..<= 30 10<..<=20 2534 r25% 25% 25 34 r25% '25% 25% ZO % ZO % ZO Ä 20 % 2Q% rZ0 % ZO 96 1534 15% 15% 1594 15% 'l5% 153í r103í 109& \o% "íOM lott lütt 5% 534 5 94 5% 534 5% 5% 10 11 -]§ FrB_EüprEefilwi_2517_TaHB 12 13 14 AgeQfStni cture251 j_Tab la 15 16 U 1 17 g Flui e Mai nt ensnee Applicaiion - Inura Ejplor-er provided by -air Is Bj httpi:/l?JflilJSIHD'rtnn'inclfl.html ii Famiites g Rule Mni -_[-. ^GetMoreAiMo.5-K n ail c e Application ft - 5 -Q r 0 - Pagŕ- Safety- Tools- 0- " FICO Rule Maintenance Application ernrltjis i LhrJerikTlttTQ CetHnis Tree _B Quote O Omers KSK F J njeftows □ Q UrutervirttrnE j--fg UiHkr-in'lerRiteribUÜ Eg UnderwiltkigDecbtHT unflBiwiiiriijQGCiĚiCHiĚ a Version; Ľ.'Qrxinij x: V ZfO lasiwrwng /m - Zdroj: http://www.ficoxom/account/resourcelookup.aspx?theID=43o 362 Scorecards • Predict the probability of a negative event. • Custom - based on clients own data • Generic - based on pooled industry or bureau data (Beacon, Empirica) • Application - new applicants • Behavioral - current customers Scorecard Types Risk 30/60/90 Delinquency Bankruptcy Write-off Claim Fraud Collections Mktg/CRM Combination Response Resp/approve/delq Response/profit Churn Risk/churn/profit Revenue Profit Cross sell Scoring in approval process Client (new) Hard checks rejection Verifications (dependant on riskgroup) rejection Policy declines - low age, unsufficient length of employment, "terorrist" etc. What is the probability that client will pay? Will the contract be profitable? Is the number of client's phone valid? Etc. Fraud Risk • Fraud risk is one of the fastest growing areas in risk management. • Examples include bank/retail card fraud, insurance fraud, health care fraud, welfare fraud, franchise fraud, internet fraud, mortgage fraud, investment fraud, tax fraud, merchant fraud. • E-commerce presents opportunities. • The F.B.I, estimates that between 10-15% of loan applications contain material misrepresentations. 366 Reporting and Analysis • Scorecard and portfolio performance • Approval rates, applicant profile, loss rates, high risk segments • Behavior tracking to develop better strategies • Capturing fraud, approval/decline, pricing, credit line management, collections, cross sells qualification, claims. 367 Risk Applications • Retail/banking (consumer and commercial) • Application and behavior scorecards for all credit products. • Strategy design for credit limit setting, authorizations and collections/reissue/suspension. • Fraud application and transaction detection • Pricing/down payment • ATM limits, check holds • Pre-qualifying direct marketing lists. Automotive/finance • Loans and leasing • Application, behavioral, fraud, collection scorecards • Pricing/down payment. Risk Applications • Government • Fraud detection (for example, Welfare, health insurance) • Entitlement/claims assessment (for example, Workers compensation) • Communications • Security deposit • International call access • Contract/"pay as you go" • Telephone fraud • "Shadow limit" setting • Suspension of service • Collections. Risk Applications Insurance • Rate setting • Fraud detection • Claims management • Risk control for CRM initiatives. • Utilities • Security deposit • Collections. Risk Applications • Manufacturers/pharmaceuticals/industrials • Assessing credit risk of business clients • Credit risk assessment of franchisees (for example, gas stations) • Payment terms • Collections • Merchant fraud. Risk Applications • Optimizing work flow in adjudication departments • Evaluating/pricing portfolios • Securitization • Setting economic/regulatory capital allocation • Reducing turnaround time (automated scoring) • Comparing quality of business from different channels/regions/suppliers. Resources www.ftc.gov/bcp/conline/pubs/credit/scoring.htm www.creditscoring.com www.my-credit-score.com www.fairisaac.com, www.myfico.com www. experian. com www.creditinfocenter.com www.consumersunion.org/finance/scorewc200.htm www.phil.frb.org/files/br/brs097lm.pdf www.nacm.org www.rmahq.org www.riskmail.org www.occ.treas.gov Resources • Credit Scoring & Its Applications by Lyn Thomas, Jonathan Crook, David Edelman • Credit Risk Modeling: Design and Application by Elizabeth Mays (Editor) • Internal Credit Risk Models: Capital Allocation and Performance Measurement by Michael K Ong • Handbook of Credit Scoring by Elizabeth Mays • Applications of Performance Scoring to Accounts Receivables Management in Consumer Credit by John Y. Coffman • Introduction to Credit Scoring, by E.M. Lewis Scorecard Development roles-objectives • Understand the critical resources needed to successfully complete a scorecard development and implementation project. • Understand some of the operational considerations that go into scorecard design. Major Roles • Scorecard Developer • Data miner, data issues • Credit Scoring Manager/Risk Manager • Strategic view, corporate policies, implementation • Product Manager • Client base, target market, marketing direction. Major Roles • Operational Managers • Customer Service, Adjudication, Collections • Strategy execution, impact on customers • IT/IS Managers • external/internal data, implementation platforms. Minor Roles Project Manager • Coordination, time lines • Corporate Risk staff • Corporate policies, capital allocation • Legal. Why All of These Roles? • Can I use this variable? • Legal, technical (derived variables, implementation platform), future application form design • Segmentation • Marketing, application form design, systems • What is the impact on this segment? • Operational, marketing, risk manager, corporate risk. Introduction to SAS Enterprise Guide •SAS Enterprise Guide provides a point-and-click interface for managing data and generating reports. Summary Statistics for S:\workshop\customers.sas7bdat Data Statistics Basic Percentiles Additional Plots Results Titles Properties Data source: S:\workshop\custonners.sas7bdat Task filter: None Variables to assign: Name CustomerJD ^ Customer_Country ^ Customer_G ender Customer_N ame ^ Customer_FirstName ^ Customer_LastName Customer_BirthDate ^ Customer_Age_G roup Customer_Type ^ Customer_G roup (2> Customer_Age Analysis variables Customer_Age FH Classification variables ^RuS Custorner_Type Frequency count (Limit: 1) ffil Relative weight (Limit: 1) B Copy variables B Group analysis by H Class level Customer_ Sort by: Unformatted values Ascending Missing values: I I Allow multi-label for The variables that you assign to this role are character or discrete numeric variables that are used to divide t data into categories or subgroups. The statistics will be calculated on all selected analysis variables for e. combination of classification variables. Bar Chart for S:\workshop\orion_profit.sas7bdat 3 of A Specify appearance §sas 0 3D chart Colors - Sample chart: Color bars by: Labels I Bar category Preview code HE t\ae t eachl 3 I I Legend: 0Data labels: Lines and ticks South Sum Anis Labels W] Use reference lines [^1 Tick marks 380 SAS Enterprise Guide Interface SAS Enterprise Guide also includes a full programming interface that can be used to write, edit, and submit SAS code. ^ SAS Enterprise Guide File Edit View Tasks Project Tree Q S^n Process Flow 3'"i^l orion_profit fe|$ Bar Chart customers □~CD Programs jM ep02d01 Program Tools T x ep02d01 - Help "a-&T ¥^ R=) CB X I W> IC« I □ " I Process Flow Output Data (2) Program y 5ave " w Run " itop 5elect 5erver Export " 5end To - Create " | [?] Properties libnarne orion "s:\workshop' set orion.customers; if Customer_Type_ID = 3010 then output work.nonelub; else output work. clubrnembers; 1 2 3 13 data work. c lubrnembers work. none lub; 4 5 6 7 8 9 lOBproc print data=work.nonelub noobs; 11 title "Non Club Members"; var Country Gender Custorner_Name; 13 run; 14 run; 381 SAS Enterprise Guide Interface: The Project •A project serves as a collection of • data sources • SAS programs and logs • tasks and queries • results informational notes for documentation. □■■■5^ Process Flow l=l"ip 0RI0N_PR0FIT S] Product Frequencies 5 Profit by Category Pie Chart |!f| Profit by Country/AgeGroup Report Create Format ($CntryFrnt - Local) ^ Link to Create Orion_Profit □■■■CZl Programs rjl-l^ Create Clrion_Profit □-G5| Custom Reports J Report Tasks by Category 3 Data ^j£J Filter and Sort % Query Builder jit Append Table lj!d Create Imported Format JiJ Sort Data wld Create Format es S*- Run ' y Stop I Export " Schedule - | Zoom " | < Program Descripti... Report Vf| / RTF- // rroaucc r... / f < \ Profit by SAS Report j \ Country/A... -Profit... / 1 < J? Profit by SAS Report i—aregory ... - rrorir ... > Ready ^ No connection You can control the contents, sequencing, and updating of a project. SAS Programs data work.clubmembers work.nonclub;^ set orion.customer; if Customer_Type_ID = 3010 then output work.nonclub; else output work.clubmembers; run; print data=work.nonclub; title "Non Club Members"; var Country Gender Customer Name* run ; DATA Step PROC Step ep02d01.sas 383 PROC PRINT Output 5sa Enterprise Guide- The Fkruver tftKiww-Non Club Members Obs Country Gender Customer_Name 1 DE M Ulrich Heyde 2 US M Tulio Devereaux 3 US F Robyn. Klera 4 us F Cynthia Mccluney 5 AU F Candy Kinsey 6 US M Phenix. Hill 7 IL M Avinoam a we ig" 8 CA F Lauren Marx Saving SAS Programs •The SAS program in the project is a shortcut to the physical storage location of the .sas file. Select the program icon and then select File O Save program name to save the program as the same name, or Save program name As... to choose a different name or storage location. ^^^^^^^^^^^^^^^ SAS Enterprise Guide File Edit View Tasks Program New "J Open Close Project ► ► 5ave Project 5ave Project As... Ctrl+5 y 5a ve ep02d01 Ctrl+Shift+S IE Save ep02d01 As... 385 Embedding Programs in a Project •A SAS program can also be embedded in a project so that the code is stored as part of the project .epg file. •Right-click on the Code icon in a project and select Properties O Embed. a3 Properties for ep02d01 General Results Prompts Summary General Label: ep02d01 Code will run on server: Local Last Execution Time: 2 seconds File path: Change.. Location: My Computer Embed 1¥ Save As.. Embeds the code in the SAS Enterprise Guide project so that any changes that you make to the code in SAS Enterprise Guide are not applied to the original code file. This option is available only for existing code files that you have inserted into yr1 □ K More (F1)... Cancel 386 How Do You Include Data in a Project? File Edit View Tasks Program '=1 New Tools Help I HI -Process Flow [?=t Open Close Project 5ave Project 5ave Project As. 5ave F igfl Project Ctrl+O SAS Enterprise Guide Ctrl+ File Edit View Tasks Program Tools Selecting File ■=> Open o Data adds a shortcut to a SAS data source in the project. Project Tree Process FlowA □ S^c Process Flow order_item Pun Stop order_item Assigning a Libref •You can use the Assign Project Library task to define a SAS library for an individual project. SAS Enterprise Guide File Edit View Tasks Program Tools Help |H~|^r^&| =) Oi ?\ I I n» | E^g Process Flow ^ Project Tree ^ D Add-In El S^g Process Flow Create HTML Document... Style Manager " I Zoom " "^Project Log | [^Properties » U 1_1 i luyiain-^ ep02d01 £J ep02d02 Assign Project Library... JMP Stored Process Packager.. Project Maintenance.., View Open Data Sets... ■_■ i ■_■ i ij HTML ep02d0 1 388 Browsing a SAS Library Server List H~W LLB Inventory Local Ö-|3) Libraries + GO-GO-(=)■ •During an interactive SAS Enterprise Guide session, the Server List window enables you to manage your files in the windowing environment. In the Server List window, you can do the following: ■ view a list of all the servers and libraries available during your current SAS Enterprise Guide session ■ drill down to see all tables in a specific library ■ display the properties of a table ■ delete tables ■ move tables between libraries GISMAPS MAPS MYDATA ORION TJ ALL_SUPPLIERS AUSTRALIA_SUPPLIERS QJ COMBINED_PRODUCT [3 CUSTOMER [3 CUSTOMER_PROFIT jJJ CUSTOMER_TYPE [3 EMPLOYEE_CELL |3 EMPLOYEEJHOME |3 MNTH7_2007 [3 MNTHS_2007 [3 MNTH9_2007 TJ NONSALES jg NORTH_AMERICAN_SUPPLIERS 389 Applying Formats Display formats can be applied in a SAS Enterprise Guide task or query by modifying the properties of a variable. Task roles: I List variables ^) EmploiieeJD ■jfci. First_Nanne ■jfä^ Last_Name (;Ti) ff^JB'111 (j3) Bonus ^) Compens ^) BonusMq Group analy-sl | ^ | Page by (LimJP Total of Subtotal of Identifying laBeT Remove from Role 5ort Columns Show Names 5how Labels Properties Ír Categories: Formats: None Numeric Time Date/Time Currency User Defined All MMDDYYSw.d_ai| MMDDYYw.d MMYYCw.d MMYYDw.d MMYYNw.d ._■ MMYYPw.d MMYYSw.d MMYYw.d ■Attributes -Overall width: Decimal places: |Š~~ 3J Min: 2 Max: 10 |Ö~~ ~~3 Min: 0 Max: 7 "Description date values "Example Value: 14245 (01Jan1999] Output: 0 1 / 0 1 / 9 9 OK Cancel 390 uery Builder Join •When you use the Query Builder to join tables in SAS Enterprise Guide, SQL code is generated. SQL does not require sorted data. SQL can easily join multiple tables on different key variables. SQL provides straightforward code to join tables based on a non-equal comparison of common columns (greater than, less than, between). "!:: Query Builder for Local: ORION. ORD ERJTEM Query name: Join for Product List] Output name: |SASUSER.QUERY_FOR_ORDER_IT | | Change... H] Computed Columns | @ Prompt Manager Tc^ Preview | Tools Options " } Add Tables X Delete Join Tables ■ © o © © © ■ © © © © ORDERJTEM) □ rder_ID Order_ltem_Num Product_ID Quantity Total_Retail_Price CostPrice_Per_U nit Discount PRODUCTJJST ) Product_ID Product_Name Supplier_ID Product_Level Product Ref ID Select Data | Filter Data| Sort Data] Column Name Input Summary ® OrderJD [Order... tl.OrderJD H @ Order_ltem_Num... t1 .OrderJtem_Num ® ProductJD (Pro... H.Product ID ® Quantity (Quantit... H .Quantity *f* Total_Retail_Pri... H.Total Retail Price ^ CostPrice_Per_... tl.CostPrice Per ... @ Discount (Disco... tl .Discount © ProductJD 1 (Pr... t2. ProductJD ^ ProductJJame (... t2.Product_Name © SupplierJD (Sup... t2. SupplierJD @ ProductJ_evel (... t2.Product Level @ Product_Ref_ID ... t2.Product Ref ID > I I Select distinct rows only Run Save and Close Cancel Ml m a Help 391 Sort Data Task •The Sort Data task enables you to create a new data set sorted by one or more variables from the original data. Ü Sort Data for Local:ORION.PRODUCT_L 1ST Options Results Properties Data Data source: Local:ORION.PRODUCTJJST Task filter: None Edit.. Columns to assign: Task roles: ProductJD sort order: Name ® ProductJD $1 Product_Nanne © SupplierJD ® Product_Level ® Product_Ref_ID | Sort by ■@ ProductJD | Columns to be dropped (Limit: A l±J Ascending O Sort Data for Local:ORION.PRODUCT LIST Data Options Results Properties Results (^Location to save output data- Local:WORK.SORT PRODUCT Browse... 392 Business Scenario •Orion Star wants to send information about a specific promotion to female customers in Germany. The report can be created by querying the or ion. customer data set to include only the desired customers, and then by producing a report with the List Data task. CU5TKiMEF[ rennale German F_G errmanv List Da:a HTML Female Customers in Germany Customer Country Customer First Name Customer Last Name Customer Birth □ate DE Co rnelia Krahl 27FEB1974 DE Elke iallstab 16AUG1974 DE Ines Deisser 20JUL1969 393 Business Scenario •The same report can be generated more efficiently by subsetting the data directly within the List Data task. This requires modification of the code generated by SAS Enterprise Guide. IS CUSTOMER List Data "HTMU-List Data 2 7 □ PRÜC PRIHT DATA=WORK. SORTTempTableSorted 2 8 NOOBS 29 LABEL 30 ; 31 _ 32 33 34 35 3 6 VAR Country Customer_FirstName Custoiner_LastName Birth_Date; 3 7 RUH; /* Start of custom user code. */ where Country = 1DE1 and Gender = 1F1; /* End of custom user code. */ 38 /*------------------ 39 End of task code. 40 41 RUH; QUIT; 394 Understanding Generated Task Code •There are many situations where task results created by SAS Enterprise Guide can be further enhanced or customized by modifying the code. •However, before you can effectively modify the code, you must first understand the code that SAS Enterprise Guide generates. List Data Task H List Data for Local:ORION.CUSTOMER Data Options Titles Properties Preview code Data Data source: Task filter: LocahORION.CUSTOMER None Edit.. Variables to assign: Task roles: Gender sort order: Name 1^3) CustornerJD fy. Country ^.Gender ^PersonalJD fy. Customer_Name fy. Customer_FirstName fy. Custormer_LastName Q Birth_Date fy> Customer_Address © StreetJD $L Street_N umber Customer_Tyc assign one c d for each d List variables Country Customer_FirstName Customer_LastName -H Birth_Date Group analysis by Page by (Limit: 1 ] Total of Subtotal of (Limit: 1] Identifying label Ascending 0 Sort by variables The Preview code button enables you to view and modify the code generated by the task. 3 Run Save Cancel Help 396 List Data Task - Code Preview Code Preview For Task Insert Code.. Code generated by SAS Task Generated on: Wednesday, April 29, 2009 at 11:12:29 AH By task: List Data Input Data: ORION.CUSTOMER Server: Local % eg coitdit±oital_djropds (WORK.S ORTTemp Tab 1e S o r t e d) ; /*----------------------------------------------- Sort data set ORION.CUSTOMER 7 □ PROC SORT DATA=ORION. CUSTOMER (KEEP = Country Custorner_FirstNaroe Customer_LastName Bin OUT=UORK.SORTTempTab 1eS□rted BY Gender; RU1I; TITLE; TITLE 1 "Report Listing"; FOOTNOTE; TT" TT,TTTT" H rT .- +- 1-..-. Cf Ä C ■—J -r -r .—■ +- . .- Cf ?. '~J CJ TT" TlT J TT1 TlT.T ?. TT TT" .- Cř TTCř Cř r-1 Ti T ■. 397 Using the List Data Task to Generate Code •This demonstration illustrates building a List Data task and examining the code generated by SAS Enterprise Guide. Customer Listing Customer Gender=F Customer Customer First Customer Last Name Customer Birth Country Name Date US Sandrina Stephano 09JUL1979 DE Cornelia Krahl 27FEB1974 US Karen Ballinger 1BOCT19B4 DE Elke Wallstab 16AUG1974 Customer Gender=M Customer Country Customer First Name Customer Last Name Customer Birth □ate US James Kvarniq 27JUN197 4 us David Black 12APR1969 DE Markus Sepke 21JUL1988 DE Ulrich Heyde 16JAN193 9 398 List Data Task - Generated Code •The initial comment block shows information about the task. /*---------------------------------------------------------- Code generated by SAS Task Generated on: Wednesday, April 29, 2009 at 1:13:33 PH By task: List Data Input Data: ORION.CUSTOMER Server: Local ------------------------------------------------------- */ 399 List Data Task - Generated Code •The first line uses a macro to delete temporary tables or views if they already exist. If the Group by role is used in the task, the data must be ordered by the grouping variable. PROC SORT is used by default. Only variables assigned to roles are kept in the new data set. h eg cofldl t± on a Id ±op d & (WORK ■ S ORTTernp Tab leSorted) ; /*--------------------------------------------------------- Sort data set ORION.CUSTOMER ------------------------------------------------------ V PROC SORT DATA=ORION.CUSTOMER(KEEP=Country Custonier_FirstNanie Custonier_LastNaitte Eii:th_Date Gender) OUT=UORK.SORTTempTableSorted ■ BY Gender; RU1I; 400 List Data Task - Generated Code If the Group by role is not used, SQL creates a temporary view of the required data. Again, only variables assigned to roles in the task are included in the view. This comment incorrectly states that sorting occurs. h eg cofldi t± on a Id jop d & ( tjqrk . S ORTTernp Tab leSorted) ;_ /*--------------------------------------------------------- Sort data set ORION.CUSTOMER ------------------------------------------------------ */ PROC SQL; CREATE VIEW WORK.S ORTTemp TableSorted AS SELECT T.Country, T.Customer_FirstName, T. C us t oine r_L as tName f T. E i r t h_D at e FROM ORION.CUSTOMER as T ■ QUIT;_ 401 List Data Task - Generated Code The main part of the code includes the titles, footnotes, and procedure code to generate the report. PROC PRINT is the procedure used with the List Data task. TITLE; TITLE 1 "Customer Listing"; FOOTNOTE; FOOTNOTE1 "Generated toy the 3AS System (£ SASSERVERNAHEf fiSYSSCPL) PROC PRINTEDATA= WORK. SORTTeinpTatoleSorted IUlDUL!j-= "Row number" LABEL VAR Country Customer_F ir stName Custor[ier_LastName Birth_Date; BY Gender; RUN; y> TITLE and FOOTNOTE are examples of global statements and can be included anywhere in a SAS program. on hTRIM(%QSYSFUNC(DATE(), NLDATE2□.)) at % TRIM(% SYSFUNC(TIME[) f NLTIHAP2□.) ) rr . 402 List Data Task - Generated Code •At the end, the final lines of code delete any temporary tables created to build the task, and delete any assigned titles and footnotes. /*--------------------------------------------------------- End of task code. ------------------------------------------------------ */ RUN; QUIT; %_eg_cojidit±onal_djropds (WORK. SORTTempTab leSorted) ; TITLE; FOOTNOTE; 403 Techniques to Modify Code •Three methods can be used to modify code generated by SAS Enterprise Guide: 1. Edit the last submitted task code in a separate Code window. 2. Automatically submit custom code before or after every task and query. 3. Insert custom code in a task. 404 Edit Last Submitted Code •After a task runs, the code can be viewed from either the Project Tree or Process Flow. SAS Enterprise Guide File Edit View Tasks Program Tools Help I ,ä ^ ^ XI* Project Tree S S^g Process Flow ä-lii CUSTOMER List Data Process Flow t> Run " □ 5top Export - Schedule Open l> Run List Data HI Modify List Data Select Input Data Publish,,,_ is ' I Zoom Open List Data Open Last Submitted Code Open Log Process Flow b- Run I Stop CUSTOMER Export T Schedule ^ | Zoom 11-- List MTMI - ■ Project Log | [?] Properties Open Run Modify List Data Run Branch from List Data T-l--■■ T---- -a pj Open List Data [SI Open Last Submitted Code \=M Open Log 0 HTML - List Data 405 Edit Last Submitted Code The task code is read-only and cannot be edited directly. To create a copy of the code from the Last Submitted Code window, select any key while in the SAS program window. SAS Enterprise Guide offers to make a copy. SAS Enterprise Guide This code is read-only. Do you want to create a copy of this code that can be modified? Yes No After the code is copied, there is no link between the task and the new code. Any changes in the task are not reflected in the copied code, and modifications to the code do not affect the task. 406 Summary of Editing Last Submitted Code Custom code linked to task? No Can be used to modify query code? Yes Extent of modification allowed? Anything in the program can be changed. Custom code included when exported? Yes. You must export the edited program and select the option in the Export wizard. Automatically Submit Custom Code Before or After Every Task and Query •There are times when you might need to run a SAS statement or program before or after any task or query is executed. The Custom Code option enables you to insert custom code before or after all tasks and queries. 408 utomatically Submit Custom Code Before or After Every Task and Query •IT General Project Views Project Recovery Results Results General Viewer SAS Report HTML RTF PDF Graph Stored Process Data Data General Performance Query □ LAP Data Tasks Tasks General Custom Code Tasks > Custom Code ■Additional SAS code- [^1 Insert custom SAS code before task and query code ^ Insert custom SAS code after task and query code To run code before tasks and queries, select the first check box and select Edit... to type the code. Edit Edit. 409 utomatically Submit Custom Code Before or After Every Task and Query Global statements or complete program steps can be entered. Example: Set the LOCALE= option to Great Britain. Edit /* Insert custom code before task code here */ OPTIONS LOCALE=en GB; nsert Code Before or After SAS Programs •Similar options exist to automatically submit code before or after SAS programs written and submitted in Code windows in SAS Enterprise Guide. General Project Views Project Recovery Results Results General Viewer SAS Report HTML RTF PDF Graph Stored Process Data Data General Performance Query OLAP Data Tasks Tasks General Custom Code Output Library SAS ProgramsK Security § SAS Programs r General 0 Automatically direct results back to SAS Enterprise Guide 3 Close all open data before running code Editor Options.. r Additional SAS code [^1 Insert custom SAS code before submitted code [^1 Insert custom SAS code after submitted code ] Submit SAS code when server is connected Edit. Edit... Edit... 411 Summary of Submitting Custom Code Before or After Every Task and Query Custom code linked to task? Yes Can be used to modify query code? Yes Extent of modification allowed? Statements can only be submitted before or after the task code. Custom code included when exported? Yes, select the option in the Export wizard. Insert Custom Code in a Task In most task dialog boxes, you have the ability to insert custom code within the generated SAS program. This technique has the significant benefit that the task interface can still be used to modify the report. w lor Tas 13 Insert Code.. 2 7 □ PROC PRINT DATA= WORK. SORTTempTab leSot^ted 28 OBS="Row number" 29 LABEL 30 ; 3 1 32 33 34 35 3 6 /* Staut of custom usee code. where country="DE"; ^^^En^^of^custo^j^iser^codej^^^ 7 VAR Country Customer FirstName Customer LastName Birth Date; RUH; .a 37 /*----------------- 38 End of task code 39 413 Insert Custom Code in a Task •In the Code Preview window, select Insert Code... to add custom code in predefined locations in the SAS program. Code Preview For Task Insert Code. 21 ! /*------------------------------------------------------ 2 Code generated toy SAS Task 3 4 Generated on: Thursday, March 13, 2008 at 10:57:50 PM 5 By task: List Data 6 7 Input Data: ORION.CUSTOMER 8 Server: Local 10 HBPROC SQL; 12 %_£A£TA£K_BFtGPDS (UORK. SORTTennpTab leSorted) ; 13 QUIT; 414 Insert Custom Code in a Task User Code Positions where user code may be inserted are indicated by the icons. Double-click on a marked line to add user code or change existing user code. V PROC SQL; CREATE VIEW WORK.SORTTempTableSorted AS SELECT Country, Customer_FirstNarme, Customer_LastName, Birth_Date FROM ORIO QUIT; TITLE; TITLE1 "Report Listing"; FOOTNOTE; F00TN0TE1 "Generated by the SAS System (&_SAS S ERVER NAM E.. S^SC^Toy^ffSFUNC(DATE(L E i Clear All OK Cancel Help 415 nsert Custom Code in a Task Some insert points enable custom options to be added to existing statements. User Code 0® Positions where user code may be inserted are indicated by the icons. Double-click on a marked line to add user code or change existing user code. 1 PROC PRINT DATA=WORK.SORTTempTableSortec □ BS="Row number" LABEL -Ji, RUN; [31 r End of task code. .......V RUN;QUIT; PROC SQL; %_SASTASK_DROPDS(WORK.SORTTempTableSorted); QUIT; TITLE; FOOTNOTE; > Clear All OK Cancel Help Default SAS Enterprise Guide Footnote Options General Project Views Project Recovery Results Results General Viewer SAS Report HTML RTF PDF Graph Stored Process Data Data General Performance Query OLAP Data Tasks Tasks General Custom Code f~l i irni ih I ihrjan i Tasks > Tasks G General— Default title tex/for task oi The default footnote includes macro references to the SAS server name, operating system, and date and time that the task runs. Default |ootnote text for task output: ^DjspJa^^l^ejTe^a^e^^AS^odejnJ^ Generated by the SAS System version &SY S VER (&_S AS SERVERNAME , &SYSSCPL) on %TRIM (%QSYSFUNC (DATE () , NLDATE20 . ) ) at %TRIM(%SYSFUNC(TIME() , NLTIMAP20 . ) ) 419 ODS and SAS Enterprise Guide Default result formats can be set under Tools O Options SI Options General Project Views Project Recovery Results Results General Viewer SAS Report HTML RTF PDF Graph Stored Process Data Data General Performance Query □ LAP Data Tasks Tasks General Custom Code Output Library SAS Programs Security Administration Results > Results General ■ Result Formats- 0 SAS Report □ RTF Default: □ html I I Text output □ PDF SAS Report ■Managing Results-Replace results: Prompt before replacing 0 Display SAS log when errors occur 0 Automatically open data or results when generated 0 Link handcoded ODS results 0 Change task icon when warnings occur 0 Show generated wrapper code in SAS log Prompt before opening results larger than: MB Maximum number of output data sets to add to the project: 50 ODS and SAS Enterprise Guide •Additional settings can be made for each result format. General Project Views Project Recovery Results Results General Viewer SAS Report HTML Stored Process Data Data General Performance Query OLAP Data Tasks Tasks General Custom Code Output Library SAS Programs Security Administration Results > PDF Appearance-Style: printer Columns: 0 Color 0 Add Bookmarks f File Header-Author: Keywords: Subject: Title: Advanced- Additional options for ODS PDF statement: 421 ODS and SAS Enterprise Guide Task properties can be used to override the default for an individual task. Generated output can be switched off completely and handled by inserting code. H Properties for List Data General Prompts!^ Summary Results 1 Right-click on a task icon and select Properties. O Use preferences from Tools -> Options HTML - EGDefault © Customize result formats, styles, and behavior □ SAS Report 0 HTML □ PDF □ RTF □ Text Graph Format: | ActiveX EGDefault EGDefault printer Rtf □ Automatically open data or results when generated Reset Options The selection pane enables you to select a category of options to view. OK More (Fl)... Cancel 422 SAS Enterprise Guide Help (Review) •If Help files were installed along with SAS Enterprise Guide, you can select Help to access the Help facility regarding both the point-and-click functionality of SAS Enterprise Guide as well as SAS syntax. & SAS Enterprise Guide File Edit View Tasks Program Help H - (är 35 S Project Tree ▼ SAS Enterprise Guide Help SAS Syntax Help Getting Started Tutorial ■S^o Process Flow SAS on the Web ► About SAS Enterprise Guide k 1 Task and Procedure Help E? SAS Enterprise Guide Help Hide Back Print Contents Index Search Favorites Type in the keyword to find: I list data List Data task List Report wizard log entries collapsing and expanding log properties LOGISTIC procedure Logistic Regression task To find information regarding the syntax of the code behind the scenes of a particular task, type the name of the task in the Index tab. Display 5 List Data About the List Data task The List Data task prints the observations in a SAS data set, using all or some of the variables. You can create a variety of reports, ranging from a simple listing to a highly customized report that groups the data and calculates totals and subtotals for numeric variables. For example, you can use the Lis report that sums the expenses a sales region, compares these va expenses and revenues for the c number of observations in each ; whole report, and has a customi name of the region. ► Assigning variables to analysis ► Setting listing options ► Specifying titles and footnot ► Viewing properties The task help indicates the procedure name to search in the SAS syntax help. SAS procedures used PRINT Required SAS products ^aase^Ksr^ Recommended additional none SAS products J 424 Procedure Syntax Help ri? SAS Documentation File Edit View Go Help o ©si3- Hide Locate Back Forward Stop Refresh Print Options Contents |nden Search Favorites El 13 a ü - _j + a ma + _i + _j + _i + _j a a + _i + _i a a + _j + _i + _j + _j i±i + + + _i _l _l _i _l The PLOT Procedure The PMENU Procedure The PRINT Procedure g] Overview: PRINT Procedure i] PROC PRINT Statement J] BY Statement 5] ID Statement §] PAGEBY Statement g SUM Statement D SUM BY Statement ff) VAR Statement \i] Results: Print Procedure Pi Examples: PRINT Procedure The PRINTTO Procedure The PROTO Procedure The PRTDEF Procedure The PRTEXP Procedure The PWENCODE Procedure The RANK Procedure The REGISTRY Procedure The REPORT Procedure The SCAPROC Procedure The SOAP Procedure The SORT Procedure The SQL Procedure The STANDARD Procedure The SUMMARY Procedure The TABULATE Procedure The TEMPLATE Procedure The TIMER LOT Procedure The TRANSPOSE Procedure The T RAN TAB Procedure The UNIVARIATE Procedure ] > Previous Page | Next Pane The PRINT Procedure Syntax: PRINT Procedure Tip: Supports the Output Delivery System. See Output Delivery System: Basic Concepts in SAS Output Delivery System: User's Guide for details. Tip: You can use the ATTRIB, FORMAT. LABEL, and WHERE statements. See Statements with the Same Function in Multiple Procedures for details. You can also use any global statements. See Global Statements for a list. Table of Contents: The PRINT Procedure PROC PRINT ; BY variable-1 <... variable-n>; PAGEBY BY-variable, SUMBY BY-variable. ID vanable(s) ; SUM vanable(s)