Categories
经济、IT观察与思考

封闭的城市角落

有时候会偶尔坐火车去50英里之外的公司上班,这途中的一个多小时就是盯着窗户发呆的时刻。火车会经过很多汽车无法经过的地方,而且也不用像开车那么专注,自然有时间和心思来琢磨一些课余话题。

三藩的历史也不算太短,而城市一直在经历着各种变化迭代。比如我所居住的potrero hill区,因为临近海湾,所以历史上是码头和仓库的聚集地,以及附带的工厂等。随便开车走走,还是能看到不少简陋的厂房和仓库。这些仓库大多被短期出租另有用途,比如开个小展览厅,或者搞个复古的工业风酒吧等等。而随着越来越多的人口涌入,很多闲置或者半闲置的仓库就被有计划的改造成新的住宅或者商业建筑。开着车在三藩兜风,就会经常注意到又有新的区域被开发起来,然后周边的区域变的越来越热闹。

很多建筑在建设的时候,是有围墙围起来的,所以开车经过看到的无非就是一块“立入禁止”的牌子。有时候围墙并不透明,所以路过的时刻很难知道里面正在发生着什么。直到有一天围墙拆除,才得以一窥内部建设的样貌。而如果建设并不迅速,这些角落就一直被不透光的墙围着,慢慢的积攒灰尘。

这个时候就感慨,若是有个会飞起来的无人机多好,就可以飞跃围墙的阻隔,窥探墙内的荒凉。我想墙内定是荒凉乃至狼藉的吧。不知道有没有流浪的猫狗在里面寄居,或许对他们来讲是个不错的安静之处。可是猫狗可以钻缝隙,那些常年露宿街头的流浪汉呢?三藩虽然还算温暖的,但再好的帐篷也毕竟比不上遮风挡雨的屋顶。

这些,都是一个发展中的城市不为人知的角落,有着自己不为人知的故事。和上海很不一样的是,上海的闹市区里面也会经常走过所谓的“棚户区”,看着摇摇欲坠的老房子里面伸出来一根根长长的晾衣杆,不耐烦的妈妈们训斥着到处顽皮的小男孩。弄堂的门口还有三五闲人要么择菜,要么听着收音机遛猫。这些场景都是鲜活的不加遮掩的,而三藩的另一面就被一堵堵墙围在看不见的区域里面,自行发酵。

不知道在那些流浪汉的眼中,三藩是不是和我生活的很是不一样。虽然大家都可以顺着山势爬到twin peaks上面看风景,只是不知道没有厚厚的冬衣包裹的他们是不是从内寒到外。越是希望探究不容易看到的区块,越是希望接触不容易沟通的人,越是觉得这个社会是那么的复杂而生动。只是我们习惯了禁锢,习惯了在自己最舒服的区域安安静静的打发时光。那些没有读懂的梦想,或许在未来很长的时间,也不会有读懂的契机。

墙,可以围起来一座城,也可以围起来一片建筑,也不知不觉的阻断了交流的声音。围墙,围城。

Categories
事儿关经济

中国地名的字频统计(县级及以上)

前几天看到微博上大家讨论县城名字:http://weibo.com/1444865141/EjcmoaykB

screen-shot-2016-11-27-at-5-44-05-pm

一时好奇,就把官方数据拿来看了一下。(2016年9月中华人民共和国县以上行政区划代码)

全部用来命名的只有1228个字,而相较于新华字典一般收录的八千到1万字,覆盖面其实挺小的。

不出意外的,这个字频分布呈现快速下降的长尾分布。看一下这个数据,还是蛮有意思的。

  • 第一名的“族”主要是有各种少数民族自治行政区划的存在。
  • 如果不看这个,则最受大家喜欢的就是“山”,“城”,“阳”,“江”,“安”,“州”。
  • 四个方向中,排序为“南”>“东”>“西”>“北”。
  • 地势描述成为了命名的主力词:山、江、河、海、川、湖、溪、林等。
  • 五行排名如下:水>金>土>木,然后没有火!看来全国人民都痛恨火灾。是不是和马伯庸提到的“雪”同理?大家都讨厌灾害。

这里贴一下前50高频词。

char_freq

完整的字频统计在这里: 中国县级及以上行政单位字频统计.txt

然后我们分区域来看一下各个区域特征。因为港澳台地区没有太多数据,所以我们只分析六大区域:华北、东北、华东、华中/华南、西南、西北。

  • 地势:除了西北地区以外,其他五个地区特别喜欢“山”。此外,东北常用“江河岭”,华北、西北常用“河”,华中/华南常用“江”,华东常用“江湖”,西南常用“江川”。
  • 四个方向:东北地区喜欢“东西”,华北地区喜欢“西”,华东地区喜欢“东南”,华中/华南常用“南”,西北常用“西”,西南常用“西南”。
  • 东北地区、西北地区、华南地区多有少数民族,故而地名含有民族名称。

region

全部数据下载:

中国县级及以上行政单位字频统计(按省份).txt

中国县级及以上行政单位字频统计(按地区划分).txt

原始数据:

town_name.csv

分析脚本:

town_name <- read_csv("~/Documents/town_name.csv")
names(town_name) = c("code","name")

town_name$name_s = gsub("市$|区$|县$|旗$|自治.*?$|盟$|省$","",town_name$name)
unique_character = unlist(strsplit(town_name$name_s,split = ""))
character_freq = as.data.frame(table(unique_character))
library(dplyr)
character_freq = character_freq %>% 
  arrange(Freq) %>% 
  mutate(rank = 1:nrow(character_freq))
write.csv(character_freq, file = "character_freq.csv", row.names = F)

library(ggplot2)
top_50 = character_freq %>% filter(Freq >= 25) 
ggplot(top_50, aes(x = as.factor(rank), y = Freq)) + 
  geom_bar(stat="identity", alpha = 0.5, fill = "grey")+
  coord_flip()+
  theme_bw(base_family = "Hei") +
  scale_x_discrete(labels = top_50$unique_character) +
  xlab("") +
  geom_text(aes(label = Freq, y =Freq/2 ), color = "deepskyblue3") +
  ylab("频次")+ggtitle("中国县级及以上行政单位字频统计")

#五行
character_freq %>% filter(unique_character %in% c("金","木","水","火","土")) 

#省

town_name$province = substr(town_name$code, 1,2)
town_name$region = substr(town_name$code, 1,1)

unique_prov =  town_name %>%  
  filter(grepl("0000",town_name$code))

char_by_prov = lapply(unique_prov$province, function(x) {
  prov = subset(town_name,province==x)
  chars = unlist(strsplit(prov$name_s,split = ""))
  freq_prov = as.data.frame(table(chars))
  freq_prov$rank = rank(-freq_prov$Freq, ties.method = "first")
  freq_prov$prov = x
  return(freq_prov)
})
char_by_prov = do.call(rbind, char_by_prov)

names(char_by_prov)
ggplot(char_by_prov %>% filter(rank<=5 & chars != "族" & ! prov %in% c(82,81)), aes(x= rank, y = Freq)) +
  geom_bar(stat="identity", alpha = 0.3)+
  facet_grid(name~.)+
  theme_bw(base_family = "Hei") +
  geom_text(aes(label = chars, y = Freq/2),family = "Hei")+
  coord_flip()+
  xlab("") +
  ylab("字频")
write.csv(char_by_prov, file = "char_by_prov.csv", row.names=F)

#by region
char_by_region = lapply(1:6, function(x) {
  prov = subset(town_name,region==x)
  chars = unlist(strsplit(prov$name_s,split = ""))
  freq_prov = as.data.frame(table(chars))
  freq_prov$rank = rank(-freq_prov$Freq, ties.method = "last")
  freq_prov$region = x
  return(freq_prov)
})
char_by_region = do.call(rbind, char_by_region)
char_by_region$region = factor(char_by_region$region)
levels(char_by_region$region)  = c("华北","东北","华东","华中/华南","西南","西北")

ggplot(char_by_region %>% filter(rank<=10 ), aes(x= rank, y = Freq)) +
  geom_bar(stat="identity", alpha = 0.3)+
  facet_grid(region~.)+
  theme_bw(base_family = "Hei") +
  geom_text(aes(label = chars, y = Freq/2),family = "Hei")+
  coord_flip()+
  xlab("") +
  ylab("字频") + ggtitle("中国县级以上行政单位字频统计(按区域划分)")

