ganz freundliche Bitte um Hilfe - Datensatz

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

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

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von bigben »

Hmmmm - das ist in der Tat nicht ganz einfach. Entweder man unterstellt, dass ein Zusammenhang zwischen Followern und dem Posten von Bildern am gleichen Tag unabhängig vom Account und vom Datum ist. Dann braucht man diese Informationen in der Tabelle nicht und kann einfach eine Korrelation rechnen.

Oder man sagt ehrlicherweise, dass der Account einen Einfluss hat, dann braucht man natürlich die Informationen zum Account. Dann wird aber auch gleich die zugrundeliegende Statistik sehr viel schwieriger und wenn Du schon Probleme mit der einfachen Regressionsanalyse hast, dann weiß ich gerade nicht, wie man diese Zusammenhänge einfach genug abbilden kann.

Es bringt ja jetzt nichts, eine random effects Regression zu rechnen die Du nachher nicht nachvollziehen, nicht erklären und nicht richtig vortragen kannst.

Vielleicht hilft uns da ja noch jemand anderes aus dem Forum?

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Claire
Beiträge: 16
Registriert: Sa Nov 07, 2020 9:07 pm

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von Claire »

Ich bin es noch einmal kurz ...

Den Punkt habe ich da nicht extra eingefügt. Das passiert automatisch, wenn man die Datei über import dataset einliest. habe Dir mal einen Screenshot gemacht.Ich kann aber doch jetzt einfach mit der Datei arbeiten, die ich über Deinen Link eingelesen habe oder ? Kann es passieren, dass R die Datei irgendwann nicht mehr findet, wenn du die Datei Bsp. löschst? kann ich die eingelesende Datei irgednwie in R speichern?

Liebste Grüße

Claire
Dateianhänge
Bildschirmfoto 2020-11-26 um 17.14.14-konvertiert-komprimiert.pdf
(128.14 KiB) 36-mal heruntergeladen
Claire
Beiträge: 16
Registriert: Sa Nov 07, 2020 9:07 pm

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von Claire »

Vielen, vielen Dank lieber Bernhard!

Dann würde ich die Tabelle heute Abend erstmal ummodelieren und die Zeileninformationen weglassen um das mal auszuprobieren...

Ich weiß leider auch nicht wie ich es darstellen soll...:( Meinst du denn, wir kommen so trotzdem auf ein gutes Ergebnis?

Wenn jemand von Euch hier noch eine Idee hat, würde ich mich unbeschreiblich freuen !

Ganz liebe Grüße

Claire
Claire
Beiträge: 16
Registriert: Sa Nov 07, 2020 9:07 pm

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von Claire »

Lieber Bernhard,

Ich habe die Datei jetzt wie besprochen umgewandelt (Datei im Anhang).

ich habe nur irgednwie gar keine Ahnung wie ich hier jetzt einen Zusammenhang zwischen den veränderungen herstellen soll, wenn alle Daten untereinander sind und die Werte (und eine mögliche Veränderung) nicht mehr zugeordnet werden können.

Ich habe mich jetzt auch noch einmal ein bisschen in die Regressionsanalyse eingelesen. Gibt es (in der ersten, großen Datei) wirklich keine Möglichkeit die sich verändernden Zahlen über 14 Tage (mit Einfluss ) von einem Post (Bild oder Story) darzustellen?

Ich wünsche Dir eine gute Nacht.

Liebe Grüße

Claire
Dateianhänge
Follower.Analyse.csv
(8.14 KiB) 40-mal heruntergeladen
bigben
Beiträge: 2784
Registriert: Mi Okt 12, 2016 9:09 am

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von bigben »

Hallo Claire,

wie gesagt, dieses Vorgehen ist nur statthaft, wenn man annimmt, dass die Effekte vom Account unabhängig sind. Dann probier mal die untenstehenden Sache durch und pass das für Dich beste für Dich an:

Code: Alles auswählen

library(ggplot2)

fol <- read.csv2("http://forum.r-statistik.de/download/file.php?id=1216",
                      stringsAsFactors = TRUE)

table(fol$Story, useNA = "ifany")
table(fol$Bild, useNA = "ifany")

# besteht ein Zusammenhang zwischen Followern und Abbonenten?

cor.test(fol$Follower, fol$Abonniert, method = "spearman")

ggplot(fol) +
  geom_point(aes(x=Follower, y = Abonniert))

ggplot(fol) +
  geom_point(aes(x=rank(Follower), y = rank(Abonniert)))

ggplot(fol) +
  geom_boxplot(aes(x=Story, y = Follower))

ggplot(fol[fol$Follower < 50000,]) +
  geom_boxplot(aes(x=Story, y = Follower))

ggplot(fol[fol$Follower < 50000,]) +
  geom_density(aes(x = Follower, fill = Bild), alpha = .3)

wilcox.test(Follower ~ Bild, data = fol)

ggplot(fol) +
  geom_histogram(aes(x = Abonniert)) +
  facet_grid (Bild ~ .)

ggplot(fol) +
  geom_histogram(aes(x = Abonniert)) +
  facet_grid (Story ~ .)

wilcox.test(Abonniert ~ Bild, data = fol)
wilcox.test(Abonniert ~ Story, data = fol)
Eine ganz andere Herangehensweise wäre, die Accounts zu respektieren und dafür aufs Datum zu Pfeifen: In dieser Woche hat der eine Account durchschnittlich soviele Follower und durchschnittlich soviele Bilder gepostet. Wie hängt die durchschnittliche Followerzahl der dreißig Accounts mit der durchschnittlichen Zahl der Bilder zusammen?

Dabei verliert man viel Information aber man muss keine schwierigen Unabhängigkeitsunterstellungen vornehmen. Ich weiß natürlich nicht, was Dir unterrichtet worden ist.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Claire
Beiträge: 16
Registriert: Sa Nov 07, 2020 9:07 pm

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von Claire »

Lieber Bernhard,

Ich hoffe es geht Dir gut.

vielen Dank für Deine Tips! Du bist echt der Wahnsinn! Vielen, vielen Dank!

Ich mache gerade wieder eine R- Nachtschicht und schaue mir gerade all Deine Befehle ganz genau an und versuche selbst rumzuprobieren und
den Hintergrund zu verstehen. Das ist bei mir immer ganz wichtig, weil ich sonst unsicher werde.

Ich google gerade jeden kleinen Teil der Befehle.. :) Außerdem schaue ich, welche Variablentypen ich hier überhaupt habe und was man damit machen kann bzw. welche "Restriktionen" sich dadurch für mich ergeben..Ich hoffe das wird im laufe der Zeit selbstverständlich :)

