Was sind "Statistische Algorithmen in C" ?
Die in Almo angebotenen statistischen Verfahren enthalten
viele statistische Algorithmen.
Beispiele: Mittelwert-Berechnung
Chi-Quadrat-Test
Korrelations-Berechnung
Diese Algorithmen haben wir etwas vereinfacht, von
Ballast (wie z.B. komplexen
Optionen) befreit und stellen sie so dem interessierten
Programmierer zur Verfügung.
Alle Algorithmen sind in der Programmiersprache
"C" geschrieben.
Warum nicht in C++ ?
Weil grosse Teile von Almo bereits in C geschrieben waren
bevor C++ populär wurde,
weil C ein Subset von C++ ist,
weil C dadurch von (den uns bekannten) C++ - Compilern
kompiliert wird, so mit
Microsofts
Visual Studio C++ - Compiler.
verändern
können,
haben wir folgendes gemacht:
Die 250 Algorithmen wurden in 21 startbare Programme eingesetzt,
mit denen 21
"höhere"
Verfahren gerechnet werden können.
Diese 21 Programme
können
Daten einlesen, das jeweilige Verfahren rechnen und die Ergebnisse ausgeben
Die 21 Verfahren sind:
0. Mittelwerte und Standardabweichungen
1. Eindimensionale Häufigkeitsverteilung
2. 2-dimensionale Tabelle
3. Multi-dimensionale H„ufigkeits-Tabelle
4. Multi-dimensionale Mittelwerts-Tabelle
5. Mittelwerts-Vergleich, t-Test
6. Korrelationsmatrix
7. 5 Typen von Streuungsmatrizen:
Kreuzprodukte, durchschnittliche
Kreuzprodukte
Quadratsummen, Kovarianzen, Korrelation,
8. Regression
9. Varianzanalyse
10. Allgemeines Lineares Modell
11. Diskriminanzanalyse
12 Logit- und Probitanalyse
13. Faktorenanalyse
14. Korrespondenzanalyse
15. Sortieren
16. Nichtparametrischer Test
17 Statistische Tafelwerte
18. Bildung von Dummies aus nominalen (qualitativen) Variablen
19. Clusteranalyse
20. Konfirmatorische Faktorenanalyse
Diese 21 Programme liegen als "Konsolen"-Programme vor.
Ein "Konsolen"-Programm ist ein Programm,
das die Windows-Bedienungs-
Oberfläche nicht verwendet, aber unter Windows gestartet werden kann.
Es läuft (unter Windows) in einem schwarzen
Bildschirm, wie er älteren
Computer-Nutzern noch aus der MS-DOS-Zeit bekannt ist.
Vom Benutzer
wird es über die "Konsole" bedient, in unserem Fall
über die Tastatur.
Der groáe Vorteil des "Konsolen"-Programms ist es,
dass nur das "nackte" C-Programm ein lauffähiges
Programm ergibt.
Das C-Programm ist damit unbelastet von den umfangreichen Programmteilen, die
nichts anderes tun, als dem Benutzer eine grafische Bedienungsoberfläche
mit Fenstern, Dialogboxen, Mausklicks usw. anzubieten.
Dadurch wird die Struktur der 18 Programme und der zugrunde liegenden
250 Algorithmen leicht erkennbar. Das Experimentieren, Erweitern und
Verändern der Algorithmrn wird einfacher.
Die 250 statistischen Algorithmen sind in mehreren Modulen
zusammengefasst.
Die Module haben die Namen "up_algorith1.c"
bis "up_algorith9.c"
Das 1. Modul enthält vorwiegend Prozeduren zur Ausgabe
der in den Algorithmen
errechneten Ergebnisse, z.B. die Prozedur
"tabellen_ausgabe_2komma"
Sie gibt eine 2-dimensionale Tabelle im double-Format mit
2 Kommastellen aus.
Das 3. Modul enthält vorwiegend Prozeduren zur Berechnung
einer Korrelationsmatrix,
zur Regressionanalyse und zum Allgemeinen Linearen
Programm
Hier ist nun die Liste aller Funktionen, wie sie in den 6
Modulen enthalten sind.
----------------------------- up_algorith1.c
-------------------------------
newline gibt x Zeilenvorschuebe
aus
blank erzeugt x Blanks
repeat wiederholt in einer
Zeile ein Zeichen
repeat_o_cr wiederholt ein Zeichen ohne
abschliessendes carriage return
zerlege_text_in_zeilen zerlegt einen Text der x cr enthaelt in
x Zeilen
meldung Ausgabe einer
Fehlermeldung oder Warnumg oder Mitteilung
AlmoStatusmeldung Meldung - nur wenn "Statistische Algorithmen" unter der Almo-Oberfl„che laufen
instring
Einlesen eines Strings aus Datei
ininteger2
Einlesen einer int-Variablen aus Datei
ininteger
Einlesen einer int-Variablen aus Datei
indouble
Einlesen einer double-Variablen
get_int_feld
Einlesen eines Felds von int-Variablen aus Datei
get_int_feld2
Einlesen eines Felds von int-Variablen aus Datei
get_double_feld
Einlesen eines Felds von double-Variablen aus Datei
get_double_matrix
Einlesen einer Rechteck-Matrix von double-Variablen aus Datei neu Almo14
leseDatensatz liest einen ganzen Datensatz
lesqvar ermittelt die diversen
Werte, die ein Variable besitzt und bildet die Werte-Skala
lesqvar2 retourniert Stelle des
Wertes 'w' in der Werte-Skala
hole_obergrenze
Bestimme Werte-Obergrenze der Variablen
var_nr_stellen Ziffernzahl der
Variablen-Nummer einer Analysevariablen
signif_dezstellen fuer Zahl wird Anzahl der signifikanten
Dezimalstellen sowie Feldbreite ermittelt
forma Ausgabe einer Zahl mit
v Stellen vor und d Stellen nach Dezimalpunkt
int_tabellen_ausgabe Ausgabe einer 2-dimensionalen Tabelle
im Integer-Format
tabellen_ausgabe_2komma Ausgabe einer 2-dimensionalen Tabelle im
double-Format mit 2 Kommastellen
tabellen_ausgabe_3komma Ausgabe einer 2-dimensionalen Tabelle im
double-Format mit 3 Kommastellen
matrix_ausgabe_4komma Ausgabe einer Korrelations-Matrix mit
4 Kommastellen
matrix_ausgabe_0komma Ausgabe einer Matrix mit 0
Kommastellen
matrix_ausgabe_nom Ausgabe einer Matrix mit 0 oder 4
Kommastellen. Vorne Dummies der nom. Var, dann quantit.Var
reck_int_matrix_ausgabe_nom Ausgabe einer int-Matrix.
Zeilenvariable: eine nominale. Spaltenvar: mehrere quantitatve
korr_ausgabe_ueberschrift Ueberschrift zur Ausgabe der
Korrelationskoeffizienten fuer 2-dim. Tabelle
korr_ausgabe_ueberschrift_2 Ueberschrift zur Ausgabe der
Korrelationskoeffizienten fuer 2-dim. Tabelle
korr_ausgabe_messniveau Erlaeuterung der Messniveaus der
korrelierten Variablen aus 2-dim. Tabelle
korrausgabe Ausgabe der
Korrelationskoeffizienten aus 2-dim. Tabelle
speicherfehler Melden, dass ein Feld nicht
allokiert werden kann
alloc_char_vec Speicherzuweisung fuer
1-dimensionalen char-Vektor
alloc_int_vec
int-Vektor
alloc_short_vec
short-Vektor
alloc_long_vec
long-Vektor
alloc_double_vec
double-Vektor
alloc_float_vec
float-Vektor
alloc_char_matrix Speicherzuweisung fuer
2-dimensionale char-Matrix
alloc_int_matrix
int-Matrix
alloc_double_matrix
double-Matrix
free_2dim_matrix 2-dimensionale Matrix wieder frei
geben
heapcontrol
bringt eine Meldung bei 'heapfehler'
----------------------------- up_algorith2.c
-------------------------------
equal
Vergleich zweier double Werte mit Standard-Genauigkeit 'ex_eps'
lessequal
Vergleich zweier double Werte: Wenn x kleiner/gleich y
greatequal
Vergleich zweier double Werte: Wenn x groesser/gleich y
fsign
Vorzeichen einer double-Variablen
ffak
Fakultaet von n
gammafunc
Gamma-Funktion fuer n=1,2,3,4,....
prob
Signifikanz von F, t, Chi-Quadrat, z (approximativ)
exaktprob
Signifikanz von F, t, Chi-Quadrat, z (exakt)
probinvers
ermittelt F-Wert, t-, Chi-Quadrat-, z-Wert fuer einzugebende
Irrtumswahrscheinlichkeit p
normalflaeche
Flaeche unter der Standard-Normalverteilung, bzw. y-Wert der Ogive
normal_invers
Inverse der Normalverteilung
normalordinate
Ordinate der Normalverteilung
zwert
ermittelt z-Wert fuer einzugebende Flaeche unter der
Standard-Normalverteilung
zwert2
ermittelt z-Wert fuer einzugebende Flaeche unter der
Standard-Normalverteilung
hbinom
Hilfsroutine fuer 'binomkoeff'
binomkoeff
berechnet Binomialkoeffizient n ueber k
linsort
sortiert die Elemente eines Vektors
mittelwert
berechnet Mittelwerte und Standardabweichungen
rechne_perzentil
ermittelt Median, Quartile, Perzentile (Unterprog zu 'perzentil')
vertrau_intervall
Vertrauensintervalle fuer eindimensionale Haeufigkeitsverteilung
schiefe
Schiefe und Exzess einer eindimensionalen Haeufigkeitsverteilung und
deren Signifikanz
geom_harmon_mittel
geometrisches und harmonisches Mittel
schreibe_skalenwert
Skalenwert der Auspraegung schreiben
normaltransform
Variable auf normalverteilte z-Werte transformieren
smirnov gibt zweiseitige Wahrschnlk. aus, dass
Kolmogorov-Smirnov's D signifikant
kolmo_smirnov_1
Kolmogorov-Smirnov-1-Stichproben-Test fuer Normal- bzw.
Gleich-Verteilung
chi_quad_anpass_test
Chi-Quadrat-Anpassungstest auf Normal- und Gleichverteilung
haeufig
ermittelt eindimensionale Haeufigkeiten und viele Koeffizienten
zweiDimTabelle
erzeugt eine 2-dimensionale Tabelle
randsumme
erzeugz hintere und untere Randsumme fuer 2-dimensionale Tabelle
chi_quadrat
Chi-Quadrat-Test
tausche
1. und 2. Zeile einer 2*2-int-Matrix vertauschen (Unterprog fuer exakten
Fisher-Test)
exakt_Fisher
exakter Fisher-Test fuer 2*2-Tabelle
faclog
errechnet log10 von Fakultaet n; wird fuer 'freemam_halton' verwendet
freeman_halton
exakter Freeman-Halton-Test fuer 2-dimensionale Tabellen
haldane_dawson
Haldane-Dawson-Test
kolmo_smirnov_2
Kolmogorov-Smirnov-2-Stichproben-Test
bestimme_U
Hilfsprog fuer 'Exhaust' und 'Uleman'
Exhaust
Hilfsprog fuer 'Uleman'
Uleman
Uleman's exakter Rangaufteilungstest
phi_korr
Phi-Korrelationskoeffizient fuer 2*k- bzw. k*2-Tabelle
konting_koeff_C
Kontingenzkoeffizient C fuer 2-dimensionale Tabelle
Cramers_V
Cramer's V-Korrelation fuer
2-dimensionale Tabelle
Tschuprows_T
Tschuprows T-Korrelation fuer
2-dimensionale Tabelle
gans_gand
Unterprogramm zu 'gamma_korr' und 'tau_b_korr'
gamma_korr
Gamma-Korrelationskoeffizient fuer 2-dimensionale Tabelle
tau_b_korr
tau-b-Korrelationskoeffizient fuer 2-dimensionale Tabelle
eta_korr_2dim
Eta-Korrelationskoeffizient fuer 2-dimensionale Tabelle
rho_und_a_r_korr_2dim
Unterprog zu 'r_korr_2dim' und 'rho_korr_2dim'
signifikanz_r
Signifikanz-Approximation fuer r
rho_korr_2dim
rho-Korrelationskoeffizient fuer 2-dimensionale Tabelle
r_korr_2dim
Produkt-Moment-Korrelation r, r(pbis) und phi fuer 2-dimensionale
Tabelle
nichtlinearitaet
Test auf Nichtlinearitaet
gross_gamma
Berrechnung der Gross-Gamma-Korrelation
dummyVariable wandelt nominale Variable in Dummies
dummyVariable2 Bildung von Dummies fuer nominale Variable
und deren Interaktionen
dummytest testet ob Dummies richtig gebildet wurden
gruppen_mittwert
Mittelwerte von quantit. Var. je Ausprägung einer nominalen Var. t-Test auf
Mittelwertsdifferenz
auspraeg_kombin Bildet die Matrix der
Auspraegungskombinationen
=Haeufigkeiten je Auspraegunskombination von nominalen Variablen
=Mittelwerte von quantit. Variablen je Auspraegungdkombination mehrerer
nominaler Variablen
----------------------------- up_algorith3.c
Allgemeines lineares Modell ------------------------
signifikanz_von_r
Signifikanz 100*(1-p) des Korr.koeff. r
signifikanz_von_korrmat
Signifikanz 100*(1-p) der Korr.koeffizienten in der Korrelationsmatrix
bilde_neu_analyseVarZahl Ermittelt Zahl der Analysevariablen,
wenn nominale Variable in Analyse
bilde_neu_analyseVarNr
Bildet Vektor der Variablennummern der Analysevariablen, wenn nominale
Var in Analyse
korr_matrix
Korrelationsmatrix; mit Kein-Wert-Behandlung durch "Vollständiges
Ausscheiden"
korr_matrix_2
Korrelationsmatrix; mit Kein-Wert-Behandlung durch "Paarweises
Ausscheiden"
streuungs_matrix_1 Streuungsmatrix mit quantit. u. nominalen Var. Kein-Wert-Behandlung:"Vollständiges
Ausscheiden".
Möglich: Kreuzprodukte-,Quadratsummen-,Kovarianz-,Korrelationsmatrix
streuungs_matrix_2 Streuungsmatrix mit quantit. u. nominalen Var. Kein-Wert-Behandlung:"Paarweises
Ausscheiden".
Möglich: Kreuzprodukte-,Quadratsummen-,Kovarianz-,Korrelationsmatrix
determinante
Determinante einer symmetrischen Matrix
lineareAbhaeng
Prüft ob in einer Matrix eine lineare Abhaengigkeit vorhanden ist
acminvers
Inversion einer symmetrischen Matrix
invers
Inversion einer nicht-symmetrischen Matrix
regression
multiple lineare Regression
regress_koeff Berechnet Regressionskoeff. bzw. Effekte und verschieden Koeffiz. für Allg. Lin.
Modell
konstante
ermittelt die Regressionskonstante fuer das Allgemeine Lineare Modell
umspeich_teile
Teile der Matrix 'mat' in eine andere Matrix 'mat2' umspeichern
varianzanalyse
Varianzanalyse mit beliebig vielen unabhaengigen nominalen Variablen
allg_lin_modell Allgemeines Lineares Modell:
Regressions-, Varianz-, Kovarianz-Analyse
----------------------------- up_algorith4.c
Faktoren- Korrepondenz-Analyse -----------------
outvektor
Ausgabe eines
double-Vektors
out_fakt_lad_matrix Ausgabe der Faktorladungsmatrix
out_rotations_matrix Ausgabe der Rotationmatrix
fabsmax ermittelt den absolut
groessten Wert aus einem Vektor
mamult Matrixmultiplikation
mamult_trans Matrixmultiplikation C = A'
* A
abs_linsort sortiert ein Feld nach
absteigender absoluter Groesse
qrs Eigenwerte und
Eigenvektoren einer symmetrischen Matrix
vonMisesEig Eigenwerte und Eigenvektoren einer symmetrischen Matrix mit v. Mises-Verfahren
eigenvektor 1.Eigenwerts und
Eigenvektor nach dem v.Mise'schen Iterationsverfahren
eig_groesser_eins Zahl der Eigenwerte > 1.0
bestimmen
kommunalitaet Ermittelt Kommunalitaeten-Schaetzungen
pruef_kommunalitaet prueft, ob bei
Kommunalitaeten-Iteration Werte > 1 auftreten
faktorwertkoeff Faktorwert-Koeffizienten fuer
extrahierte Faktoren berechnen
faktoranalyse Faktorenanalyse quantitativer
Variabler
varimax rechtwinklige Rotation
nach dem Varimax-Verfahren
quartimin schiefwinklige Rotation
nach dem Quartimin-Verfahren
winkel Berechnung des
Rotationswinkels
faktorvarianz Varianz je Faktor
mca_matrix die Streuungsmatrix wird
fuer MCA multiple Korrepondenzanalyse skaliert
korrespondenzanalyse MCA multiple Korrepondenzanalyse
aehnl_konfirmfak
Aehnlichkeit von Faktorladungsmatrix A mit Matrix Z
konfirmator_faktanalyse
konfirmatorische Faktorenanalyse (recht- und schiefwinklig)
----------------------------- up_algorith5.c
Statistische Tafelwerte ------------------------
gammafunc Gamma-Funktion
nlog_gamma Logarithmus der
Gamma-Funktion
binomial F-Transformation fuer
Binomialtest
binomglieder Binomialglieder
gamain Unterprogramm fuer
'invers_chi'
invers_chi Inverse der
Chi-Quadrat-Verteilung
r_unten unterer Konfidenzbereiche
fuer r
r_oben oberer Konfidenzbereiche
fuer r
wertaus ermittelt ueber
'probinvers' F-, t-, z-,
Chi-Quadrat-Wert und gibt Ergebnis aus
p_ausgabe Ausgabe der p-Werte
probaus
ermittelt ueber
'exaktprob' F-, t-, z-,
Chi-Quadrat-Wert und gibt Ergebnis aus
hhf Hilfsfunktion fuer
Funktion 'noncentral_t'
noncentral_t Nichtzentrale t-Verteilung
exp_error prueft ob Fehler bei
exp-Funktion
noncentral_f Nichtzentrale F-Verteilung
noncentral_chi Nichtzentrale
Chi-Quadrat-Verteilung
noncent-distrib Nichtzentrale F-, t-, z-,
Chi-Quadrat-Verteilung
teststaerke
Teststaerke (power) von
F,t,z,Chi-Quadrat
ogive_x_start ermittelt Startpunkt der
Pseudo-Integration fuer Ogive
ogive_y_wert gegeben x-Wert der Ogive,
gesucht y-Wert (Ordinate)
ogive_x_wert gegeben y-Wert der Ogive,
gesucht x-Wert
fisher_z_transform Fishers Z-Transformation des
Korrelationskoeffiziwnten r
tafelwert ermittelt die statistischen
Tafelwerte
----------------------------- up_algorith6.c
Nicht-parametrische Verfahren --------------------
rearrange
Upro zu Quicksort-Algorithmus
quick1
Upro zu Quicksort-Algorithmus
qqsort
Upro zu Quicksort-Algorithmus
comp
Upro zu Quicksort-Algorithmus
swap
Upro zu Quicksort-Algorithmus
count_U Rekursive Prozedur fuer Man-Whitney
U-Test
pwert_kombi
ermittelt Gesamtzahl aller moeglichen Kombinationen und
Wahrscheinlichkeit p
p_fuer_U Upro fuer Man-Whitney U-Test
ausgabe_exakt_U
Ausgabe der Ergebnisse aus exaktem U-Test
ausgabe_U
Ausgabe verschiedener Ergebnisse aus U-Test
konprob
ermittelt die Signifikanz von Kontrasten bei Kruskal-Wallis H-Test
sortiere
Variable sortieren
U_und_H_Test ruft die vorausgehenden Upros auf und rechnet den U- und H-Test
----------------------------- up_algorith7.c Logit- Probit-Analyse -----------------------------
effekt_letzte_dummy berechnet Effekt der letzten Dummy bei 1,0,-1 Kodierung
fehl_effekt_letzte_dummy berechnet Standardfehler des Effekts der letzten
Dummy bei 1,0,-1 Kodierung
cov_kon_letzte_dummy berechnet Kovarianz für Kontraste der letzten Dummy bei
1,0,-1 Kodierung
ausgabe_logit Ausgabe der Regressionskoeffizienten etc. bei Logit-Modell
ausgabe_probit Ausgabe der Regressionskoeffizienten etc. bei Probit-Modell
koef_bezeichnung Bezeichnung der Koeffizienten
potu_inverse Inversion einer nicht-symetrischen quadratischen Matrix
roh_logitana Matrix der Haeufigkeiten in abhaeng. nominalen Var. und
Designmatrix
mulog p,f und inf im Logit-modell (p=Matrix der reproduzierten
Wahrscheinlichkeiten für alle n Objekte)
mstat
treffer Trefferhaeufigkeit ermitteln
kontraste_logprob Vergleiche (Kontraste) der Auspraegungen der unabhaeng.
nominalen Variablen
orprobit p,f und inf im
Probit-modell
logit_probit_upro Haupt-Unterprogramm zur Berechnung der Logit- und
Probit-Analyse
logit_probit Hauptprogramm
----------------------------- up_algorith8.c Kanonische Diskriminanzanalyse ---------
umspeichern Eine Submatrix aus einer Matrix A herausl”sen und in Matrix B
geben
cholinvers Inverse der Cholesky-Matrix
standgewicht kanonischen Gewichtszahlen standardisieren
regresskoeff Ermittlung der Regressionskoeffizienten beta=inv(b)*wxy
fehlstreuung Ermittlung der Fehlerstreuungsmatrix wm=wyy-wxy*beta
within_group Aufruf von 'regresskoeff' und 'fehlstreuung'
f_pillai2 F-Wert-Transformation von Pillais Spur
kanon_diskrim kanonische Diskriminanzanalyse
----------------------------- up_algorith9.c Clusteranalyse -----------------------
stellen ermittelt Zahl der Stellen einer Ganzzahl
iout Ausgabe einer Integerzahl
dout Ausgabe einer double-Zahl im F-Format n1.n2 mit anschliessend nb blanks
zz_wert berechnet z-Wert
zeile_ausgabe Unterprogramm zur Ausgabe einer Zeile aus Matrizen
datmat_lesen Lesen der Daten aus einer Datenmatrix
datmat_schreiben Schreiben der Daten in Datenmatrix
startwerte Berechnung der Startwerte
mat_aus Unterprogramm zur Ausgabe einer Matrix
matrix_clustdistanz Ausgabe der Matrix der Distanzen zwischen den Clustern
clustatistiken Clusterstatistiken
weuklid Berechnen der Mahalonobisdistanz
mini_distanz_verfahr Minimaldistanzverfahren
clusterzentren_neu berechnet neue Clustermittelwerte, Clustervarianzen
h0krit Berechnen des Kriteriums für Nullmodell
clustdistanz Distanzen zwischen den Clustern
Fwert F-Wert für eine Clusterloesung
eta2 ETA**2 für eine Clusterloesung
varstat verschiedene Statistiken für Variablen
ss_within Streuung innerhalb der Cluster
gewicht_aus Ausgabe der Variablen-Gewichtung
Objekt_zu_Cluster Ausgabe der Clusterzugehoerigkeit der Objekte
kmeans_clusteranalyse Hauptprogramm (das die obigen Unterprogramme aufruft