Skalierung von Daten

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

Moderatoren: EDi, jogo

Antworten
Joe_Gerner
Beiträge: 16
Registriert: Mi Mai 16, 2018 10:42 am

Skalierung von Daten

Beitrag von Joe_Gerner » Mi Jun 13, 2018 2:31 pm

Hallo,

ich habe eine Tabelle mit 7 verschiedenen Variablen, wobei jede einen anderen Wertebereich besitzt.
Die eine geht von 0 bis 10, die andere von 0 bis 42000 und eine von -10 bis 10.
Gibt es eine Möglichkeit die Daten so zu skalieren das alle im gleichen Wertebereich liegen?

Vielen Dank und viele Grüße

Felix

jogo
Beiträge: 825
Registriert: Fr Okt 07, 2016 8:25 am

Re: Skalierung von Daten

Beitrag von jogo » Mi Jun 13, 2018 3:46 pm

Hallo Felix,

willkommen im Forum!
Joe_Gerner hat geschrieben:
Mi Jun 13, 2018 2:31 pm
ich habe eine Tabelle mit 7 verschiedenen Variablen, wobei jede einen anderen Wertebereich besitzt.
Die eine geht von 0 bis 10, die andere von 0 bis 42000 und eine von -10 bis 10.
Gibt es eine Möglichkeit die Daten so zu skalieren das alle im gleichen Wertebereich liegen?
Ja, es gibt eine. Meiner Meinung nach gibt es viele Möglichkeiten dafür. Die Frage ist, wie soll das Ergebnis konkret aussehen?
Kannst Du uns schon mal den Output von

Code: Alles auswählen

str(DeinDataframe)
in Deiner nächsten Nachricht zeigen?
Bitte schaue Dir auch schon mal die Funktion scale() an:

Code: Alles auswählen

help("scale")
Gruß, Jörg

Joe_Gerner
Beiträge: 16
Registriert: Mi Mai 16, 2018 10:42 am

Re: Skalierung von Daten

Beitrag von Joe_Gerner » Do Jun 14, 2018 11:18 am

Hallo Jörg,

vielen Dank für deine schnelle Antwort.
Also es geht mir darum das alle Variablen im gleichen Wertebereich liegen, zum Beispiel von 0 bis 100

Ich habe jetzt am Skript schon mal gearbeitet und bekomme die Skalierung glaube ich hin. Das Problem ist jetzt nur mir beim Ausführen einer weiteren Funktion angezeigt wird, dass im skalierten Datensatz unendliche oder NA Werte vorhanden sind. Beides habe ich bereits geprüft, konnte aber weder NA noch inf Werte finden. Weiß zufällig Jemand wo der Fehler in meinem Skript ist?

R-Script:
___________________________________________________________________________________________________________________________

library('archetypes')
library('spsurvey') #statistische Auswertung
library('graphics')
library('rcompanion')
library('MASS')
library('scales')

setwd("C:/Users/Desktop/Masterarbeit/R Berechnungen/")

t <-read.csv2("Warburg_auswahl.csv")
str(t)


scale_Gebaeude_Hoehe <-t$Gebaeude_Hoehe/100+1
scale_Bldg_Edges <-t$Bldg_Edges/100+1
scale_Bldg_Surface_wf <-t$Bldg_Surface_wF/100+1
scale_SHAPE_Idx_ISO <-t$Shape_Idx_ISO/100+1
scale_Num_Nb_100 <-t$Num_Nb_100/100+1
scale_MBR_Orientation <- t$MBR_Orientation/100+1

scale_Gebaeude_Hoehe<-round(scale_Gebaeude_Hoehe,2)
scale_Bldg_Surface_wf<- round(scale_Bldg_Surface_wf,2)
scale_Bldg_Edges<- round(scale_Bldg_Edges,2)
scale_Num_Nb_100 <- round(scale_Num_Nb_100,2)
scale_MBR_Orientation<- round(scale_MBR_Orientation,2)
scale_SHAPE_Idx_ISO <- round(scale_SHAPE_Idx_ISO,2)