Als erstes ist mir aufgefallen, dass die Ausreißer mal wieder die Ergebnisse manipulieren, deshalb habe die jetzt auch aus der neuen (fol) Datei rausgenommen.

Darf ich Dir vielleicht noch einmal ein paar Fragen zu Deinen Befehlen stellen?
Habe ich hier alles richtig verstanden?


1) table(fol$Story, useNA = "ifany")

 zeigt mir an, wie viele Stories insgesamt geposten wurden 450 Positionen 119=JA 331=NEIN. Weiter verstehe ich, useNA  verwende nicht vorhandene Faktoren als „falls vorhanden“  die Funktion (useNA = "ifany") nimmt somit alle vorhandenen Standardargumente in die Tabelle? In diesem Fall „ Ja“ oder „nein“.Habe ich das richtig verstanden?


2) Spearman's rank correlation rho

 Ergebnis Datei mit Ausreißer

data: fol$Follower and fol$Abonniert
S = 6770624, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.5541954


 Ergebnis neue Datei ohne Ausreißer

data: fol$Follower and fol$Abonniert
S = 6587664, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.5198055


Warnmeldung:
In cor.test.default(fol$Follower, fol$Abonniert, method = "spearman") :
Kann exakten p-Wert bei Bindungen nicht berechnen


 Was sagt die Warnmeldung aus, die immer angezeigt wird? Macht das Ergebnis dann überhaupt Sinn? Was sagt das RHO aus?

3) ggplot(fol) +
geom_point(aes(x=rank(Follower), y = rank(Abonniert)))


 Was die Rank-funktion ist weiß ich, aber irgendwie ist mir nicht ganz klar was jetzt hier im Bild passiert bzw. wie sich das hier zusammensetzt.

------------------

Deine Idee zu der anderen Herangehensweise hört sich sehr,sehr interessant an. Da würden wir wieder mit der ersten Datei arbeiten, oder? Wie kann ich die Accounts respektieren?

Ich würde es gerne so einfach wie möglich darstellen, weil ich wirklich verstehen möchte, was ich mache und was passiert.

Momentan habe ich irgendwie noch nicht das Gefühl, eine Methode gefunden zu haben, die wirklich eine Veränderung in Followerzahlen darstellt. Das ist aber meine Schuld, weil ich den Datensatz so kompliziert und doof aufgebaut habe.

