Python & R vs. SPSS & SAS

9 maart 2017

Artikel geschreven door Jeroen Kromme, Senior Consultant

De meest gebruikte statistische softwarepakketten die we bij onze opdrachtgevers tegenkomen zijn SAS, SPSS, R en Python. SAS en SPSS worden nog het meest gebruikt bij opdrachtgevers van ons, maar we zien dat de interesse naar open source programma’s, zoals R en Python, groeit. Sterker nog, een aantal van onze opdrachtgevers zijn volledig overgestapt naar het gebruik van R en/of Python. Daarnaast kiezen commerciële pakketten voor koppelingen naar R en/of Python, waaronder SAS, en SPSS (Essentials for Python.pdf) Maar bijvoorbeeld ook Microsoft SQL Server. Hoog tijd om de programma’s eens naast elkaar te leggen.

SAS is ontwikkeld aan de North Carolina State University en was in eerste instantie het antwoord op de behoefte om grote hoeveelheden landbouwkundige data te analyseren. Het stond destijds voor Statistical Analysis System. In 1976 is het bedrijf SAS opgericht doordat de vraag voor dergelijke software groeide. Statistical Package for the Social Sciences (SPSS) is ontwikkeld voor sociale wetenschappelijke studies en was het eerste statistische programma voor de PC. Het werd in 1968 ontwikkeld aan University of Stanford, acht jaar later werd SPSS Inc. opgericht en in 2009 werd het opgekocht door IBM. In 2000 bracht de University of Auckland de eerste release uit van R, een programmeertaal primair gefocust op statistisch modelleren en open beschikbaar onder de GNU licentie. Python is de enige taal in dit rijtje dat niet ontwikkeld is aan een universiteit. Python is bedacht door een Nederlander, groot fan van Monty Python (daar komt ook de naam vandaan). Hij had een project nodig rondom de kerstdagen en bedacht Python, een taal gebaseerd op ABC, een taal die hij eerder had ontwikkeld en die erop is gericht niet-programmeurs te leren programmeren.

In de basis zijn het alle vier programmeertalen, al dan niet voorzien van een uitgebreide gebruikersschil. Python is de enige van deze vier talen die niet is ontwikkeld aan een universiteit en heeft ook als enige statistisch modelleren niet als primaire doel. Het is in eerste instantie ontwikkeld om niet-programmeurs te leren programmeren, wat het tot een universelere taal maakt dan de andere drie. Het voordeel van Python, ten opzichte van andere zogeheten multi-purpose talen als C++ en Java, is dat Python zeer makkelijk is om te leren. Vervolgens zijn programmeurs veel modules gaan ontwikkelen bovenop Python, waaronder modules voor statistisch programmeren. Deze taal hoort dus zeker in dit rijtje thuis, maar wordt nog andere toepassingen gebruikt dan SAS, SPSS en R.

In dit artikel vergelijken we de vier talen op methoden en technieken, eenvoudigheid van leren, grafische mogelijkheden, support en kosten. We focussen ons voornamelijk op de talen, dus niet op SAS Enterprise Miner en SPSS Modeler.

 

Methoden en technieken

Mijn visie op data-analyse is dat er een continuüm bestaat tussen verklarende en voorspellende modellen. De keuzes die je maakt tijdens het modelleren zijn afhankelijk van het doel van je analyse. Om een churn-model als voorbeeld te nemen: Je doel kan zijn om erachter te komen waarom je klanten weggaan? Of wie van je klanten weg gaan? De eerste vraag heeft als primaire doel het verklaren van vertrek, de tweede vraag heeft als primair doel het voorspellen van churn. De voorspellende kant van data analyse is nauw verwant met termen als Data Mining en Machine Learning.

Als we kijken naar SPSS en SAS komen deze van oorsprong uit de verklarende hoek. Ze zijn beide vanuit de wetenschap ontwikkeld, waar hypothese testen de belangrijkste rol speelt. Dit maakt dat ze, ten opzichte van R en Python, significant minder statistische methoden en technieken hebben. Tegenwoordig hebben beide partijen wel tooling die gericht is op Data Mining (SPSS Modeler en SAS Enterprise Miner), wel zijn dit andere tools en heb je dus extra licenties voor nodig.

Het voordeel van open source tooling is dat de community meehelpt aan het bouwen. R is ontwikkeld door academici, die hun technieken het liefst zo snel mogelijk willen verspreiden, dit heeft ertoe geleid dat R van deze vier talen de meest uitgebreide set aan methoden en technieken kent. Daarmee is R zeer sterk aan zowel de voorspellende als aan de verklarende kant van data analyse.

