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.
Damit Sie mit den angebotenen Algorithmen experimentieren
und sie auch verändern können,
haben wir folgendes gemacht:
Die Algorithmen
wurden in das Almo-System eingebunden. Damit sind sie aus Almo
startbar und es
können Daten eingelesen werden und mit den Algorithmen gerechnet werden.
Trotzdem bleiben
die Algorithmen allgemein einsetzbare Prozeduren.
Die statistischen Algorithmen sind in mehreren Modulen
zusammengefasst.
Die Module haben die Namen "up_algorith1.c"
bis "up_algorith...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
-------------------------------
cprint Kontrollausgabe
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 a_meldung - nur wenn
"Statistische Algorithmen" unter der Almo-Oberfl„che laufen
leseZahl Lesen einer Zahl im
Format FREI oder im Excel-Format "tab-delimited" (*.txt)
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
datendurchlauf_1 Bei einem 1. Datendurchlauf wird
die 'werte_skala' der Analysevariablen gebildet
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
nomVarBezeichng Bezeichnung fuer die Dummies der
nominalen Variablen
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
----------------------------- 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 'a_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 'a_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-a_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 'a_Exhaust' und 'a_Uleman'
Exhaust
Hilfsprog fuer 'a_Uleman'
Uleman
a_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 'a_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 'a_r_korr_2dim' und 'a_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 a_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 wurdeb
----------------------------- up_algorith3.c
-------------------------------
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".
Moeglich: Kreuzprodukte-,Quadratsummen-,Kovarianz-,Korrelationsmatrix
streuungs_matrix_2 Streuungsmatrix mit quantit. u. nominalen Var. Kein-Wert-Behandlung:"Paarweises
Ausscheiden".
Moeglich: Kreuzprodukte-,Quadratsummen-,Kovarianz-,Korrelationsmatrix
determinante
Determinante einer symmetrischen Matrix
lineareAbhaeng
Prueft 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. fuer 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
-------------------------------
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
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
quartimin schiefwinklige Rotation
nach dem Quartimin-Verfahren
winkel Berechnung des
Rotationswinkels
faktorvarianz Varianz je Faktor
varimax rechtwinklige Rotation
nach dem Varimax-Verfahren
mca_matrix die Streuungsmatrix wird
fuer MCA multiple Korrepondenzanalyse skaliert
korrespondenzanalyse MCA multiple Korrepondenzanalyse
----------------------------- up_algorith5.c
-------------------------------
gammafunc Gamma-Funktion
nlog_gamma Logarithmus der
Gamma-Funktion
binomial F-Transformation fuer
Binomialtest
binomglieder Binomialglieder
gamain Unterprogramm fuer
'a_invers_chi'
invers_chi Inverse der
Chi-Quadrat-Verteilung
r_unten unterer Konfidenzbereiche
fuer r
r_oben oberer Konfidenzbereiche
fuer r
wertaus ermittelt ueber
'a_probinvers' F-, t-, z-,
Chi-Quadrat-Wert und gibt Ergebnis aus
p_ausgabe Ausgabe der p-Werte
probaus
ermittelt ueber
'a_exaktprob' F-, t-, z-,
Chi-Quadrat-Wert und gibt Ergebnis aus
hhf Hilfsfunktion fuer
Funktion 'a_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
-------------------------------
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
und_H_Test ruft die vorausgehenden Upros auf und rechnet den U- und H-Test
----------------------------- up_algorith7.c -------------------------------
---- laden durch Doppelklick auf --> [".\Algorithmen_in_C\Algorith_C\a_up_algorith7.c"]
----
a_effekt_letzte_dummy berechnet Effekt der letzten Dummy bei 1,0,-1 Kodierung
a_fehl_effekt_letzte_dummy berechnet Standardfehler des Effekts der letzten
Dummy bei 1,0,-1 Kodierung
a_cov_kon_letzte_dummy berechnet Kovarianz fr Kontraste der letzten Dummy bei
1,0,-1 Kodierung
a_ausgabe_logit Ausgabe der Regressionskoeffizienten etc. bei Logit-Modell
a_ausgabe_probit Ausgabe der Regressionskoeffizienten etc. bei Probit-Modell
a_koef_bezeichnung Bezeichnung der Koeffizienten
a_potu_inverse Inversion einer nicht-symetrischen quadratischen Matrix
a_roh_logitana Matrix der Haeufigkeiten in abhaeng. nominalen Var. und
Designmatrix
a_mulog p,f und inf im Logit-modell (p=Matrix der reproduzierten
Wahrscheinlichkeiten fr alle n Personen)
a_mstat
a_treffer Trefferhaeufigkeit ermitteln
a_kontraste_logprob Vergleiche (Kontraste) der Auspraegungen der unabhaeng.
nominalen Variablen
a_orprobit p,f und inf im probit-modell
a_logit_probit_upro Haupt-Unterprogramm zur Berechnung der Logit- und
Probit-Analyse
a_logit_probit Hauptprogramm
----------------------------- up_algorith8.c -------------------------------
---- laden durch Doppelklick auf --> [".\Algorithmen_in_C\Algorith_C\a_up_algorith8.c"]
----
a_umspeichern Eine Submatrix aus einer Matrix A herausl”sen und in Matrix B
geben
a_cholinvers Inverse der Cholesky-Matrix
a_standgewicht kanonischen Gewichtszahlen standardisieren
a_regresskoeff Ermittlung der Regressionskoeffizienten beta=inv(b)*wxy
a_fehlstreuung Ermittlung der Fehlerstreuungsmatrix wm=wyy-wxy*beta
a_within_group Aufruf von a_regresskoeff und a_fehlstreuung
a_f_pillai2 F-Wert-Transformation von Pillais Spur
a_kanon_diskrim kanonische Diskriminanzanalyse
----------------------------- up_algorith9.c -------------------------------
---- laden durch Doppelklick auf --> [".\Algorithmen_in_C\Algorith_C\a_up_algorith9.c"]
----
a_stellen ermittelt Zahl der Stellen einer Ganzzahl
a_iout Ausgabe einer Integerzahl
a_dout Ausgabe einer double-Zahl im F-Format n1.n2 mit anschliessend nb blanks
a_zz_wert berechnet z-Wert
a_zeile_ausgabe Unterprogramm zur Ausgabe einer Zeile aus Matrizen
a_datmat_lesen Lesen der Daten aus einer Datenmatrix
a_datmat_schreiben Schreiben der Daten in Datenmatrix
a_startwerte Berechnung der Startwerte
a_mat_aus Unterprogramm zur Ausgabe einer Matrix
a_matrix_clustdistanz Ausgabe der Matrix der Distanzen zwischen den Clustern
a_clustatistiken Clusterstatistiken
a_weuklid Berechnen der Mahalonobisdistanz
a_mini_distanz_verfahr Minimaldistanzverfahren
a_clusterzentren_neu berechnet neue Clustermittelwerte, Clustervarianzen
a_h0krit Berechnen des Kriteriums fuer Nullmodell
a_clustdistanz Distanzen zwischen den Clustern
a_Fwert F-Wert fr eine Clusterloesung
a_eta2 ETA**2 fr eine Clusterloesung
a_varstat verschiedene Statistiken fr Variablen
a_ss_within Streuung innerhalb der Cluster
a_gewicht_aus Ausgabe der Variablen-Gewichtung
a_Objekt_zu_Cluster Ausgabe der Clusterzugehoerigkeit der Objekte
a_kmeans_clusteranalyse Hauptprogramm (das die obigen Unterprogramme aufruft