Kann man sich irgendwie eine Veränderung der Follower am ersten Tag (5.11.2020) im Vergleich zum letzten Tag (19.11.2020) angucken und dann irgendwie darstellen, dass bei den Accounts die eine Veränderung aufweisen, viel gepostet (Bild oder Story) wurde? Oder evtl. die Differenz (Tag 1 Tag 14) der Follower darstellen und kann dabei irgendwie gezeigt werden, dass die different bei denen die gepostet haben größer ist als bei denen die nichts gemacht haben?

Wahrscheinlich kommen wir hier wieder zu Anfangsproblem…

Ich wünsche Dir einen schönen ersten Advent.

Herzliche Grüße

Claire
Dateianhänge
fol.csv
(7.86 KiB) 37-mal heruntergeladen
bigben
Beiträge: 2784
Registriert: Mi Okt 12, 2016 9:09 am

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von bigben »

Hallo Claire,
Claire hat geschrieben: So Nov 29, 2020 2:08 amDarf ich Dir vielleicht noch einmal ein paar Fragen zu Deinen Befehlen stellen?
Habe ich hier alles richtig verstanden?


1) table(fol$Story, useNA = "ifany")

 zeigt mir an, wie viele Stories insgesamt geposten wurden 450 Positionen 119=JA 331=NEIN.
Richtig, Table ist dazu da Tabellen und auch einfache Kreuztabellen zu erstellen. useNA wird benutzt um zu steuern, wann und wie die Anzahl der NA mitangezeigt wird.

Was sagt die Warnmeldung aus, die immer angezeigt wird? Macht das Ergebnis dann überhaupt Sinn? Was sagt das RHO aus?
Die Warnmeldung taucht immer dann auch, wenn mindestens ein beobachteter Wert wiederholt vorkommt. Der p-Wert ist dann nicht mehr exakt aber doch noch eine sehr gute Schätzung. Man kann mit ein wenig mehr Aufwand die Warnung auch weg bekommen. Dich mit diesem Mehraufwand an Code zu belasten solange Du noch gar nicht weißt, ob Du Spearman-Korrelationen nutzen willst erschien mit unangemessen. Es ist eine Warnung aber in diesem Fall ist das Risiko nicht so besonders hoch.

Das "rho" wird in vielen Büchern auch einfach r genannt oder r mit einem tiefgestellten S dahinter. Es ist der Korrelationskoeffizient und dessen Bedeutung liest Du tatsächlich am besten in Deinen Büchern nach. Das ist keine gute Frage für ein Forum. In diesem Fall heißt es, dass die Follower und die Abonniert-Zahlen positiv miteinander verknüpft sind. Je höher das eine umso höher meistens auch das andere.
3) ggplot(fol) +
geom_point(aes(x=rank(Follower), y = rank(Abonniert)))


 Was die Rank-funktion ist weiß ich, aber irgendwie ist mir nicht ganz klar was jetzt hier im Bild passiert bzw. wie sich das hier zusammensetzt.
Wenn Du Dich zur Spearman-Korrelation beliest wirst Du feststellen, dass jedem Wert erstmal ein Rang zugeordnet wird und dann mit dem Rang statt dem Wert weitergerechnet wird. Ich habe das mit den Rängen gezeichnet, weil der Ausreißer das Bild mit den Werten unbrauchbar gemacht hat.

Ich würde es gerne so einfach wie möglich darstellen, weil ich wirklich verstehen möchte, was ich mache und was passiert.
Das ist vernünftig.

Kann man sich irgendwie eine Veränderung der Follower am ersten Tag (5.11.2020) im Vergleich zum letzten Tag (19.11.2020) angucken und dann irgendwie darstellen, dass bei den Accounts die eine Veränderung aufweisen, viel gepostet (Bild oder Story) wurde? Oder evtl. die Differenz (Tag 1 Tag 14) der Follower darstellen und kann dabei irgendwie gezeigt werden, dass die different bei denen die gepostet haben größer ist als bei denen die nichts gemacht haben?
Ok, diese Verlaufskomponente über die Zeit war in meinen bisherigen Antworten nicht drin. Mir war nicht klar, dass die Reise da hingehen soll. Da hast Du Dir Deine Antwort schon selbst gegeben: Die Veränderung ist die Differenz und die berechnet man in R mit dem Minuszeichen.

Code: Alles auswählen