write.csv(char_by_region %>% filter(rank<=10 ), file = "freq_by_region.csv",row.names = F)
write.csv(char_by_region, file = "char_by_region.csv", row.names = F)
# draw regional map

library(ggmap)  


# find each regional center
unique_region = filter(unique_prov, substr(province,2,2)==2 & region<=6)   
location = lapply(unique_region$name,geocode)
location = do.call(rbind,location)
unique_region = cbind(unique_region,location)
unique_region$region = factor(unique_region$region)
levels(unique_region$region)  = c("华北","东北","华东","华中/华南","西南","西北")

# top 10 char for each region
top_10_region = char_by_region %>% filter(rank<=10 )
top_10_region =  top_10_region %>% 
  mutate(labels = paste0(chars," (",Freq,"次)"))

top_10_region = merge(top_10_region,unique_region, by ="region")
#adjust label positions

top_10_region_g = top_10_region %>% 
  mutate(lon_a = lon - rank %%2 *5 -3,
         lat_a = lat  - rank/2 - rank %%2 *(1/2)+5/2) %>% 
  select(c(region, rank, lon_a, lat_a, labels)) %>% 
  arrange(region,rank)

#manual adjustment
top_10_region_g = top_10_region_g %>% mutate(
  lon_a = lon_a + (region == "华东")*(7) + (region == "西南")*(-3)
)

qmap('China',color="color", zoom = 4, maptype = "satellite", alpha = 0.8) + 
  geom_text(data = top_10_region_g, aes( x = lon_a, y = lat_a, label = labels),
            family = "Hei",color = "white") +
  geom_text(data = unique_region,aes( x = lon-6+ (region == "华东")*(7)+ (region == "西南")*(-3), y = lat+3, label = paste0(region,"地区:")),
            family = "Hei",color = "white")
  

 

Categories
经济、IT观察与思考

理想国

上小学的时候,思想品德课是由我们的班主任兼语文老师兼上的。那个时候,老师最喜欢问的就是:

同学们,你们长大之后的理想是什么呀?

众口一致的,“科学家”。现在想想,那是一种惊人的一致。我不知道是一种长时间的自上而下的洗脑使然,还是一种”不能离群“的压力导致大家不说真话。

上初中的时候,已经没有了思想品德这门课程,只是在一些场合中老师还是会偶尔地问起相同的问题,却也不是必答题了。那个时候开始有了一些自我意识的萌醒,觉得大家都要当科学家我才不要当科学家呢,我要当企业家。现在想想也是另一种可笑,我至今也没搞懂企业家是什么东西。

后来继续成长,然后慢慢的知道自己喜欢的和不喜欢的事情。经历了若干次半夜灵感泉涌然后刷刷落笔,便知道什么事情可以让我更加的开心。这个时候的自我意识已经非常的强烈了,已经可以理智的区分哪些是我自己喜欢的东西,哪些是为了“融入社会”不得不做的事情。这个时候,理想和现实的分化开始越来越明显,一开始会有那种和理想渐行渐远的无比失落,而后来也就习惯了失落。这样子,我才知道,哪些是理想,哪些是幻想。

幻想大概就是一种“不劳而获”的期待,简单如明天中个彩票我就可以财务自由了。结果是美好的,自己还不用付出努力,不知道真的实现了是好是坏。理想则不同,理想是一个人一直在努力和奋斗的精神激励,虽然可能也是可望而不可及,但总是还是期盼着可以一点点的缩短这样的距离。理想太容易实现,便不是理想了,只是一个短期或者中期的目标罢了。

若干年前,买了本柏拉图的《理想国》,却没有认认真真的读完,只是偶尔打开翻翻。可能我更喜欢的是这个中译标题——《理想国》。理想国和理想的最大区别大概就是,理想是对于自己未来的描述,而理想国是对于一群人未来的描述。当我对自己的理想有了更多的认知之后,就会难以避免的发现,任何一种状态周围都是有更多的人牵连,我的理想并没有活成一种孤立的状态(比如我可以赞叹Perelman 佩雷尔曼,但却无法想象自己处于那样的生活状态)。

