Heutiger Testraketenstart - Stufe 1a

Heute versuche ich mal das folgende:

RStudio-1.2.5019.exe RStudio - RStudio

Crashkurs Datenanalyse mit R – Sebastian Sauer Stats Blog
Part-of-Speech Tagging with R | Martin Schweinberger

R-3.6.1-win.exe The Comprehensive R Archive Network

Ein kurzer Video-Installationsanleitungs-Gruil:



Ich bin heute auf der Win10Home-Maschine unterwegs, btw..

Beginnen tue ich mit dem Crash-Course - möge ich nicht schon damit crashen!

Wichtig!
Vor der Installation der zwei Packages - wie in dem Crash-Course beschrieben - sollten die RTools installiert sein: https://cran.rstudio.com/bin/windows/Rtools/
(bei mir waren sie es noch nicht, die Warnung kam, aber die Installation lief weiter - toi, toi, toi, daß noch nicht alles vermurkst ist!)

{ die RTools-Installation dauert etwas, da habe ich Gelegenheit, hier zu verkünden, daß ich erst vor einer Stunde in der Badewanne beschlossen habe, heute mal Grundkenntnisse in R zu erwerben - mit Gründen, die z.B. etwas mit dem Python-Modul textrank zu tun haben könnten (sowie aus weiteren, zum Beispiel Spass-Gründen, lol }

So, nach dem Beispiel mit den 7 Brücken geht es gleich ins Eingemachte. So, wie ich sehe, trennen mich von meinen eigentlichen Zielen noch einige, viele Meter. Aber ich werde mich da heute abend noch durchbeissen!
Zunächst versuche ich das Einlesen einer Excel-Tabelle, die ich aus der Wikipedia nach LibreOfficeCalc kopiere. Und zwar eine Auflistung der kognitiven Biase in englischer Sprache, hier eine Grafik von der Wikipedia (für die ich diesen Monat sogar mal gespendet habe - tut dies bitte auch!):

Cognitive bias codex en.svg
By design: John Manoogian III
categories and descriptions: Buster Benson
implementation: TilmannR - This file was derived from: The Cognitive Bias Codex - 180+ biases, designed by John Manoogian III (jm3).png, CC BY-SA 4.0, Link


So, das Importieren hat geklappt, ich weiß jetzt, wo ich hinklicken muss. Was sonst noch zu beachten ist, war mir großteils bereits geläufig. Die Daten sollten in sog. Normalform vorliegen, als tidy-data, die Spaltennamen müssen das. Okay, auch das habe ich verstanden. Weiter kann ich nun leider noch nix mit meiner Tabelle anfangen, aber macht auch nix.

Bis zu den "logischen Variablen" ist alles selbsterklärend, es sind halt ggf. noch einige Einzelschrittchen notwendig, um die importierten (oder sonstwie gewonnenen) Daten für die Weiterverarbeitung aufzubereiten.
Und nun zu den "logischen Variablen":
In R (Studio) ist ein Datensatz namens mtcars implementiert, mit dem fim spielen darf. Gibt fim in der Konsole ein summary(mtcars) ein, erscheint dieses:

> summary(mtcars)
      mpg             cyl             disp             hp             drat      
 Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0   Min.   :2.760  
 1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5   1st Qu.:3.080  
 Median :19.20   Median :6.000   Median :196.3   Median :123.0   Median :3.695  
 Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7   Mean   :3.597  
 3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0   3rd Qu.:3.920  
 Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0   Max.   :4.930  
       wt             qsec             vs               am              gear      
 Min.   :1.513   Min.   :14.50   Min.   :0.0000   Min.   :0.0000   Min.   :3.000  
 1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:3.000  
 Median :3.325   Median :17.71   Median :0.0000   Median :0.0000   Median :4.000  
 Mean   :3.217   Mean   :17.85   Mean   :0.4375   Mean   :0.4062   Mean   :3.688  
 3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:4.000  
 Max.   :5.424   Max.   :22.90   Max.   :1.0000   Max.   :1.0000   Max.   :5.000  
      carb      
 Min.   :1.000  
 1st Qu.:2.000  
 Median :2.000  
 Mean   :2.812  
 3rd Qu.:4.000  
 Max.   :8.000
 
Und eine logische Variable wird (so sagt der Crash-Kurs) z.B. so erzeugt:
mtcars$Spass <- mtcars$hp > 200
 
Dadurch ist am Ende der Tabelle etwas dazugekommen:
 
 Mean   :3.217   Mean   :17.85   Mean   :0.4375   Mean   :0.4062   Mean   :3.688  
 3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:4.000  
 Max.   :5.424   Max.   :22.90   Max.   :1.0000   Max.   :1.0000   Max.   :5.000  
      carb         Spass        
 Min.   :1.000   Mode :logical  
 1st Qu.:2.000   FALSE:25       
 Median :2.000   TRUE :7        
 Mean   :2.812                  
 3rd Qu.:4.000                  
 Max.   :8.000 

Diese Befehlszeile des Kurses
favstats(mtcars$Spass)
generiert leider folgendes:

> favstats(mtcars$Spass)
Fehler in favstats(mtcars$Spass) : konnte Funktion "favstats" nicht finden
 
Offenbar fehlt noch eine Package-Installation. Lassen wir das mal links liegen, den neuen Eintrag hat ja auch die summary-Funktion gezeigt.


Der Befehl
help(mtcars)
zeigt folgendes auf:

mtcars {datasets}R Documentation

Motor Trend Car Road Tests

Description

The data was extracted from the 1974 Motor Trend US magazine, and comprises fuel consumption and 10 aspects of automobile design and performance for 32 automobiles (1973–74 models).

Usage

mtcars

Format

A data frame with 32 observations on 11 (numeric) variables.
[, 1]mpgMiles/(US) gallon
[, 2]cylNumber of cylinders
[, 3]dispDisplacement (cu.in.)
[, 4]hpGross horsepower
[, 5]dratRear axle ratio
[, 6]wtWeight (1000 lbs)
[, 7]qsec1/4 mile time
[, 8]vsEngine (0 = V-shaped, 1 = straight)
[, 9]amTransmission (0 = automatic, 1 = manual)
[,10]gearNumber of forward gears
[,11]carbNumber of carburetors

Note

Henderson and Velleman (1981) comment in a footnote to Table 1: ‘Hocking [original transcriber]'s noncrucial coding of the Mazda's rotary engine as a straight six-cylinder engine and the Porsche's flat engine as a V engine, as well as the inclusion of the diesel Mercedes 240D, have been retained to enable direct comparisons to be made with previous analyses.’

Source

Henderson and Velleman (1981), Building multiple regression models interactively. Biometrics37, 391–411.

Examples

require(graphics) pairs(mtcars, main = "mtcars data", gap = 1/4) coplot(mpg ~ disp | as.factor(cyl), data = mtcars, panel = panel.smooth, rows = 1) ## possibly more meaningful, e.g., for summary() or bivariate plots: mtcars2 <- within(mtcars, { vs <- factor(vs, labels = c("V", "S")) am <- factor(am, labels = c("automatic", "manual")) cyl <- ordered(cyl) gear <- ordered(gear) carb <- ordered(carb) }) summary(mtcars2)

[Package datasets version 3.6.1 Index]
Das ist doch ganz nett als Info. Jetzt bin ich neugierig, was help(favstats) an Output gebiert:

help(favstats)
No documentation for ‘favstats’ in specified packages and libraries:
you could try ‘??favstats’


So etwas in der Art ließ sich ja erwarten. Fein, fein.
Und da das nächste Beispiel auch wieder favstats usedte, habe ich mich schlau gemacht ...aha! mosaic muss als Package nicht nur installiert, sondern auch ausgewählt sein, dann klappert es wie folgt:
help(favstats)
mean_ {mosaic}R Documentation

Aggregating functions

Description

The mosaic package makes several summary statistic functions (like mean and sd) formula aware.

Usage

mean_(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) mean(x, ...) median(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) range(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) sd(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) max(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) min(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) sum(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) IQR(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) fivenum(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) iqr(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) prod(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) sum(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) favstats(x, ..., data = NULL, groups = NULL, na.rm = TRUE) quantile(x, ..., data = NULL, groups = NULL, na.rm = getOption("na.rm", FALSE)) var(x, y = NULL, na.rm = getOption("na.rm", FALSE), ..., data = NULL) cor(x, y = NULL, ..., data = NULL) cov(x, y = NULL, ..., data = NULL)

Arguments

x
a numeric vector or a formula
...
additional arguments
data
a data frame in which to evaluate formulas (or bare names). Note that the default is data = parent.frame(). This makes it convenient to use this function interactively by treating the working environment as if it were a data frame. But this may not be appropriate for programming uses. When programming, it is best to use an explicit data argument – ideally supplying a data frame that contains the variables mentioned.
groups
a grouping variable, typically a name of a variable in data
na.rm
a logical indicating whether NAs should be removed before computing
y
a numeric vector or a formula

Details

Many of these functions mask core R functions to provide an additional formula interface. Old behavior should be unchanged. But if the first argument is a formula, that formula, together with data are used to generate the numeric vector(s) to be summarized. Formulas of the shape x ~ aor ~ x | a can be used to produce summaries of x for each subset defined by a. Two-way aggregation can be achieved using formulas of the form x ~ a + b or x ~ a | b. See the examples.

Note

Earlier versions of these functions supported a "bare name + data frame" interface. This functionality has been removed since it was (a) ambiguous in some cases, (b) unnecessary, and (c) difficult to maintain.

Examples

mean(HELPrct$age) mean( ~ age, data = HELPrct) mean( ~ drugrisk, na.rm = TRUE, data = HELPrct) mean(age ~ shuffle(sex), data = HELPrct) mean(age ~ shuffle(sex), data = HELPrct, .format = "table") # wrap in data.frame() to auto-convert awkward variable names data.frame(mean(age ~ shuffle(sex), data = HELPrct, .format = "table")) mean(age ~ sex + substance, data = HELPrct) mean( ~ age | sex + substance, data = HELPrct) mean( ~ sqrt(age), data = HELPrct) sum( ~ age, data = HELPrct) sd(HELPrct$age) sd( ~ age, data = HELPrct) sd(age ~ sex + substance, data = HELPrct) var(HELPrct$age) var( ~ age, data = HELPrct) var(age ~ sex + substance, data = HELPrct) IQR(width ~ sex, data = KidsFeet) iqr(width ~ sex, data = KidsFeet) favstats(width ~ sex, data = KidsFeet) cor(length ~ width, data = KidsFeet) cov(length ~ width, data = KidsFeet) tally(is.na(mcs) ~ is.na(pcs), data = HELPmiss) cov(mcs ~ pcs, data = HELPmiss) # NA because of missing data cov(mcs ~ pcs, data = HELPmiss, use = "complete") # ignore missing data # alternative approach using filter explicitly cov(mcs ~ pcs, data = HELPmiss %>% filter(!is.na(mcs) & !is.na(pcs)))

[Package mosaic version 1.5.0 Index]
Und nun gelingt auch das:

favstats(mtcars$Spass)
 min Q1 median Q3 max    mean        sd  n missing
   0  0      0  0   1 0.21875 0.4200134 32       0
Warnmeldung:
In fav_stats(x, ..., na.rm = na.rm) : Auto-converting logical to numeric.



Und das:




favstats(mtcars$mpg)
  min     Q1 median   Q3  max     mean       sd  n missing
 10.4 15.425   19.2 22.8 33.9 20.09062 6.026948 32       0
 
 
 Sowie das:
 
favstats(mpg ~ cyl, data = mtcars)
  cyl  min    Q1 median    Q3  max     mean       sd  n missing
1   4 21.4 22.80   26.0 30.40 33.9 26.66364 4.509828 11       0
2   6 17.8 18.65   19.7 21.00 21.4 19.74286 1.453567  7       0
3   8 10.4 14.40   15.2 16.25 19.2 15.10000 2.560048 14       0
 
Was tun wir da? Nun, es nennt sich deskriptive Statistik - so ich denn richtig gelesen habe ... mom! Ja, korrekt, und zwar mit numerischen Variablen.
 
Dasselbe in grün, mit nominellen Variabiliiis:
 
my_cars <- mtcars
> 
> my_cars$cyl_f <- factor(mtcars$cyl)
> my_cars$Spass <- my_cars$hp > 200
> table(my_cars$cyl_f)

 4  6  8 
11  7 14 

Umwandlung der numerischen in nominelle Variablen, mit Kopieren der Tabelle
in eine neue, zwecks Nichtüberschreibung origineller & -inaler Werte . klar.

... und leider ist mir nun die Formatierung im Blogpost verkrümmt worden,
krieg's nicht mehr gradegebogen, drum: Sei hiermit der Teil "Stufe 1"
zu "Stufe 1a" umbenannt, weiter geht's im nächsten Post, "Stufe 1b".
  

Kommentare

Beliebte Posts aus diesem Blog

·

Es brennt.

Bye, bye Nord Stream 2!