Skillnaden mellan Stan och ett vanligt maskininlärningsbibliotek är riktningen. I scikit-learn väljer man en modell ur en katalog och anpassar den till data. I Stan skriver man ner hur man tror att datan uppkommit, och inferensen faller ut ur det.
Det är långsammare, kräver mer eftertanke, och är rätt verktyg när problemet inte råkar passa något färdigt.
Var det gör verklig skillnad
Hierarkiska strukturer. Segment inom kategorier inom marknader, med partiell pooling på varje nivå. Det går att skriva som några rader som direkt speglar hur verksamheten är organiserad.
Mätfel och osäkerhet i indata. När en förklarande variabel själv är en skattning kan osäkerheten i den föras vidare i stället för att ignoreras.
Domänkunskap som priors. När en marknadschef vet att effekten rimligen ligger mellan två och åtta procent är det information. Stan låter den informationen ingå formellt i stället för att diskuteras bort i ett möte.
Storheter som inte är standard. Censurerade observationer, nollinflation och egendefinierade fördelningar skrivs ut direkt i stället för att approximeras.
Vad det kostar
Modellerna tar minuter till timmar att skatta i stället för sekunder. Det gör Stan olämpligt när tusentals modeller ska tränas om nattligen, och utmärkt när en genomtänkt modell ska ge ett beslutsunderlag som håller.
Man måste dessutom förstå vad man skriver. Det finns inga standardinställningar som räddar en dåligt formulerad modell, och diagnostiken kommer att säga ifrån. Det är en fördel förklädd till en nackdel.
Stan eller PyMC
De löser samma sorts problem. PyMC är trevligare att arbeta i om resten av kedjan är Python, och har på senare år blivit förstahandsvalet i de flesta uppdrag.
Stan har fortfarande fördelar när modellen är komplicerad, när diagnostiken behöver vara oomtvistlig, eller när koden ska gå att läsa av någon som inte programmerar i Python. Modellfilen är läsbar i sig. Det har värde vid granskning.