Seite 1 von 2

Standardisierung von Daten in R

Verfasst: Di Apr 14, 2020 9:19 pm
von zahni1997
Hallo,

ich möchte gerne zwei Korrelationen aneinander anpassen mittels z-Transformation. Allerdings sollen die Werte weiterhin im Bereich -1 bis +1 bleiben.

Gibt es hier Tipps wie ich dies am besten hinbekomme? Bisher hatte ich an unscale gedacht... :?:

Vielen Dank im Voraus!

Re: Standardisierung von Daten in R

Verfasst: Di Apr 14, 2020 10:36 pm
von EDi
Allerdings sollen die Werte weiterhin im Bereich -1 bis +1 bleiben.
Du willst also [-Inf, Inf] nach [-1, 1] abbilden? Zumindest verstehe ich den Rest nicht... (bitte ein Beispiel posten).

Hier ein Beispiel:

Code: Alles auswählen

set.seed(1234)
x <- rnorm(100, mean = 0, sd = 10)
hist(x)

xs <- scales::rescale(x, c(-1, 1))
hist(xs)


Re: Standardisierung von Daten in R

Verfasst: Fr Apr 17, 2020 2:54 pm
von zahni1997
Also ich möchte meinen Datensatz (Korrelationen) skalieren. Diese skalierten Korrelation dürfen nur imm Bereich zwischen -1 und 1 liegen.

Ich probiere es nochmal mit den Grenzen!

Re: Standardisierung von Daten in R

Verfasst: Fr Apr 17, 2020 3:55 pm
von bigben
Ich verstehe nicht, was mit Skalieren von Korrelationen gemeint ist und ich kenne auch keine Korrelationsmaße, die nicht von selbst zwischen -1 und 1 liegen.

LG,Bernhard

Re: Standardisierung von Daten in R

Verfasst: Fr Apr 17, 2020 6:31 pm
von student
Hallo zahni,

denkst Du an eine Korrelationsmatrix? Hier ist eine von meinem Lieblingsdatensatz "Rotwein":

Code: Alles auswählen

> round(cor(Rotwein), digits = 3)
                     fixed.acidity volatile.acidity citric.acid residual.sugar chlorides free.sulfur.dioxide total.sulfur.dioxide density     pH sulphates alcohol quality
fixed.acidity                1.000           -0.256       0.672          0.115     0.094              -0.154               -0.113   0.668 -0.683     0.183  -0.062   0.124
volatile.acidity            -0.256            1.000      -0.552          0.002     0.061              -0.011                0.076   0.022  0.235    -0.261  -0.202  -0.391 <<
citric.acid                  0.672           -0.552       1.000          0.144     0.204              -0.061                0.036   0.365 -0.542     0.313   0.110   0.226 <
residual.sugar               0.115            0.002       0.144          1.000     0.056               0.187                0.203   0.355 -0.086     0.006   0.042   0.014
chlorides                    0.094            0.061       0.204          0.056     1.000               0.006                0.047   0.201 -0.265     0.371  -0.221  -0.129
free.sulfur.dioxide         -0.154           -0.011      -0.061          0.187     0.006               1.000                0.668  -0.022  0.070     0.052  -0.069  -0.051
total.sulfur.dioxide        -0.113            0.076       0.036          0.203     0.047               0.668                1.000   0.071 -0.066     0.043  -0.206  -0.185
density                      0.668            0.022       0.365          0.355     0.201              -0.022                0.071   1.000 -0.342     0.149  -0.496  -0.175
pH                          -0.683            0.235      -0.542         -0.086    -0.265               0.070               -0.066  -0.342  1.000    -0.197   0.206  -0.058
sulphates                    0.183           -0.261       0.313          0.006     0.371               0.052                0.043   0.149 -0.197     1.000   0.094   0.251 <
alcohol                     -0.062           -0.202       0.110          0.042    -0.221              -0.069               -0.206  -0.496  0.206     0.094   1.000   0.476 <<
quality                      0.124           -0.391       0.226          0.014    -0.129              -0.051               -0.185  -0.175 -0.058     0.251   0.476   1.000

Wenn Du von
ich möchte gerne zwei Korrelationen aneinander anpassen mittels z-Transformation
sprichst, meinst Du das?

Re: Standardisierung von Daten in R

Verfasst: Fr Apr 17, 2020 7:07 pm
von zahni1997

Code: Alles auswählen

