Update: removed the peak in a followup in the thread
I have downloaded some google trends data about Julia and I have I did some basic anlaysis, and it looks like Julia is on a slightly downward trend.
Also there is typically a big dip on gogole trends in December for other languages. December is usually time off for people, so there is usually a big dropoff which you can quantify by estimating the seasonality for each month, e.g. for R the December seasonality is 89% i.e. December search volumes is usually 11% lower than what the trend predicts.
If I don’t moreve the spike in Feb 2015, then for Julia the December seasonality is 1.00036, so there is no drop off. This could mean that Julia isn’t used so much at work and so when workers take time off it’s not as affected or it could mean that people are interested in Julia and want to use their free time to learn more . Interestingly, Julia’s Jun, Jul, Aug, Sep, Oct search volumes seasonality factor are all below 1.
If I remove the spike then the December seasonality is 0.9936326.
Here is my code. I plan to expand this into a look at all popular languages
using RCall using GLM, DataFrames, DataFramesMeta, Lazy, Plots langs = DataFrame( name = ["julia", "r"], lang = ["/m/0j3djl7", "/m/0212jm"] ) # jld = gtrends(keyword = "/m/0j3djl7") #julia # jld = gtrends(keyword = "/m/0212jm") # r # jld = gtrends(keyword = "/m/09gbxjr") # go # jld = gtrends(keyword = "python") # jld = gtrends(keyword = "/m/0n50hxv") #typescript # jld = gtrends("/m/02js86") # groovy # jld = gtrends("/m/0ncc1sv") #elm # jld = gtrends(keyword = "/m/06ff5") # jld = gtrends(keyword = "/m/02l0yf8", time="all") # sas function analysis_trend(geo = "", lang = "/m/0j3djl7", title = "") res = R""" library(gtrendsR) gtrends(keyword = $lang, geo = $geo)[] #julia """ # trends dataset df = DataFrame(res) # create a daily average df1 = DataFrame( day = reduce(vcat, (a .- Dates.Day.(0:6) for a in Date.(df[:date]))), hits = repeat(df[:hits], inner = 7) ) sort!(df1, cols = :day) df1[:year] = Dates.year(df1[:day]) df1[:month] = Dates.month(df1[:day]) df2 = @> df1 begin @by([:year, :month], meanh = mean(:hits)) end sort!(df2, cols=[:year, :month]) df3 = deepcopy(df2) if lang == "/m/0j3djl7" # if julia then clean up # there is a big spike in Feb 2015 so smooth that out mm = maximum(df2[:meanh]) @> df2 begin @where(:meanh .== mm) end mdf2 = @> df2 begin @where((:year .== 2015) .& (:month .== 1) .| (:year .== 2015) .& (:month .== 3)) end mmm = mean(mdf2[:meanh]) idx = find( (df2[:year] .== 2015) .& (df2[:month] .== 2) ) df3 = deepcopy(df2) df3[idx,:meanh] = mmm plot(df2[:meanh], label="original") plot!(df3[:meanh], label="removed spike") savefig("julia_trend.png") end @rput df3 dt = R""" png("julia_ts_decomposed.png") dt = decompose(ts(df3$meanh, deltat=1/12, start=c(2013, 3)), type="m") plot(dt) dev.off() dt """ end analysis_trend("US") # Julia in the US analysis_trend() # Julia in the world analysis_trend("", "/m/0212jm") # R in the world