« Tankeillusioner och tankemisstag | Main | Lasse O'Månsson och Bertil Pettersson »

september 30, 2003

Statistikknarkande: Antal webb-besökare och power law

Av lite olika anledningar har jag nu kollat in hur många unika besökare jag haft under det exakt (på dagen!) ett år min sajt (www.hakank.org) började notera i webbserverloggen.

En unik besökare är här definierad som ett unikt IP-nummer. Ja, det är problem med dynamiska IP-nummer och proxys på större företag. Men så är världen nu beskaffad....

Jag har här räknat med samtliga "besökta filer" som finns i min webbserverlogg, inklusive bilder (det lilla fåtal jag har), RDF- och CSS-filerna till bloggen, class-filerna till Java Applets, etc.

Här är resultatet av undersökningen.

Unika besökare
Det har varit 33876 unika IP-nummer-besök på totalt 150889 besök, dvs varje besökare har gjort i genomsnitt 4.45 besök. Igenomsnitt har det varit cirka 413 besök per dag och cirka 93 unika besökare per dag. (De senaste månaderna har jag dock snittat på cirka 1000 besök per dag.)

De mest frekventa besökarna:
Sök-bottarna dominerar naturligtvis, vilket vi ser i listan över de mest frekventa besökarna. Av totalt 150889 träffar var 27976 sökbott-träffar, dvs cirka 18%, vilket innebär att ungefär var femte besökare är en sökbott (egentligen var 5.5:e)!

Besökare: antal besök
crawler11.googlebot.com: 1806
[en frekvent index.rdf-hämtare]: 1690
crawler10.googlebot.com: 1677
cr031r01-2.sac2.fastsearch.net: 1648
trek18.sv.av.com: 1518
crawler14.googlebot.com: 1468
12.148.209.198: 1158
buildrack17.sv.av.com: 979
cr1.turnitin.com: 972
crawlers.looksmart.com: 814
drone10.sv.av.com: 735
[amerikansk bott, ej sökmotor]: 727
drone6.sv.av.com: 698
[en nära vän]: 678
si1006.inktomisearch.com: 641
crawler12.googlebot.com: 607
....


Bottar
De 8 större bottar jag kom att tänka på, fördelar sig på följande sätt. Här har jag slagit ihop alla IP-nummer från en domän till en entry:
googlebot.com: 8170
sv.av.com: 7096
inktomisearch.com: 3873
alexa.com: 3061
fastsearch.net: 2928
looksmart.com: 1370
teoma.com: 1296
directhit.com: 182


Frekvenstabell
Här nedan följer ett litet utdrag ur en sammanställning av antal besökare som haft en viss besöksfrekvens. Dvs det finns en dator (googlebot naturligtvis) som besökt min sajt 1806 gånger, en som besökt 1690 gånger osv. Sist har vi engångsbesökarna som är 21886 till antalet. Det är alltså sorterat i antal besök (flest först).

Här är datafilen.
Antal besök: antal besökare
1806: 1
1690: 1
1677: 1
1648: 1
1518: 1
1468: 1
1158: 1
979: 1
972: 1
814: 1
735: 1
727: 1
698: 1
678: 1
641: 1
607: 1
605: 1
576: 1
.....
14: 92
13: 73
12: 119
11: 120
10: 171
9: 195
8: 273
7: 341
6: 483
5: 641
4: 1193
3: 2290
2: 4873
1: 21886


Power law
Naturligtvis började jag att fundera på hur denna fördelning ser ut i en log-log-graf. Skulle det möjligen vara en power-law-fördelning på antalet besök vs antalet besökare? (Se nedan för referenser till power law.)

Med några raska R-kommandon undersökte jag detta närmre. R finns att ladda ner på www.r-project.org.
> hits<-read.table("hits.dat", header=T, sep=",")
> plot(hits, type="l")

En log-log-plot:
> plot(hits, log="xy")

hits1.jpeg
Tja, det ser faktiskt ut som ett skolexempel på en power law!