a <- t(c(0.25,0.5,0.75,..))
b <- t(c(-0.45,	-0.3,	-0.65,..)) #Korrelation 1
c <- t(c(-0.39,	-0.49, -0.36,..)) #Korrelation 2
Als kleines Beispiel. Das sind meine Korrelation (b und c). Beide beziehen sich auf einen Bezugswert a. Jetzt könnte ich ein Liniendiagramm mit x-Achse die Werte von a und auf der y-Achse die jeweiligen Korrelationen von b und c eintragen. Eine dritte Linie soll ein direkter Vergleich der beiden Korrelationen sein. Daher muss ich diese vorher mit scale() skalieren, so dass b und c die gleichen Werte haben. Bei meinem Datensatz kommen dann allerdings auch Werte außerhalb von -1 und 1 raus. Kann ich dies irgendwie anders beeinflussen?

Vielleicht ist es jetzt verständlicher :? :D

Re: Standardisierung von Daten in R

Verfasst: Fr Apr 17, 2020 7:23 pm
von jogo
Hallo zahni,

ich verstehe das nicht.
Liefere uns doch den Datensatz und zeige uns, was Du da treibst.
(oder einen anderen Datensatz, der aber genau dieses Phänomen zeigt.)
Wo kommen da Werte außerhalb von -1 und 1 raus?

Gruß, Jörg
p.s.:
Also wenn weder Edi noch Bernhard noch ich das verstehen, dann wird es echt eng für Dich. ;)
Diese drei schreiben hier 40% aller Beiträge - darunter sind ganz selten eigene Fragen, meistens sind es die Lösungen oder die notwendige Kommunikation, um die Lösung zu finden.
zahni1997 hat geschrieben: Fr Apr 17, 2020 7:07 pm

Code: Alles auswählen

a <- t(c(0.25,0.5,0.75,..))
b <- t(c(-0.45,	-0.3,	-0.65,..)) #Korrelation 1
c <- t(c(-0.39,	-0.49, -0.36,..)) #Korrelation 2
Als kleines Beispiel. Das sind meine Korrelation (b und c). Beide beziehen sich auf einen Bezugswert a. Jetzt könnte ich ein Liniendiagramm mit x-Achse die Werte von a und auf der y-Achse die jeweiligen Korrelationen von b und c eintragen. Eine dritte Linie soll ein direkter Vergleich der beiden Korrelationen sein. Daher muss ich diese vorher mit scale() skalieren, so dass b und c die gleichen Werte haben. Bei meinem Datensatz kommen dann allerdings auch Werte außerhalb von -1 und 1 raus. Kann ich dies irgendwie anders beeinflussen?

Vielleicht ist es jetzt verständlicher :? :D

Re: Standardisierung von Daten in R

Verfasst: Fr Apr 17, 2020 9:12 pm
von EDi
Also ein z-Wert ist im Bereich [-Inf, Inf], die "Einheit" zu Interpretation wäre "x Standardabweichungen entfernt vom Mittelwert". Hat also nur noch wenig mit Korrelation zu tun nach der Transformation. Deswegen verstehe ich nicht warum du Werte zwischen [-1,1] erwartest :?:

Ein Möglichkeit nach [-1;1] zu transformieren habe ich oben gezeigt, was ist damit?

Re: Standardisierung von Daten in R

Verfasst: Fr Apr 17, 2020 9:14 pm
von bigben
zahni1997 hat geschrieben: Fr Apr 17, 2020 7:07 pmDaher muss ich diese vorher mit scale() skalieren, so dass b und c die gleichen Werte haben. Bei meinem Datensatz kommen dann allerdings auch Werte außerhalb von -1 und 1 raus.
Das grenzt an Dada. Ich glaube, wir haben ein echtes XY-Problem im Sinne von https://de.wikipedia.org/wiki/XY_Problem

Bitte frag uns nicht, wie Du mit scale etwas so normierst, dass es nachher zwischen -1 und 1 liegt sondern erkläre uns, was das für Korrelationen sind und wozu dieser Vergleich zweier Korrelationen dienen soll. Im Zweifel bekommst Du dann über die R-Beratung hinaus auch noch Statistikberatung.

LG,
Bernhard

Re: Standardisierung von Daten in R

Verfasst: Sa Apr 18, 2020 7:21 am
von zahni1997
@EDi : Ja es kann sein, dass dies schon die Lösung war. Habe es schon so an meine AG geschickt.

Unser Projektleiter findet es schöner wenn die Werte zwischen -1 und 1 liegen.

Sobald ich dazu heute komme werde ich ein Beispiel liefern! :) :ugeek: