Anmelden

Vollständige Version anzeigen : Statistik / r-Studio Hilfe benötigt


Acula
23.04.2019, 09:36
Gibt es hier Leute die sich mit Statistik und r bzw. r-Studio auskennen?
Als erste "einfache" Frage für dein Einstieg hätte ich, was der Unterschied zwischen faktoriellen und numerischen Werten ist. Ich habe in meinem Datensatz folgende Zeilen:
sex age BMI smoke.lev bhd sys dias
1 F 61 21,181 taegl FALSE 101 70

bhd ist demnach ein logischer Wert, da er ja nur TRUE oder FALSE sein kann. sys, dias, age müssten numerische Werte sein. Bei sex, BMI und smoke.lev bin ich mir aber nicht sicher. smoke.lev kann taegl, gelegentl, nie und früher annehmen. sex kann F und M sein.

BananeToWin
23.04.2019, 09:51
Ich bin selbst gerade am lernen (R/R-Studio) und deshalb sowohl Antwortender als auch Fragender.

Ich denke die Frage müsste lauten, welcher Vekrentyp die jeweilige Spalte/Variable ist.

bhd ist ein logischer Vektor (TRUE/FALSE). sys, dias, age sind numerische Vektoren, genauso müsste BMI ein numerischer Vektor sein.

sex und smoke.lev müssten sog. Factors sein. Soll heißen, es sind Vektoren, die nur vordefinierte Werte ("Values", müssen also keine Zahlen sein) enthalten und die benutzt werden, um kategoriale Daten abzuspeichern.

Mithilfe der Funktion typeof(Datensatz$Variable) kannst du dir den Vektortyp anzeigen lassen.

Acula
23.04.2019, 10:04
Ah coole Funktion, die kannte ich nicht. Mit dieser bekomme ich für bhd "logical" für alle anderen sechs Variablen "integer" heraus. Das müsste dann ja numerischen Werten entsprechen.

Danke für deine Hilfe!

BananeToWin
23.04.2019, 10:15
Integer ist numerisch ja. Aber das dürfte ja eigentlich für smoke.lev nicht zutreffen. Die Variable sex könnte man ja auch mit 1 und 2 codieren und hätte dann wieder Zahlen, insofern könnte die auch numerisch sein.

Für smoke.lev hätte ich jetzt "character" erwartet.


(Soweit mir bekannt gibt es 4 Hauptklassen von Vektoren: double und integer (beide numerisch), logical und character)

schnodo
23.04.2019, 10:39
Integer ist numerisch ja. Aber das dürfte ja eigentlich für smoke.lev nicht zutreffen. Die Variable sex könnte man ja auch mit 1 und 2 codieren und hätte dann wieder Zahlen, insofern könnte die auch numerisch sein.

Für smoke.lev hätte ich jetzt "character" erwartet.

Ich kenne mich mir R überhaupt nicht aus, bin aber neugierig. :)

Wenn Du "sex" als indizierten Aufzählungstypen interpretierst, warum sollte das bei "smoke.lev" anders sein? Wäre der Typ character, müsste der Wert dann nicht in Anführungszeichen eingeschlossen sein?

BananeToWin
23.04.2019, 10:50
Wenn Du "sex" als indizierten Aufzählungstypen interpretierst, warum sollte das bei "smoke.lev" anders sein? Wäre der Typ character, müsste der Wert dann nicht in Anführungszeichen eingeschlossen sein?

Wäre natürlich auch bei smoke.lev möglich. Allerdings ist in der ersten Zeile bei smoke.lev das Wort taegl, bei sex steht eine 1 sowie F.

In Anführungszeichen musst du Worte setzten, wenn du sie in Funktionen benutzt. Angezeigt wird der Wert bzw. das Wort aber ohne "" bzw. ' '.

macoio
23.04.2019, 11:24
der Überbegriff zur Unterscheidung heißt Skalenniveau. Mit dem Array Typ factor lassen sich die qualitativen/kategorialen Merkmale (Ordinalskala, Nominalskala) und mit dem metrischen Array die quantitativen/metrischen Merkmale (Intervallskala, Verhältnisskala) abbilden.

BananeToWin
23.04.2019, 11:35
der Überbegriff zur Unterscheidung heißt Skalenniveau. Mit dem Array Typ factor lassen sich die qualitativen/kategorialen Merkmale (Ordinalskala, Nominalskala) und mit dem metrischen Array die quantitativen/metrischen Merkmale (Intervallskala, Verhältnisskala) abbilden.

