Italia
Fonte/ Codesnippets

Skalennormierung per die Empirische Sozialforschung: Die Z-Transformation

 

p.specht

Sozialforscher versuchen Thesen wie "Angehörige bildungsferner Schichten oder aus Gebieten mit geringer Kaufkraft werden selten Generaldirektor" statistisch zu belegen. Damit moderne Clusterungs- und Korrelationsverfahren aber funktionieren, müssen erst die Umfrageskalen (Was bedeutet bildungsfern, was kaufkraftarm) miteinander wertmäßig vergleichbar gemacht werden. Als Verfahren hierzu wird gerne die Z-Spaltennormierung herangezogen, die ich testhalber Schritt per Schritt samt Probe zum besseren Nachvollziehen dargestellt habe.
Windowtitle "Spaltenweise z-Normierung zur Skalen-Vergleichbarmachung der [n,m]-Erfassungsmatrix einer Umfrage"
'(Copyleft) 2015-04 by P. Specht, Wien. Ohne jede Gewähr!
Windowstyle 24:font 2
Window 0,0-%maxx,%maxy
' Dimension der gewünschten Testmatrix:
Var n&=5:var m&=5
Declare M![n&-1,m&-1],sum!,s![m&-1],Xm![m&-1],D![n&-1,m&-1],txt$
Declare Q![n&-1,m&-1],qs![m&-1],v![m&-1],sigma![m&-1],i&,j&,Z_sp![n&-1,m&-1]
Declare p![m&-1],pz![m&-1],ps![m&-1]'Probevektoren
txt$="     ["+str$(n&)+","+str$(m&)+"]-Testmatrix M, mit Zufallswerten belegt"
Randomize

whileloop 0,n&-1:i&=&Loop

    whileloop 0,m&-1:j&=&Loop

        M![i&,j&]=rnd(10000)'rnd()*10^(rnd(53)-18)

    endwhile

endwhile

Probe2:
print:print txt$;

whileloop 0,n&-1:i&=&Loop

    whileloop 0,m&-1:j&=&Loop

        print tab(j&*27);format$("%g",M![i&,j&]),

    endwhile

endwhile

print
waitinput
txt$="     Zeilenvektor s[] der Spaltensummen von M[,]"

whileloop 0,m&-1:j&=&Loop

    sum!=0

    whileloop 0,n&-1:i&=&Loop

        sum!=sum!+M![i&,j&]

    endwhile

    s![j&]=sum!

endwhile

print:print txt$;

whileloop 0,m&-1:j&=&Loop

    print tab(j&*27);format$("%g",S![j&]),

endwhile

print
waitinput
txt$="     Zeilenvektor Xm[] der Spaltenmittelwerte"

whileloop 0,m&-1:j&=&Loop

    xm![j&]=S![j&]/n&

endwhile

print:print txt$;

whileloop 0,m&-1:j&=&Loop

    print tab(j&*27);format$("%g",xm![j&]),

endwhile

print
waitinput
txt$="     Matrix D[,] der auf Spaltenmitten zentrierten Spalten"

whileloop 0,m&-1:j&=&Loop

    whileloop 0,n&-1:i&=&Loop

        D![i&,j&]=M![i&,j&]-xm![j&]

    endwhile

endwhile

print:print txt$;

whileloop 0,n&-1:i&=&Loop

    whileloop 0,m&-1:j&=&Loop

        print tab(j&*27);format$("%g",D![i&,j&]),

    endwhile

endwhile

print
waitinput
txt$="      Probe: Summe der Zentrierten Werte muss fast 0 sein!"

whileloop 0,m&-1:j&=&Loop

    sum!=0

    whileloop 0,n&-1:i&=&Loop

        sum!=sum!+D![i&,j&]

    endwhile

    p![j&]=sum!

endwhile

print:print txt$;

whileloop 0,m&-1:j&=&Loop

    print tab(j&*27);format$("%g",p![j&]),

