Standardisierung von Daten in R

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

zahni1997
Beiträge: 6
Registriert: So Dez 08, 2019 12:49 pm

Standardisierung von Daten in R

Beitrag 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!
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Standardisierung von Daten in R

Beitrag 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)

Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
zahni1997
Beiträge: 6
Registriert: So Dez 08, 2019 12:49 pm

Re: Standardisierung von Daten in R

Beitrag 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!
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Standardisierung von Daten in R

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
student
Beiträge: 674
Registriert: Fr Okt 07, 2016 9:52 am

Re: Standardisierung von Daten in R

Beitrag 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?
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
zahni1997
Beiträge: 6
Registriert: So Dez 08, 2019 12:49 pm

Re: Standardisierung von Daten in R

Beitrag 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
Zuletzt geändert von jogo am Fr Apr 17, 2020 7:16 pm, insgesamt 1-mal geändert.
Grund: Formatierung verbessert, siehe http://forum.r-statistik.de/viewtopic.php?f=20&t=29
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Standardisierung von Daten in R

Beitrag 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
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Standardisierung von Daten in R

Beitrag 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?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Standardisierung von Daten in R

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
zahni1997
Beiträge: 6
Registriert: So Dez 08, 2019 12:49 pm

Re: Standardisierung von Daten in R

Beitrag 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:
Antworten