För att studera det lite mer statistiskt använder jag funktionen nls() från paketet nls.
> library(nls)
> hits.nls <- nls(hosts ~hits^B, data=hits, start = 
c(B=0.1),control=list(maxiter=100),alg="plinear",trace = TRUE) 

508371265 :  0.1000 56.2787 
498492486 :  -0.1094190 368.8806565 
451677547 :   -0.3347585 1975.0531057 
317338776 :   -0.588109 6945.458497 
144332341 :    -0.8947935 13969.2739399 
38531928 :    -1.295967 18993.358662 
4431768 :    -1.760797 21213.372275 
170968.8 :    -2.061232 21792.250830 
59470.55 :    -2.127369 21872.694076 
59302.93 :    -2.130101 21875.741431 
59302.92 :    -2.130125 21875.768037 
59302.92 :    -2.130125 21875.768235 

> hits.nls
Nonlinear regression model
  model:  hosts ~ hits^B 
   data:  hits 
           B         .lin 
   -2.130125 21875.768235 
 residual sum-of-squares:  59302.92 

Detta innebär att -2.130125 är koefficienten, dvs
  hosts = hits^-2.130125

Värdet 21875.768235 är intercept. Notera dock att vi kommer att använda 10-logartimen av detta värde nedan när vi ritar ut bilden:
> log10(21875.768235 )
[1] 4.339963

Summary:
> summary(hits.nls)

Formula: hosts ~ hits^B

Parameters:
       Estimate Std. Error t value Pr(>|t|)    
B    -2.130e+00  3.367e-03  -632.7   <2e-16 ***
.lin  2.188e+04  1.580e+01  1384.5   <2e-16 ***
---
Signif. codes:  0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 

Residual standard error: 15.85 on 236 degrees of freedom

Correlation of Parameter Estimates:
           B
.lin -0.2368

Här ser vi att både exponenten och intercept är statistiskt signifikanta (p<0.001).

Vi har nu allting som krävs för att rita ut den fullständiga bilden:
> plot(hits, log="xy")
> abline(log10(21875.768218), -2.130125, col="red") 


Så här blev bilden:
.
Här är den som PDF-fil.

Man ska tolka bilden på följande sätt: Det finns många besökare som gjort ett fåtal besök, och ett fåtal besökare som har gjort många besök. Den räta (regressions-)linjen på en log-log-skala (bas 10) är ett kännetecken på att det är frågan om en power law. Notera att värdena på axlarna inte är log10-värden utan de riktiga "oskalade" värdena. Återigen: Exponenten, lutningen på linjen (log-log skala) är cirka 2.13.

Hur ska vi nu förklara detta? Power law brukar vara ett kännetecken på att det finns någon form av "skiktning" (orättvisa, etc) i befolkningen som studeras. T.ex. Paretos berömda tes att de 20% rikaste äger 80% av världens tillgångar. "De som har ska vara givet". Se även häromdagenanteckningen Segregeringseffekter inom yrken för några fler exempel.

En sak är ju klar, de som besöker sajten flest gånger är maskiner och inte vanliga "manuella" användare (med ett lysande undantag för den nära vännen). Jag kom på att man skulle kunna ta bort värdena för alla bottar och se hur figuren blir då. Men det blir en annan gång...

Några referenser till power-law
Zipf, Power-laws, and Pareto - a ranking tutorial
Power Laws, Weblogs, and Inequality.

Se även mina andra skriverier om detta.

Uppdatering
Flera referenser om power law-fenomenet finns via JonblOGG, anteckningen Power Laws. Det är även i övrigt en intressant blogg.

Artiklar av Jacob Nielsen:
Zipf Curves and Website Popularity
Diversity is Power for Specialized Sites
Do Websites Have Increasing Returns?

Av Jason Kottke: Weblogs and power laws

Samt:
Vilfredo Pareto
The Marginal Productivity Theory of Distribution

Posted by hakank at september 30, 2003 03:14 FM Posted to Statistik/data-analys