endwhile

print
waitinput
txt$="     Matrix Q der Quadrate der (Spaltenmittelwert-zentrierten) Werte D"

Whileloop 0,m&-1:j&=&Loop

    whileloop 0,n&-1:i&=&Loop

        Q![i&,j&]=sqr(D![i&,j&])

    endwhile

endwhile

print:print txt$;

whileloop 0,n&-1:i&=&Loop

    whileloop 0,m&-1:j&=&Loop

        print tab(j&*27);format$("%g",Q![i&,j&]),

    endwhile

endwhile

print
waitinput
txt$="     Zeilenvektor qs[] der Spaltensummen von Q[,]"

whileloop 0,m&-1:j&=&Loop

    sum!=0

    whileloop 0,n&-1:i&=&Loop

        sum!=sum!+Q![i&,j&]

    endwhile

    qs![j&]=sum!

endwhile

print:print txt$;

whileloop 0,m&-1:j&=&Loop

    print tab(j&*27);format$("%g",qs![j&]),

endwhile

print
waitinput
txt$="     Zeilenvektor v[] der Spaltenvarianzen von D[,]"

whileloop 0,m&-1:j&=&Loop

    v![j&]=qs![j&]/n&

endwhile

print:print txt$;

whileloop 0,m&-1:j&=&Loop

    print tab(j&*27);format$("%g",v![j&]),

endwhile

print
waitinput
txt$="     Zeilenvektor sigma[] der Spalten-Standardabweichungen von D[,]"

whileloop 0,m&-1:j&=&Loop

    'case sigma![j&]<>0
    sigma![j&]=sqrt(v![j&])

endwhile

print:print txt$;

whileloop 0,m&-1:j&=&Loop

    print tab(j&*27);format$("%g",sigma![j&]),

endwhile

print
waitinput
txt$="     Ergebnismatrix Z_sp der spaltenweise z-normierten Werte der Originalmatrix M"

Whileloop 0,m&-1:j&=&Loop

    whileloop 0,n&-1:i&=&Loop

        if sigma![j&]<>0

            Z_sp![i&,j&]=D![i&,j&]/Sigma![j&]
            'else
            '  print "********** Sigma[";str$(j&);"]=0 ignored! ***************":beep:waitinput
            '  Z_sp![i&,j&]=D![i&,j&]

        endif

    endwhile

endwhile

:::::::::::::::::::cls
print:print txt$;

whileloop 0,n&-1:i&=&Loop

    whileloop 0,m&-1:j&=&Loop

        print tab(j&*27);format$("%g",Z_sp![i&,j&]),

    endwhile

endwhile

print
waitinput
txt$="      Probe 1: Summe der Z-normierten Spaltenwerte muss nahe 0 sein!"

whileloop 0,m&-1:j&=&Loop

    sum!=0

    whileloop 0,n&-1:i&=&Loop

        sum!=sum!+Z_sp![i&,j&]

    endwhile

    pz![j&]=sum!

endwhile

print:print txt$;

whileloop 0,m&-1:j&=&Loop

    print tab(j&*27);format$("%g",pz![j&]),

endwhile

print
waitinput
print
print "     Probe 2: Die Standardabweichung der Spaltenwerte von Z_sp[,] muss 1 ergeben."
print "     Dazu wird Z_sp in M geladen und das Programm nochmals gestartet!            "
waitinput

whileloop 0,m&-1:j&=&Loop

    whileloop 0,n&-1:i&=&Loop

        M![i&,j&]=Z_sp![i&,j&]

    endwhile

endwhile

txt$="     Die ["+str$(n&)+","+str$(m&)+"]-Testmatrix M ist nun mit den Z-normierten Werten belegt."
cls
GOTO "Probe2"
END
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
19.05.2021  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

882 Views

Untitledvor 0 min.
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
R.Schneider04.06.2021
Michael W.28.05.2021
Di più...

Themeninformationen

Dieses Thema hat 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie