Ermitteln Sie mit Hilfe einer nichtmetrischen MDS eine zweidimensionale Konfiguration bayerischer Städte. In R macht das die Funktion isoMDS() des Pakets MASS, das Sie installiert haben sollten und einbinden müssen.
Führen Sie dazu die folgenden Schritte durch:
Erstellen Sie ein leeres Quarto-Dokument und geben Sie ihm die Dateiendung .qmd. Die Datei sollte im Urzustand so aussehen:
Lesen Sie die Daten ein (die Sie auch hier finden); Sie können sie aber auch direkt von ihrem Online-Speicherort einlesen. Kopieren Sie dazu die Adresse des Links. Das Einlesen übernimmt die Funktion read.csv(): bav_cit_data <- read.csv("https://bookdown.org/Armin_E/mds_ex_1/data/bav_cit.csv", row.names = 1, sep=",", dec = ".")
Lassen Sie sich zur Kontrolle die Daten ausgeben. Dazu rufen Sie einfach den Namen der Variablen auf, die auf die Daten verweist.
Erstellen Sie den Code für die folgenden Teilaufgaben:
Wandeln Sie die Daten in eine Matrix um. Das machen Sie mit Hilfe der Funktion as.matrix() folgendermaßen: ihre_daten_variable <- as.matrix(ihre_daten_variable)
Symmetrisieren Sie die Matrix. Der folgende Befehl weist der bestehenden Variablen den Mittelwert aus Matrix und transponierter Matrix zu (das Transponieren übernimmt die Funktion t()). Geben Sie das Ergebnis aus: ihre_daten_variable <- (ihre_daten_variable + t(ihre_daten_variable)) / 2
Führen Sie die MDS mit Hilfe der Funktion isoMDS() durch. Erzeugen Sie eine zweidimensionale Lösung.
Lassen Sie sich den STRESS-Wert ausgeben: ihre_mds_ergebnis_variable$stress
Erzeugen Sie eine Darstellung der Lösung:
plot(mds_result$points, type = "p", main = "Städte in Bayern > 50k",
xlab = "Dimension 1", ylab = "Dimension 2")
text(mds_result$points, labels = rownames(bav_cit_data),
cex = 0.9, pos = 1, font = 1, col = "black")
[Optional] Spielen Sie mit der Funktion abline(), um die Himmelsrichtungen einzuzeichnen.
Call:
lm(formula = Längengrade ~ MDS1 + MDS2, data = data)
Residuals:
Min 1Q Median 3Q Max
-0.14955 -0.04283 0.01695 0.05098 0.09694
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 11.1553056 0.0169408 658.49 < 2e-16 ***
MDS1 -0.0040168 0.0001443 -27.84 2.5e-14 ***
MDS2 -0.0104501 0.0002077 -50.30 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.07187 on 15 degrees of freedom
Multiple R-squared: 0.9956, Adjusted R-squared: 0.995
F-statistic: 1699 on 2 and 15 DF, p-value: < 2.2e-16
# Speichern der Steigung und des Interceptsb0 <-0b1 <-coef(regression_model)[3] /coef(regression_model)[2] # evtl. 2 und 3 vertauschen; ich glaube aber es stimmt so##### unwichtig: nur Aufhübschen ############ kann man auch weglassen# Ermittlung der Ausdehnung der Punkte für k=2xrange <-range(mds_result$points[, 1])yrange <-range(mds_result$points[, 2])# Erweiterung der Ränder, damit Labels nicht abgeschnitten werdenxlim <- xrange +c(-1, 1) *diff(xrange) *0.2ylim <- yrange +c(-1, 1) *diff(yrange) *0.2######################################## # Plot der MDS-Koordinatenplot(mds_result$points, main ="MDS-Lösung mit Regressionsgerade", xlab ="Dimension 1", ylab ="Dimension 2", xlim = xlim, ylim = ylim, asp=1)text(mds_result$points, labels =rownames(data), pos =3)# Hinzufügen der Regressionsgeradeabline(a = b0, b = b1, col ="red", lwd =2)steigung <- b1for (i in1:nrow(data)) {# Koordinaten des Datenpunkts x0 <- data$MDS1[i] y0 <- data$MDS2[i]# Berechnung des Lotfußpunkts (x1, y1) auf die Linie y = steigung * x x1 <- (x0 + steigung * y0) / (1+ steigung^2) y1 <- steigung * x1# Zeichnen des Lotssegments(x0, y0, x1, y1, col ="lightgrey", lwd =2)# Zeichnen des Lotfußpunktspoints(x1, y1, col ="lightgrey", pch =19)}
3 Property Fitting: Breitengrade [sehr optional]
Ermitteln Sie die Breitengrade der Städte und bringen Sie sie in das passende R-Format.
Ändern Sie den R-Code für die Längengrade an den wenigen erforderlichen Stellen ab.
Sie sollten dieses Ergebnis erhalten:
Call:
lm(formula = Breitengrade ~ MDS1 + MDS2, data = data)
Residuals:
Min 1Q Median 3Q Max
-0.14042 -0.04224 0.02269 0.04738 0.08903
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 49.1032500 0.0168650 2911.55 < 2e-16 ***
MDS1 0.0066595 0.0001436 46.37 < 2e-16 ***
MDS2 -0.0023975 0.0002068 -11.59 6.92e-09 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.07155 on 15 degrees of freedom
Multiple R-squared: 0.9934, Adjusted R-squared: 0.9925
F-statistic: 1126 on 2 and 15 DF, p-value: < 2.2e-16
4 Soziale Medien
Ermitteln Sie Ähnlichkeitsdaten zu den verbreitetsten Sozialen Medien (verwenden Sie die Daten aus Ihrer RGT-Erhebung; alternativ aus der VL). Überführen Sie die Ähnlichkeiten in Distanzen. Führen Sie eine MDS mit diesen Daten durch.
Hinweis zur Datenerhebung in der VL: Sortieren Sie unsere Sozialen Medien in drei bis fünf Kategorien (wie Sie das auch Ihre VPs haben machen lassen). Füllen Sie auf iLearn die ensprechenden Tabellen aus. Kopieren Sie die Summen-Tabelle nach Excel (o.ä.) und speichern Sie sie als csv-Datei.