10. Juni 2011

Kleine Statistikvorlesung: Mit der Datenbank

Statistics lesson ... with the database
Heute machen wir eine kleine Statistikvorlesung - mit der Oracle-Datenbank. Es geht um die klassische, einfache lineare Regression. Das geht mit ganz einfachen SQL-Funktionen. Gegeben sei eine Tabelle, welche die getätigten Umsätze und die Ausgaben für TV-Werbung enthält.
Today we'll have a tiny "statistics lesson" - with the Oracle Database. We'll do a simple linear regression, just by using SQL functions. Let's start with a simple table containing numbers for revenue and advertising cost by month.
MONAT      UMSATZ_EUR WERBUNG_TV_EUR
---------- ---------- --------------
2009/11        130000          14000
2009/12        140000          13200
2010/01        100000           9000
2010/02        103000           9500
2010/03        112000          10000
2010/04         90000          12000
2010/05         98000          13000
2010/06         70000           4000
2010/07        109010          12000
2010/08        120000          10000
2010/09        130000           9000
2010/10        150000          15000
2010/11        170000          18000
2010/12        200000          18000
2011/01                        10000
2011/02                        10200
2011/03                        15200
Die Statistikaufgabe wäre nun, den Umsatz der ersten drei Monate in 2011 anhand der Ausgaben für TV-Werbung zu prognostizieren - eine schöne Statistikaufgabe. Und für diesen Fall brauchen wir gar keinen Export nach Excel oder in eine Statistiksoftware - das machen wir direkt mit SQL ...
The exercise is now to forecast the revenue for 2011 - based on the spendings for TV advertising. This is a "classic" statistics exercise. And we don't need to export the data to Excel or to another statistics software - we'll do the job with SQL ...
Zunächst stellen wir mit der "Methode der kleinsten Quadrate" den "Betrag" und die Steigung der linearen Funktion fest:
First we calculate the intercept and slope of the regression function using the "least squares method":
select 
   REGR_INTERCEPT(UMSATZ_EUR, WERBUNG_TV_EUR) as A,
   REGR_SLOPE(UMSATZ_EUR, WERBUNG_TV_EUR)     as B
from verkauf
Wenn man das dann in eine Inline View packt (WITH-Klausel), dann kann man Analyse und Prognose direkt mit einer SQL-Abfrage machen ...
Then we put this into an inline view (WITH clause) - so that we can do the analysis as well as the forecast in one SQL query ...
with regr_koeffizienten as (
 select 
   REGR_INTERCEPT(UMSATZ_EUR, WERBUNG_TV_EUR) as A,
   REGR_SLOPE(UMSATZ_EUR, WERBUNG_TV_EUR)     as B
 from verkauf
)
select 
  monat,
  umsatz_eur,
  werbung_tv_eur,
  a + b * WERBUNG_TV_EUR as UMSATZ_PROGNOSE
from VERKAUF, REGR_KOEFFIZIENTEN
/

MONAT      UMSATZ_EUR WERBUNG_TV_EUR UMSATZ_PROGNOSE
---------- ---------- -------------- ---------------
2009/11        130000          14000          138784
2009/12        140000          13200          132751
2010/01        100000           9000          101076
2010/02        103000           9500          104847
2010/03        112000          10000          108618
2010/04         90000          12000          123701
2010/05         98000          13000          131243
2010/06         70000           4000           63368
2010/07        109010          12000          123701
2010/08        120000          10000          108618
2010/09        130000           9000          101076
2010/10        150000          15000          146326
2010/11        170000          18000          168950
2010/12        200000          18000          168950
2011/01                        10000          108618
2011/02                        10200          110126
2011/03                        15200          147834
Stellt man das dann in APEX mit Hilfe eines Diagramms dar, ergibt sich ein schönes, quasi klassisches Statistikbild mit tatsächlichen und prognostizierten Daten.
Then we could create an APEX application showing those numbers in a nice chart.
Man sieht sehr schön: Die Datenbank kann eine ganze Menge - und auch für diese einfachen Fälle gibt es Anwendungsmöglichkeiten. Die Datenbank kann seit 11g sogar die komplexere multiple Regression mit mehreren unabhängigen Variablen - das ist dann aber Bestandteil der Data Mining Option, die man separat lizensieren muss. Wäre ein Fall für ein anderes Blog-Posting.
It's still true: the Oracle database can do more than most of us think. And many tasks are more than simple. The database is even capable to do the more complex linear regression with multiple input variables - but this is then part of the Data Mining Option which requires a separate license. That might be topic of another blog posting.

6. Juni 2011

Fundgrube Standard-Edition - und nicht nur das: DOAG SIG Development am 9. Juni

So .. der Urlaub ist rum und man ist zurück im Oracle-Leben. Ein technisches Posting habe ich heute noch nicht (das kommt später), aber ich kann wenigstens was ankündigen. Am 9. Juni (das ist am Donnerstag) bin ich mit zwei Vorträgen auf der DOAG SIG Development vertreten. Zum einen spreche ich über die "Fundgrube" Oracle Standard Edition (die vielen DB-Features und deren sinnvolle Kombination ist ja mein Lieblingsthema) und zum anderen spreche ich kurz über den neuen SQL Developer 3.0.
Naja - und viel wichtiger ist natürlich der Austausch und die Diskussion in der Community. Insofern hoffe ich auf zahlreiche Teilnehmer, gute Diskussionen und ... veilleicht sieht man sich ja.
This posting is about an event in german language and therefore in german only.

Beliebte Postings