bsp <- data.frame(lecker = gl(2, 10, labels = c("Ja", "Nein")),
                  Tag1 = c(117.8, 137.2, 79.3, 100.4, 78.9, 120.8, 112.8, 88.1, 105.5, 
                           111.9, 100.7, 101.3, 112.3, 104.3, 90.7, 106, 105.1, 91.9, 77.6, 
                           76.2),
                  Tag2 = c(132.6, 132.6, 132.6, 132.6, 132.6, 132.6, 132.6, 132.6, 132.6, 
                           132.6, 93.6, 93.6, 93.6, 93.6, 93.6, 93.6, 93.6, 93.6, 93.6, 
                           93.6))

# So sieht der Beispieldatensatz jetzt aus
print(bsp)

# Differenzbildung zwischen Tag1 und Tag2; Reihenfolge bestimmt das Vorzeichen
bsp$veraenderung <- bsp$Tag2 - bsp$Tag1

summary(bsp$veraenderung) # Im mittel 12.1 zugelegt, maximal 53.7

# Grafiksche Darstellung der Differenz nach Gruppen getrennt
library(ggplot2)
ggplot(bsp) +
  geom_boxplot(aes(x=lecker, y =veraenderung), color = "grey") +
  geom_jitter(aes(x=lecker, y =veraenderung), width = .1) + 
  ylab("Zunahme von Tag 1 zu Tag 2")

# Signifkanztest z. B. mit Rangsummentest / Vorzeichenrangtest
wilcox.test(veraenderung ~ lecker, data = bsp)
wilcox.test(veraenderung ~ lecker, data = bsp)$p.value
Wahrscheinlich kommen wir hier wieder zu Anfangsproblem…
Ich vermute das größte Problem darin, dass Du immer noch nicht weißt, was Du aus statistischer Sicht eigentlich machen willst und hoffst, dass Du über das Ausprobieren der Möglichkeiten von R schon irgendwie darauf kommen wirst. Gleichzeitig Statistik und R lernen zu wollen während man unter Zeitdruck steht ist schwer. Vielleicht wäre es einfacher, R zunächst mal auszublenden und Dir mit Bleistift und Papier klar zu werden, mit welchem statistischen Vorgehen sich Deine Frage beantworten ließe und in einem getrennten Schritt danach dann mit Forumshilfe daran zu gehen, wie man dieses Vorgehen in R umsetzt. Wie gesagt: nur eine Vermutung.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Claire
Beiträge: 16
Registriert: Sa Nov 07, 2020 9:07 pm

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von Claire »

Lieber Bernhard,

Ahhhh!! ich glaube ich bin auf einem guten Weg!!! (Wenn das jetzt wirklich funktioniert, dann tanze ich auf dem Tisch oder schlage ein Rad vor Freude ;) ) Dann habe ich es bald hoffentlich endlich geschafft ;)

Die Beispiele in Deiner " Lecker Datei" habe ich in meiner Datei umgesetzt und dabei hatte ich die Idee, doch einfach eine neue Spalte zu erstellen und einfach alle Posts (Stories & Bilder) zu addieren und somit alle Werte der 14 Tage (pro Account) auf einen zu bringen (wie viele Stories / Bilder wurden insgesamt in den 14 Tagen gepostet). In Kombination mit der Veränderung, kann ich doch (glaube ich) darstellen, dass es bei Accounts die wenig gepostet haben auch kaum eine Veränderung in den 14 Tagen gab und bei denen die viel gepostet haben, eine größere Veränderung. Die neue Datei sende ich Dir vorsichtshalber im Anhang.

Wenn ich mir den Plot hier angucke, sagt es genau das für mich aus (außer ich interpretiere das jetzt total falsch):

ggplot(Social_Media) +
geom_boxplot(aes(x=posts_total, y =veraenderung), color = "grey") +
geom_jitter(aes(x=posts_total, y =veraenderung), width = .1) +
ylab("Veränderung von follower_donnerstag_05.11.2020 zu follower_donnerstag_19.11.2020")


Leider zeigt mir die Summary Funktion der Veränderungen, nicht so schöne Beispiele an wie bei Dir:

summary(Social_Media$veraenderung)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-10.0000 -2.0000 0.0000 -0.6552 1.0000 6.0000


Da weiß ich jetzt überhaupt nicht, ob man das so überhaupt interpretieren kann und ich frage mich, ist der Median hier tatsächlich Null? - 10.0000 bedeutet einfach nur -10 oder? Warum macht R hier soviele Nullen?