Python is ontwikkeld vanuit de toepassing en niet vanuit de academie en de statistiek. Bij statistisch modelleren zien we dat Python voornamelijk aan de Data Mining en Machine Learning kant sterk ontwikkeld is en daarmee dus vooral goed ingezet kan worden aan de voorspellende kant van de data analyse. En dan in het bijzonder in het schalen en borgen van voorspellingen, zodat deze zonder tussenkomst van een analist hun werk kunnen doen. Python leent zich bijvoorbeeld ook zeer goed voor het analyseren van plaatjes en beelden. Zo hebben we deze zomer een zelfrijdende radiografische auto gebouwd, dit is gedaan in Python (bekijk deze hier). Ook Big Data toepassingen als Hadoop en Spark zijn het eenvoudigst te benaderen vanuit Python.

Eenvoudigheid van leren

SPSS en SAS hebben een uitgebreide interface, waardoor er niet tot weinig zelf gecodeerd hoeft te worden. SPSS heeft de paste-functie die syntax voor je creëert en SAS heeft Proc SQL, wat SAS coderen voor SQL-kenners gemakkelijker maakt. Ben je echter wel aangewezen op programmeren in SAS en SPSS, maak dan je borst maar nat: beide talen lijken niet erg op elkaar of op andere relevante programmeertalen voor analysedoeleinden.

Hoewel er wel interface-mogelijkheden zijn voor R, bijvoorbeeld Rattle, komen deze niet in de buurt van SAS of SPSS. R is voor programmeurs prima te leren, veel data analisten zijn van huis uit echter geen programmeurs. R heeft in dit rijtje zeker de steilste leercurve, dit is dan ook de reden dat wij onlangs een cursus, onder de noemer R Experience, hebben ontwikkeld, die analisten helpt om R te leren gebruiken in hun werk.

Python is gebaseerd op ABC, een taal die ontwikkeld is om niet-programmeurs te leren programmeren. Dat maakt Python tot de simpelste taal in het rijtje, bij het ontwikkelen van de taal was leesbaarheid één van de hoogste prioriteiten. Er is helaas geen User Interface voor Python en daarom blijft het programmeren.

Ter conclusie, qua eenvoudigheid van leren steken SPSS en SAS boven R en Python uit, voornamelijk omdat het bij deze tools voor de gebruiker niet nodig is om te programmeren.

 

Support

SAS en SPSS zijn commerciële pakketten en hebben daarom ook beide officiële support. Dit maakt dat sommige bedrijven voor deze pakketten kiezen: als er iets mis gaat hebben ze in ieder geval support.

Er heerst echter de misconceptie dat er geen support is voor open source-programma’s. Er is geen officiële support zoals bij SAS of SPSS, maar er zit wel een hele community achter. Deze community helpt je via sites zoals Stack Overflow. Praktisch elke vraag die je hebt, heeft iemand anders al een keer eerder gesteld en anders kan je de vraag alsnog zelf stellen. Daarnaast zijn er commerciële partijen die support bieden in R en Python. In de praktijk komt het er vaak op neer dat je eerder antwoord hebt op een R / Python-vraag, dan op een SAS / SPSS-vraag.

 

Grafische mogelijkheden

SAS en SPSS hebben puur functionele grafische mogelijkheden; hoewel het mogelijk is basale aanpassingen te doen aan grafieken, blijft het bij functionele grafische mogelijkheden. R en Python hebben veel meer mogelijkheden door de grote hoeveelheid aan modules. De meest gebruikte grafische module voor R is ggplot2, dat een zeer uitgebreide set aan grafieken heeft en waar praktisch alles in aan te passen valt. Ook vallen deze grafieken simpel interactief te maken, waardoor je gebruikers via webapplicaties als Shiny kunt laten spelen met de data. Dit hebben we bijvoorbeeld een keer gebruikt om een klant als-dan scenario’s te laten uitvoeren op basis van een prijselasticiteitsmodel.

Python en R leren veel van elkaar. Eén van de duidelijkste voorbeelden hiervan is dat Python ook een ggplot-module heeft. Deze module kent praktisch dezelfde mogelijkheden en syntax als bij R. Nog een veel gebruikte Python-module is Matplotlib.

Niet alleen zien de grafieken er beter uit bij de open source tooling, je hebt meer mogelijkheden. Denk aan netwerk-, chord-, bubble-, flow-, geografische grafieken (links of plaatje met voorbeelden), en ze zijn ook allemaal interactief te maken. Als het gaat om grafische mogelijkheden staan R en Python dus ver boven SAS en SPSS.

 

