Ich habe einen Datensatz, bei dem es sich um Statistiken aus einem Webdiskussionsforum handelt. Ich schaue auf die Verteilung der Anzahl der Antworten, die ein Thema haben soll. Insbesondere habe ich ein Dataset erstellt, das eine Liste der Themenantworten und anschließend die Anzahl der Themen mit dieser Anzahl von Antworten enthält.
"num_replies","count"
0,627568
1,156371
2,151670
3,79094
4,59473
5,39895
6,30947
7,23329
8,18726
Wenn ich den Datensatz in einem Log-Log-Plot zeichne, erhalte ich im Grunde genommen eine gerade Linie:
(Dies ist eine Zipfian-Distribution ). Wikipedia sagt mir, dass gerade Linien in Log-Log-Diagrammen eine Funktion implizieren, die durch ein Monom der Form modelliert werden kann . Und tatsächlich habe ich eine solche Funktion in Augenschein genommen:
lines(data$num_replies, 480000 * data$num_replies ^ -1.62, col="green")
Offensichtlich sind meine Augäpfel nicht so genau wie R. Wie kann ich also R dazu bringen, die Parameter dieses Modells für mich genauer anzupassen? Ich habe eine polynomielle Regression versucht, aber ich glaube nicht, dass R versucht, den Exponenten als Parameter anzupassen. Wie lautet der richtige Name für das gewünschte Modell?
Edit: Danke für die Antworten an alle. Wie vorgeschlagen, habe ich jetzt ein lineares Modell anhand der Protokolle der Eingabedaten angepasst und dabei folgendes Rezept verwendet:
data <- read.csv(file="result.txt")
# Avoid taking the log of zero:
data$num_replies = data$num_replies + 1
plot(data$num_replies, data$count, log="xy", cex=0.8)
# Fit just the first 100 points in the series:
model <- lm(log(data$count[1:100]) ~ log(data$num_replies[1:100]))
points(data$num_replies, round(exp(coef(model)[1] + coef(model)[2] * log(data$num_replies))),
col="red")
Das Ergebnis ist das folgende, wobei das Modell in Rot angezeigt wird:
Das scheint eine gute Annäherung für meine Zwecke zu sein.
Wenn ich dann dieses Zipfian-Modell (alpha = 1.703164) zusammen mit einem Zufallszahlengenerator verwende, um die gleiche Gesamtanzahl von Themen (1400930) wie der ursprüngliche gemessene Datensatz zu generieren (unter Verwendung des im Web gefundenen C-Codes ), sieht das Ergebnis so aus mögen:
Gemessene Punkte sind schwarz, zufällig erzeugte Punkte laut Modell rot.
Ich denke, dies zeigt, dass die einfache Varianz, die durch zufälliges Erzeugen dieser 1400930 Punkte erzeugt wird, eine gute Erklärung für die Form des ursprünglichen Graphen ist.
Wenn Sie daran interessiert sind, selbst mit den Rohdaten zu spielen, habe ich sie hier veröffentlicht .
quelle
Antworten:
Ihr Beispiel ist sehr gut, weil es auf wiederkehrende Probleme mit solchen Daten hinweist.
Zwei gebräuchliche Namen sind Potenzfunktion und Potenzgesetz. In der Biologie und in einigen anderen Bereichen wird häufig von Allometrie gesprochen, insbesondere dann, wenn Sie Größenmessungen in Beziehung setzen. In der Physik und einigen anderen Bereichen wird von Skalierungsgesetzen gesprochen.
Ich würde Monomial hier nicht als guten Begriff ansehen, da ich das mit ganzzahligen Potenzen verbinde. Aus dem gleichen Grund wird dies am besten nicht als Sonderfall eines Polynoms angesehen.
Probleme bei der Anpassung eines Potenzgesetzes an das Ende einer Verteilung wandeln sich in Probleme bei der Anpassung eines Potenzgesetzes an die Beziehung zwischen zwei verschiedenen Variablen.
Der einfachste Weg, ein Potenzgesetz anzupassen, besteht darin, Logarithmen beider Variablen zu verwenden und dann eine gerade Linie mit Hilfe der Regression anzupassen. Es gibt viele Einwände dagegen, wenn beide Variablen, wie allgemein üblich, fehlerbehaftet sind. Das Beispiel hier ist ein typischer Fall, da beide Variablen (und keine) als Antwort (abhängige Variable) betrachtet werden können. Dieses Argument führt zu einer symmetrischeren Anpassungsmethode.
Hinzu kommt immer die Frage nach Annahmen zur Fehlerstruktur. Auch hier ist das Beispiel ein typisches Beispiel, da Fehler eindeutig heteroskedastisch sind. Das deutet eher auf gewichtete Least-Squares hin.
Eine ausgezeichnete Bewertung ist http://www.ncbi.nlm.nih.gov/pubmed/16573844
Ein weiteres Problem ist, dass Menschen Potenzgesetze oft nur über einen bestimmten Bereich ihrer Daten identifizieren. Die Fragen werden dann sowohl wissenschaftlich als auch statistisch und gehen bis hinunter zu der Frage, ob das Erkennen von Machtgesetzen nur Wunschdenken oder ein modischer Hobby-Zeitvertreib ist. Ein Großteil der Diskussion findet unter den Überschriften fraktales und schuppenfreies Verhalten statt, wobei die damit verbundene Diskussion von Physik bis Metaphysik reicht. In Ihrem speziellen Beispiel scheint eine kleine Krümmung offensichtlich zu sein.
Enthusiasten für Machtgesetze sind von Skeptikern nicht immer gleichgestellt, weil die Enthusiasten mehr veröffentlichen als die Skeptiker. Ich würde vorschlagen, dass ein Streudiagramm auf logarithmischen Skalen, obwohl es sich um ein natürliches und ausgezeichnetes Diagramm handelt, von Restdiagrammen begleitet wird, um Abweichungen von der Potenzfunktionsform zu überprüfen.
quelle
Wenn Sie annehmen, dass eine Potenz ein gutes Modell ist, können Sie sie
log(y) ~ log(x)
als Modell verwenden und eine lineare Regression anpassen, indem Sie Folgendes verwendenlm()
:Versuche dies:
Passen Sie ein Modell:
Jetzt erstelle ein Grundstück:
quelle