Veckodagsnamnsanalys
Här är lite kommentarer och R-kod till Mats Anderssons Veckodagsstatistik, där han undersökt
fördelningen av veckodagsnamnen på google. Se även hans tidigare Veckodagar.
Av tidsskäl skriver jag inte detta som en flådig HTML-fil, utan endast som text rakt upp och ned.
Har du några frågor etc är det bara att maila mig.
Datafilen days.dat
Fredag,Lordag,Sondag,Mandag,Tisdag,Onsdag,Torsdag
Mandag,121000,117000,120000,130000,123000,127000,126000
Tisdag,99300,85900,86100,93200,87000,86200,87600
Onsdag,108000,102000,101000,107000,102000,102000,109000
Torsdag,117000,121000,124000,126000,119000,117000,120000
Fredag,130000,128000,126000,138000,126000,125000,131000
Lordag,99400,94200,96000,101000,96700,95200,98600
Sondag,88100,86800,81100,84000,85800,80900,80600
Nedan använder jag R för att analysera saker och ting.
Kommentarer
"<-" är tilldelningstecknet
De ">" som är först på vissa rader är prompten. De ska inte
skrivas in. Men det visar tydligt vilka kommando som används
> days <- read.table("~/blogg/days.dat", header=T, sep=",")
t() transponerar, dvs vänder tabellen 90 grader så att raderna är
de dagar sökningen gjordes
> days2<-t(days)
> days2
Mandag Tisdag Onsdag Torsdag Fredag Lordag Sondag
Fredag 121000 99300 108000 117000 130000 99400 88100
Lordag 117000 85900 102000 121000 128000 94200 86800
Sondag 120000 86100 101000 124000 126000 96000 81100
Mandag 130000 93200 107000 126000 138000 101000 84000
Tisdag 123000 87000 102000 119000 126000 96700 85800
Onsdag 127000 86200 102000 117000 125000 95200 80900
Torsdag 126000 87600 109000 120000 131000 98600 80600
# differens från föregående dags sökning
> diff(days2)
Mandag Tisdag Onsdag Torsdag Fredag Lordag Sondag
Lordag -4000 -13400 -6000 4000 -2000 -5200 -1300
Sondag 3000 200 -1000 3000 -2000 1800 -5700
Mandag 10000 7100 6000 2000 12000 5000 2900
Tisdag -7000 -6200 -5000 -7000 -12000 -4300 1800
Onsdag 4000 -800 0 -2000 -1000 -1500 -4900
Torsdag -1000 1400 7000 3000 6000 3400 -300
Dela med 1000, så får vi differenserna likt de som Mats skrev:
> diff(days2)/1000
Mandag Tisdag Onsdag Torsdag Fredag Lordag Sondag
Lordag -4 -13.4 -6 4 -2 -5.2 -1.3
Sondag 3 0.2 -1 3 -2 1.8 -5.7
Mandag 10 7.1 6 2 12 5.0 2.9
Tisdag -7 -6.2 -5 -7 -12 -4.3 1.8
Onsdag 4 -0.8 0 -2 -1 -1.5 -4.9
Torsdag -1 1.4 7 3 6 3.4 -0.3
Här är två medelvärden
Först medelvärde för dagen man söker.
Det bekräftar Mats kommentar att sökningen i måndags gav flest resultat.
Kan det vara en google-dans-effekt?
apply tar en tabell och anropar en funktion (här mean) för varje rad (1 som
andra parameter) eller kolumn (2).
> apply(days2, 1, mean)
Fredag Lordag Sondag Mandag Tisdag Onsdag Torsdag
108971.4 104985.7 104885.7 111314.3 105642.9 104757.1 107542.9
Sedan: medelvärdet för antalet träffar på veckodagens namn.
Detta bekräftar att måndag, torsdag och fredag är de mest populära dagarna
i google. Fortfarande vet vi dock inte varför.
> apply(days2,2,mean)
Mandag Tisdag Onsdag Torsdag Fredag Lordag Sondag
123428.57 89328.57 104428.57 120571.43 129142.86 97300.00 83900.00
FÖNSTEREFFEKTEN
---------------
Här studerar vi "fönstereffekten", dvs att sökning på "dagens" namn skulle
vara kopplat till antal träffar. Om diagonaltesen är korrekt, ska värdena i
och kring diagonalen vara större än övriga värden
Först mixtra så att det blir en korrekt tabell (dvs så vi får en diagonal):
> days3<-days2[,c(5:7,1:4)]
> days3
Fredag Lordag Sondag Mandag Tisdag Onsdag Torsdag
Fredag 130000 99400 88100 121000 99300 108000 117000
Lordag 128000 94200 86800 117000 85900 102000 121000
Sondag 126000 96000 81100 120000 86100 101000 124000
Mandag 138000 101000 84000 130000 93200 107000 126000
Tisdag 126000 96700 85800 123000 87000 102000 119000
Onsdag 125000 95200 80900 127000 86200 102000 117000
Torsdag 131000 98600 80600 126000 87600 109000 120000
# arbeta med 1000-tal för att lite enklare se.
> days3/1000
Fredag Lordag Sondag Mandag Tisdag Onsdag Torsdag
Fredag 130 99.4 88.1 121 99.3 108 117
Lordag 128 94.2 86.8 117 85.9 102 121
Sondag 126 96.0 81.1 120 86.1 101 124
Mandag 138 101.0 84.0 130 93.2 107 126
Tisdag 126 96.7 85.8 123 87.0 102 119
Onsdag 125 95.2 80.9 127 86.2 102 117
Torsdag 131 98.6 80.6 126 87.6 109 120
Så använder vi which.max, vilket är funktionen för att returnera _positionen_
för det största värden i en lista (här är listan kolumnvärdet).
Om diagonalhypotesen är korrekt ska det bli ungefär en stigande serie.
Men vi ser att måndagar (4) är det största värdet för 4 kolumner och fredagen
är max för 2. Verkar alltså inte alls stämma med vår hypotes.
# notera att jag använder days3
> apply(days3,2,which.max)
Fredag Lordag Sondag Mandag Tisdag Onsdag Torsdag
4 4 1 4 1 7 4
Ett möjligt alternativ skulle vara att största värdet skulle komma någon dag
senare eller tidigare. T.ex. att sökning på "fredag" ger flest resultat en
fredag eller lördag. Men det bör väl även kunna uteslutas av samma skäl: det
verkar inte finnas någon som helst tendens i maxvärdena.