Macht es Sinn die Korrelation nur auch mit den neuen Gesamtwerten der totalen posts zu erstellen oder ist das quatsch, weil es so niedrige Zahlen sind?
Dann könnte ich die Followerdatei (in der ich alle Werte der 14 Tage untereinander kopiert habe) vielleicht ignorieren.

Hast du sonst noch auf anhieb eine Idee im Kopf, mit der man das Ergebnis noch anders darstellen kann ?

Ich wünsche Dir eine gute Nacht.

Liebe Grüße

Claire
Dateianhänge
Social_Media .csv
(11.81 KiB) 36-mal heruntergeladen
bigben
Beiträge: 2784
Registriert: Mi Okt 12, 2016 9:09 am

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von bigben »

Liebe Claire,
Claire hat geschrieben: Mo Nov 30, 2020 12:56 amDie Beispiele in Deiner " Lecker Datei" habe ich in meiner Datei umgesetzt und dabei hatte ich die Idee, doch einfach eine neue Spalte zu erstellen und einfach alle Posts (Stories & Bilder) zu addieren und somit alle Werte der 14 Tage (pro Account) auf einen zu bringen (wie viele Stories / Bilder wurden insgesamt in den 14 Tagen gepostet). In Kombination mit der Veränderung, kann ich doch (glaube ich) darstellen, dass es bei Accounts die wenig gepostet haben auch kaum eine Veränderung in den 14 Tagen gab und bei denen die viel gepostet haben, eine größere Veränderung.
Ich freue mich, dass das bei Dir so ein Glückgefühl auslöst. Inhaltlich kann ich das nicht kommentieren. Ob dieses Vorgehen für Deinen Arbeitsbereich ok ist, ob man beispielsweise Bilder und Stories einfach addieren kann, das musst Du allein entscheiden.
Wenn ich mir den Plot hier angucke, sagt es genau das für mich aus (außer ich interpretiere das jetzt total falsch):
Ich habe nur ein Rezept geschrieben, wie man in einem Plot eine binäre Variable einer metrischen Gegenüberstellen kann. Bezüglich der Interpretation vertraue ich Dir da.


Leider zeigt mir die Summary Funktion der Veränderungen, nicht so schöne Beispiele an wie bei Dir:
summary(Social_Media$veraenderung)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-10.0000 -2.0000 0.0000 -0.6552 1.0000 6.0000


Da weiß ich jetzt überhaupt nicht, ob man das so überhaupt interpretieren kann und ich frage mich, ist der Median hier tatsächlich Null? - 10.0000 bedeutet einfach nur -10 oder? Warum macht R hier soviele Nullen?
Scheint so, als seien die Werte eher stabil. Ich weiß jetzt nicht, aus welchem Wert Du die Veränderung berechnet hast. Bei der Zahl der Abonennten würde ich jetzt innerhalb einer Woche nicht soo wahnsinnig viel Votalität erwarten. Einige Deiner Accounts haben bis zu 6 zugelegt, andere bis zu 10 nachgelassen. Dass es keinen allgemeinen Trend gibt, der sich in einem Median und einem Mittelwert weit weg von Null abzeichnen würde finde ich eher praktisch, sonst würdest Du mit der Frage konfrontiert werden, woher dieser Trend kommt und ob er Dein Ergebnis verfälscht haben könnte.
Macht es Sinn die Korrelation nur auch mit den neuen Gesamtwerten der totalen posts zu erstellen oder ist das quatsch, weil es so niedrige Zahlen sind?
Die Frage habe ich nicht verstanden. Der Formel für die Regressionsrechnung ist es gleich, ob Du sie mit großen oder mit kleinen Zahlen fütterst. Ob das aus der Sicht einer Medienwissenschaftlerin oder der einer Soziologin oder Psychologin sinnvoll ist, kann ich nicht beantworten.
Hast du sonst noch auf anhieb eine Idee im Kopf, mit der man das Ergebnis noch anders darstellen kann
Auch die Frage verstehe ich gerade nicht, habe aber ein gutes Gefühl, dass bei Dir gerade ein Knoten geplatzt ist und Du jetzt Deine Auswertung selbst hinbekommst.

Melde Dich, wenn es noch Fragen zu R gibt :D

GLG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Claire
Beiträge: 16
Registriert: Sa Nov 07, 2020 9:07 pm

Re: ganz freundliche Bitte um Hilfe - Datensatz

Beitrag von Claire »

Lieber Bernhard,

Vielen lieben Dank für Deine Rückmeldung.

Ich wünsche Dir einen schönen Abend ⭐️🌙

Herzliche Grüße

Claire
Antworten