每个人的性格都不一样,而我对自己的认知的一面就是,对于我越得不到的东西,我就会愈加的念念不忘,甚至刻意的去放大它的优点、忽略它的缺点,产生一些不切实际的幻想。打破这种认知其实也不是很难,比如小时候特别喜欢的游戏买不到,后来长大了一口气买了许多,也只是在陈列柜里面一种仪式一般的摆放整齐,并没有时间一一安装并且通关了。过期的实现,除了一瞬间被慰藉的情怀,其实应该承认已经没有什么实质的欢喜了。所以后来渐渐的学会控制执念,明白过去的就是过去了,就算现在变出来一个一模一样的给我,那种欣喜之情已经变质了。

于是乎,关于个人的理想变得越发的简化而持久,关于社会的理想变的越来越复杂和膨胀。前者是对于自己的方向定位和鞭策,后者是带有幻想色彩的希望自己能贡献的方向。

我周围有一群很聪明且有灵性的人。这种聪明不见得是各种满分和荣誉证书,而是他们有能力做好自己喜欢的事情。每当有人因为现实的原因和理想渐行渐远,就会触发我心底的一种“同是天涯沦落人”的悲伤,这大概也是我最见不得的情形之一。当然,很多人会很快的重新找到自己喜欢的其他事情,然后得心应手的飞速发展,倒也不失为一种幸福。

在这种层次上的理想国,大致就是杜甫的“安得广厦千万间,大庇天下寒士俱欢颜”。你可以理解“厦”是一种物质层面的保障,也可以理解“广”是对于思想自由的包容。我心中的理想国,一定是一个百花绚烂色彩斑斓的世界,而不是一个黑白灰的明暗过渡或支离破碎。

然而,自省一番就会明白,就算是这种层次上的理想国,我也并没有什么可以贡献的方向。见过许多人小心翼翼的包裹起来自己曾经的理想,然后戴上一副面具曰人生如戏。只是演的久了,是不是就彻底的融入角色了,反而曾经的理想变成了期望扮演的角色。我一向珍视真实和真诚,然而也充分的意识到一些人性的恶——从来不要去考验人性。各种恶里面,最让我厌恶的大概就是“幸福源于比较”,非要把自己排到其他人上面才有优越感。然而却也不得不承认,我也常年被这种恶所困扰,不时会因为一些比较而感到失落和挫败。

所以我的理想国,在现在而言只是一个幻想国。我期冀他人可以活的真实,而我自己也并没有完全摘下自己的面具。

写了这么多,想想值得记录的大概就是,理想国的概念开始萌发。只是这样的概念稍显脆弱,而我也不必辩解自己的无力。

Categories
经济、IT观察与思考

一篇文章引发的感触

最近一时兴起,打算记录一下工作中的一个项目,遂写了一篇科普文。最开始的时候,想着不如写的搞笑一点,所以里面穿插了无数的段子和包袱,刻意卖弄文笔。结果发给一个朋友看,人家生生的没看懂我想说什么(心疼小白鼠10s)。受打击之后,停了一个月。

然后重新写,主要是此时相对简洁的英文版写完了(英文版主要是写给内部,所以注重事实和逻辑,不需要科普什么。但我承认,中文我是习惯性的废话...),所以打算参照逻辑清晰的英文版重新写一遍。大刀阔斧的删掉了无数不相关的段子(其实也不怎么好笑),然后居然还啰啰嗦嗦的写了7000多字。自己看了几遍之后,发现自己的东西自己没法改,所以求救于几位朋友们帮忙审稿。

最初吐槽我写的一塌糊涂的朋友,大概是看到了第一版的惨不忍睹,所以对修订版格外包容,来了一句,至少能看懂了...我默默的偃旗息鼓。其他的朋友就没这么客气了,噼里啪啦给了各种修改建议,到最后我都觉得,我到底为什么班门弄斧的写了这么一篇文章?不过讨论的过程也是交流,有些没想到的问题变得清晰了一些。

几点感触吧。

  1. 不同的人看问题肯定是不同的(废话)。每个人都是另一个人眼中的井底之蛙。评价标准其实很简单——解释一个问题是不是费力。如果毫不费力的直达核心,那就是对于这一类问题看的都很通透,所以并不需要绕着弯子废话那么多。而像我这种半瓶子晃荡的,就产生了无数废话,效果也并不好——事情没有讲清楚,还造成了各种模糊和误解。这也是我一遍遍删改的过程中,坚持的一个基本原则:要把自己知道的讲清楚,自己不知道的索性不讲,或者明说不知道。含混其词其实并没有什么好处,反而贻笑大方。
  2. 受众与定位。其实写什么文章都是这样,作者不应该期待每个人都能理解。这并不是白居易写诗的年代。写科普文也是如此——一开始的时候,我总是有点贪心,希望就算读者不怎么了解这个领域,也可以大致看懂一些东西。结果适得其反,一位朋友直截了当的说,你这样写,懂的人没必要看,不懂的人也看不懂。醍醐灌顶,然后我决定把跟主旨不相关的删掉——要么另写它文再做深入揭示,要么读者的定位就是有一定基础的。很多问题确实不是三言两语可以解释清楚的,强行放在那里只会喧兵夺主。
  3. 学无止境。好在我还可以意识到自己是井底之蛙,那也就说明了还有一番广阔的天地。每当意识到这里的时候,其实就是指明了一些学习的方向。比如,计量经济学里面的structural model, instrumental variable等等,和统计里面的基于贝叶斯网络做因果分析有什么共同之处。propensity score模型怎么可以扩展(Rubin&Imbens 后面的章节我并没有读完...汗颜)。实践中我们习以为常的一些操作后面有没有理论依据(比如capping and bias, aggregation)等等。越到这里,越觉得自己的理论知识远远不够,很多事情就这么木然的按着所谓“直觉”做下去了,而其实做的时候并没有想这么多。回头想想,有些真的是无知者无畏的后怕吧。尤其是在被懂行的人问到语竭词穷的时候,那是一种从头到脚的尴尬。

感觉其实把自己做的事情写出来也是很重要的,这样才能意识到哪些地方其实自己并没有想得很清楚,反而可以激发求知欲。不说了,我准备这周末再把Rubin&Imbens拿出来读一下。除了技术细节以外,还要试图理解一个问题——他们当时为什么会这么想这么做,有没有什么其他的想法但并不可行。有的时候真理或许并不重要,重要的是思考的过程和那种醍醐灌顶的乐趣吧。

谨以此,警示一下一度飘飘然的自己。天外有天,脚踏实地。

Categories
经济、IT观察与思考

我的互联网十年记忆 (A decade long faith of blogging)

2006年11月14日,刚进入大学不久的我,在手头并不宽裕的前提下买下了loyhome.cn这个域名。没想到十年之后,这个域名还在我手里,而落园则即将迎来她十周岁的生日(虽然落园的主域名变成了loyhome.com)。

screen-shot-2016-11-02-at-8-12-50-pm

十年并不是一个很短的时间。而落园作为一个独立博客存在的十年,其实是见证了互联网的很多变化。我们不妨看一下落园的大事记

2002-2004.9:第一个网站(落园雏形),手工制作,大概总共加起来有十个左右的静态页面外加几个Flash,放在163的个人主页服务上,现在已消失。

那个时候flash刚刚兴起,跟现在的孩子追连续剧一样,那个时候我最大的乐趣就是等着SHOWGOOD的《大话三国》系列更新。那个时候网游也是刚刚兴起,不知谁还记得《第九城市》原来就是一个虚拟社区,那个时候我们还是拨号上网玩着《石器时代》,以及后来一窝蜂去网吧玩《传奇》。嗯,那个时候我还用QQ,还给QQ秀充过值(捂脸)。

2004.9-2006.11:正式开始写博客(定名为落园),寄居于Blogcn

博客的兴起就像一阵风,突然间发现,咦,我原来不用自己建网站。青年少女们总是多愁善感的,风靡大江南北的是《萌芽》和郭敬明(他居然还火着...)。太多的离愁别绪无处发泄,文字就成为了最好的记录方式。话说,2012年底blogcn关闭之前,我还特意登录上去看了一眼。然而记忆已经格外遥远了。

2006.11:开始独立博客历程,使用域名loyhome.cn

说起独立博客的建立,主要是我在网上结识了一帮喜欢玩电脑的相同年龄的朋友。那个时候大家纷纷开始购买域名、自己搭建blog。忽如一夜春风来,千树万树梨花开。大概是学校的学习任务也不怎么重吧,我就花费了大量的时间学习各种建网站的技术(图书馆借的书有一大半都是各种编程书),神奇的是那年我居然没挂科。

随后不久,另一阵春风拂来,新浪博客借助明星的力量遍地开花。也是那个时候开始有了rss阅读器,在google还不需要翻墙的年代舒舒服服的刷着google reader。后来google reader也被关掉了,转成feedly之后很忧伤的发现,当年订阅的博客大都已经荒废了。时至今日,每天依旧会刷新rss,只是里面英文的内容越来越多,中文渐渐无人更新,只能依赖微博了。

2008.9:从textcube转到wordpress。

现在依然很佩服当时的自己——说上就上,生糙猛的把textcube的mysql数据库搬到了wordpress...现在回忆起来都不知道我是怎么做到的。这大概也是独立博客的一个趋势吧。wordpress时至今日依旧是独立博客的最佳选择,而源源不断的各种插件开发者把wordpress变成了一个无所不能的php平台——对的,还有多少人记得php? 时至今日,我依旧会习惯性的架一个LAMP环境然后进行各种小规模开发(测试)。

2009.8:英文博客建立,使用域名blog.cloudlychen.net

建立英文网站(博客)其实是那时候准备申请出国读书了,所以卖弄一下,顺便天真的以为可以弱弱的监测到底有多少国外教授点击过我简历上的网站(然而并没有多少)。英文博客神奇的一直存在并且被更新着,只是更新的频率我自己都不忍说出来丢人了。

2010.10:注册loyhome.com域名

由于.cn域名的管制越来越严格,所以我不怎么放心的情况下注册了一个.com的域名。虽是抱着有备无患的想法,但那个时候怎么也不会想到,中国的互联网会发展到如今的封闭状态。

2011.9:全面转向国外空间,停止国内“镜像”,loyhome.cn做301永久重定向。

互联网管制的寒风越来越凛冽。本来一直顾及教育网的学生读者,不想搬到国外的服务器上去。可是实在是没办法了,随着服务商几次三番停机或者备案以及备案更新等等,我终于不堪其烦,搬到国外的服务器上了。这个时候,微博开始大热,人们用微博简直和今日用微信没什么区别。从我的角度,互联网进入了全民化和移动互联网时代。随后大概就是各种智能手机的百花怒放。

2016.1: 更新全站域名 www.liyunchen.com,但落园依旧保持独立。

其实也并没有特别的理由去买下全名域名,只是更多的对于自己网络身份的一种理解。刚开始上网的时候,大家都是起一个网名,反正都是陌生人,顶着网名聊天也挺好的。不知道从什么时候开始,越来越多的开始有线下圈子向线上扩散的趋势,以至于在越来越多的情况下开始使用实名(反正都是认识的人)。英文网站一直就习惯署名liyun了,所以干脆域名也就换掉算了。从某种程度上,这反应了我们生活的高度信息化——人们的交流越来越依赖互联网,不论是邮件、即时聊天工具还是身份注册等等。这和十几年前、互联网只是少数人的一个娱乐工具的情况大不一样了。

不知怎么写着写着,这篇十年庆祝文就成了十年互联网发展的回忆文了。来不及一一列出那些难忘的互联网瞬间,相信我的同龄人很多也有着和我类似的记忆。有幸经历了互联网辉煌发展的十几年。在其中的时候可能并不觉得,但回头看五年前、哪怕只是两年前,都已经大不相同。互联网正从一个茁壮成长的初生儿开始盈盈学步。而我们,也并未老去。

下面是作为一个典型数据分析师,对十年落园数据的分析。由于其中各种迁移等等数据丢失,大部分分析是基于wordpress本身内容的(文章和回复)。

screen-shot-2016-11-02-at-9-34-43-pm基本来说,2008之前更新的并不多,然后08-09年间居然可以日均一篇(图中数据为月度,可见有多么灌水),然后10年下落,11年开始反弹,12年重回频繁更新,然后13年至今不断下落,但好像会收敛的样子...

screen-shot-2016-11-02-at-10-09-06-pm

貌似近几年读书笔记增多;流水账和软件应用类、网上乱看到的各种东西越来越少(估计是都转移到微博了....),但是为什么...和经济有关的也越来越少?游记写的也不多了(主要是懒得写了)。