Da der Raucherstatus ja nur ordinalskaliert ist, müsste der entsprechende Typ doch dann "factor" sein oder?

schnodo
23.04.2019, 12:06
Wäre natürlich auch bei smoke.lev möglich. Allerdings ist in der ersten Zeile bei smoke.lev das Wort taegl, bei sex steht eine 1 sowie F.

Oh, okay, ich dachte die "1" wäre der "row name". Da muss ich mir wohl mal anschauen, wie die einzulesenden Daten zu formatieren sind...

BananeToWin
23.04.2019, 12:49
Oh, okay, ich dachte die "1" wäre der "row name". Da muss ich mir wohl mal anschauen, wie die einzulesenden Daten zu formatieren sind...

Ja du hast recht, sollte wohl der Reihenname sein. Zwei Werte macht ja keinen Sinn. Also müsste sex eigentlich auch factor sein.

macoio
23.04.2019, 13:06
Da der Raucherstatus ja nur ordinalskaliert ist, müsste der entsprechende Typ doch dann "factor" sein oder?

würde ich auch so interpretieren

Acula
23.04.2019, 14:51
Integer ist numerisch ja. Aber das dürfte ja eigentlich für smoke.lev nicht zutreffen. Die Variable sex könnte man ja auch mit 1 und 2 codieren und hätte dann wieder Zahlen, insofern könnte die auch numerisch sein.

Für smoke.lev hätte ich jetzt "character" erwartet.


(Soweit mir bekannt gibt es 4 Hauptklassen von Vektoren: double und integer (beide numerisch), logical und character)

Über die Funktion str bekomme ich das übrigens auch angezeigt.
> str(rki)
'data.frame': 201 obs. of 7 variables:
$ sex : Factor w/ 2 levels "F","M": 1 1 2 2 1 2 2 2 1 2 ...
$ age : int 61 60 20 21 75 55 58 58 28 56 ...
$ BMI : Factor w/ 198 levels "18,564","18,594",..: 29 123 11 25 189 144 77 166 163 170 ...
$ smoke.lev: Factor w/ 5 levels "12Mon","frueher",..: 5 2 5 3 4 2 4 2 4 5 ...
$ bhd : logi FALSE FALSE FALSE FALSE TRUE TRUE ...
$ sys : int 101 124 125 151 183 161 143 146 128 141 ...
$ dias : int 70 73 76 91 95 94 88 85 89 96 ...

BananeToWin
23.04.2019, 14:58
Über die Funktion str bekomme ich das übrigens auch angezeigt.
> str(rki)
'data.frame': 201 obs. of 7 variables:
$ sex : Factor w/ 2 levels "F","M": 1 1 2 2 1 2 2 2 1 2 ...
$ age : int 61 60 20 21 75 55 58 58 28 56 ...
$ BMI : Factor w/ 198 levels "18,564","18,594",..: 29 123 11 25 189 144 77 166 163 170 ...
$ smoke.lev: Factor w/ 5 levels "12Mon","frueher",..: 5 2 5 3 4 2 4 2 4 5 ...
$ bhd : logi FALSE FALSE FALSE FALSE TRUE TRUE ...
$ sys : int 101 124 125 151 183 161 143 146 128 141 ...
$ dias : int 70 73 76 91 95 94 88 85 89 96 ...


Das sieht doch logisch aus. sex und smoke.lev als factors, das würde passen. age, sys, dias als numerische Variable passt auch. Einzig BMI müsste auch numerisch sein. Factor heißt ja, dass nur vordefinierte Werte erlaubt sind. In dem Fall scheinen 198 verschiedene Werte vordefiniert, aber der BMI ist ja eine stetige Variable. Deshalb wäre es wohl sinnvoll, den BMI zu einer numerischen Variable zu machen. Unter anderem würdest du sonst vielleicht eine Fehlermeldung bekommen, wenn du weitere Fälle/Zeilen hinzufügst mit wahrscheinlich neuen Werten für den BMI. Und die sind ja dann nicht vordefiniert.
(Aber wie gesagt, ich bin selbst noch kein Pro)

schnodo
23.04.2019, 16:13
Ja du hast recht, sollte wohl der Reihenname sein. Zwei Werte macht ja keinen Sinn. Also müsste sex eigentlich auch factor sein.

Ah, dann ist es doch nicht so komplex und ich muss nicht recherchieren. :Lachen2:

Einzig BMI müsste auch numerisch sein.

Kann es sein, dass das Komma nicht als Dezimaltrennzeichen erkannt wird und der Parser stattdessen einen Punkt erwartet?