Kosten

R en Python zijn open source programma’s, met als gevolg dat ze gratis te gebruiken zijn voor iedereen. Echter, zoals hierboven al is aangegeven, moet je hierbij wel rekening houden dat ze ook moeilijker te leren zijn. Werknemers die R en Python in hun skillset hebben, worden over het algemeen in een hogere salarisschaal ingedeeld. En voor de werknemers die R en Python nog niet onder de knie hebben, vergt dit opleidingskosten en/of opleidingstijd. Daarnaast brengt structureel gebruik van open source pakketten ook leer- en beheerkosten aan de ICT kant van organisaties met zich mee. Het is dus een utopie dat open source niets kost. Vergelijk je het echter met de kosten voor een SAS- of SPSS-licentie, dan is de business case gemakkelijk gemaakt: een licentie voor SAS of SPSS is vele malen duurder.

 

Mijn keuze

“Software is like sex, it’s better when it’s free” – Linus Torvalds (Grondlegger Linux)

Mijn favorieten in dit rijtje zijn R en Python. Deze talen kan ik altijd en overal gebruiken, zonder licenties te hoeven aan schaffen, en dus ook zonder op deze licenties te moeten wachten. Maar de belangrijkste reden om voor deze talen te kiezen is toch wel de breedte aan methoden en technieken die beide talen bieden.

Welke taal ik gebruik hangt af van het doel. Zoals eerder vermeld is Python een multi-purpose taal en is het bedacht vanuit de toepassing. Het is daarom sterk in Machine Learning, zoals Face / Object Recognition of Deep Learning-toepassingen. R gebruik ik vaak voor vraagstukken over klantgedrag, waarbij de verklarende kant van data analyse óók een belangrijke rol speelt. Als ik weet wie van mijn klanten de organisatie gaat verlaten, wil ik eigenlijk ook weten waarom. Als ik weet wie van mijn klanten gaat converteren op een bepaalde marketing-actie, wil ik ook graag weten wat het maakt dat juist zij gaan converteren, zodat marketing hun uitingen erop kunnen toespitsen.

Deze twee talen zijn dus voor een groot gedeelte complementair aan elkaar. Er bestaan libraries voor R waarin je een Python code kan uitvoeren (rPython), en modules in Python waarin je R kan uitvoeren (rpy2). Dit maakt de combinatie van deze twee talen nog sterker.

Momenteel zijn we bij Cmotions de data van Data Scientists-profielen in Nederland aan het crunchen. Hierin zien we dat R en Python veel prominenter aanwezig zijn dan SPSS en SAS. Het levert nog meer interessante inzichten op over de Data Scientist in de Polder, dus stay tuned!

 

Alternatieven

Naast de hierboven besproken talen, is er nog een heel scala aan (open source) software voor het analyseren van data, bijvoorbeeld: Weka, RapidMiner, Knime, Matlab, Octave, Scala, Spark, Julia. Houd deze blog in de gaten, volgende maand hebben we een vergelijking tussen RapidMiner en Knime. Twee open source analytics-programma’s, met een flow-based user interface met drag-and-drop.

Ook in opkomst zijn machine learning API’s, waarbij je data uploadt en je resultaten terugkrijgt. Dergelijke API’s kun je achter je website of in een app hangen, zoals bijvoorbeeld in: prediction.ioMicrosoft Azure MLseldon.ioGoogle Cloud Prediction APIAmazon Machine Learning. The Analytics Lab heeft ook een dergelijke propositie. Handig voor organisaties die nog niet ver zijn met analytics, maar wel willen kijken wat de toegevoegde waarde is van data driven werken.

Contact

Wil je meer weten over dit onderwerp? Neem dan contact op met Jeroen Kromme via onderstaande contactgegevens.

Jeroen Kromme, Senior Consultant

+31 6 43 58 59 92

j.kromme@cmotions.nl

Gerelateerd nieuws

Scrum en Data & Analytics; een match made in heaven?

4 oktober 2017

Scrum is hip; als je er als bedrijf nog een beetje bij wil horen, kan... lees meer

KNIME vs. RapidMiner

10 april 2017

Tegenwoordig is er een breed scala aan (open-source) software voor het analyseren van data. Zowel KNIME als RapidMiner worden... lees meer

Leer R met de Experience R. Schrijf je nu in!

16 januari 2017

Als (data) analist ben je altijd bezig met hoe jij jouw organisatie kan helpen met... lees meer