scale_t <-cbind(scale_MBR_Orientation,scale_Num_Nb_100,scale_SHAPE_Idx_ISO,scale_Bldg_Surface_wf,
scale_Bldg_Edges,scale_Gebaeude_Hoehe)

write.csv2(scale_t,"Warburg_scale.csv")
___________________________________________________________________________________________________________________________
Ausgabe str:
str(t)
'data.frame': 23668 obs. of 6 variables:
$ Gebaeude_Hoehe : num 11.2 7.05 1.53 5.89 9.95 ...
$ Bldg_Edges : int 6 4 4 4 9 4 6 5 7 10 ...
$ Bldg_Surface_wF: num 246.3 81.8 51 149.5 612.6 ...
$ Shape_Idx_ISO : num 0.784 0.317 0.694 0.101 0.783 ...
$ Num_Nb_100 : int 1 30 46 26 46 27 36 35 27 34 ...
$ MBR_Orientation: num 115.3 130.9 49.6 140.5 49.9 ...

___________________________________________________________________________________________________________________________
Eine Stichprobe, sowie ein Screenshot der Fehlermeldung habe ich in den Anhang gepackt.

Ich bin für jeden Hinweis dankbar

Vielen Dank und viele Grüße
Dateianhänge
Fehler.jpg
Fehlermeldung
Warburg_auswahl.csv
Ausgangsdaten,jedoch nur eine kleine Stichprobe davon
(3.81 KiB) 3-mal heruntergeladen

Joe_Gerner
Beiträge: 16
Registriert: Mi Mai 16, 2018 10:42 am

Re: Skalierung von Daten

Beitrag von Joe_Gerner » Do Jun 14, 2018 11:35 am

Hallo Jörg,

ein kurzer Nachtrag, ich habe das Ganze jetzt mal mit der von dir angesprochenen scale Funktion probiert.
Damit umgehe ich das Problem der fehlenden oder unendlichen Werte.
Nur wie bekomme ich es hin das keine negativen Werte beim skalieren herauskommen?
Also mein Wertebereich muss positiv bleiben.

Vielen Dank und viele Grüße

Felix

bigben
Beiträge: 626
Registriert: Mi Okt 12, 2016 9:09 am

Re: Skalierung von Daten

Beitrag von bigben » Do Jun 14, 2018 3:54 pm

Hi!
Joe_Gerner hat geschrieben:
Do Jun 14, 2018 11:35 am
Nur wie bekomme ich es hin das keine negativen Werte beim skalieren herauskommen?
Vielleicht hilft Dir ja folgende Skalierungsfunktion besser als scale:

Code: Alles auswählen

myscale <- function(values, to.min=0, to.max=100){
  mi <- min(values)
  ma <- max(values)
  (values-mi)*to.max/(ma-mi)+to.min
}
Hier ein visuelles Anwendungsbeispiel für die Funktion:

Code: Alles auswählen

start <- runif(10, -5, 30)
ziel <- myscale(start)
plot(rep(1, 10), start, xlim=c(1,2), ylim=c(-10,100))
points(rep(2, 10), ziel)
abline(h=c(0,100), lty=2, col="orange")
for(i in 1:10) arrows(1,start[i], 2, ziel[i])
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

jogo
Beiträge: 825
Registriert: Fr Okt 07, 2016 8:25 am

Re: Skalierung von Daten

Beitrag von jogo » Fr Jun 15, 2018 9:31 am

Hallo Felix,

hier eine Variante von mir:

Code: Alles auswählen

Warburg <- read.csv2("Warburg_auswahl.csv")
# scale(Warburg$Gebaeude_Hoehe)

my.scale <- function(x) {
  mi <- min(x); ma <- max(x)
  (x-mi)/(ma-mi)
}

summary(my.scale(Warburg$Gebaeude_Hoehe))

Warburg[] <- lapply(Warburg, my.scale)
summary(Warburg)
Gruß, Jörg

Joe_Gerner
Beiträge: 16
Registriert: Mi Mai 16, 2018 10:42 am

Re: Skalierung von Daten

Beitrag von Joe_Gerner » Do Jun 21, 2018 2:18 pm

Hallo Bernhard und Jörg,

danke euch für eure schnelle und gute Hilfe :)

viele Grüße

Felix

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast