Kai Zhang | 张凯 2018-02-21T15:38:02+00:00 kaiwhu@gmail.com 随机变量的方差与样本方差 2016-05-30T00:00:00+00:00 张凯 http://kayzhang.github.io/2016/05/variance-and-sample-variance 在概率论中, 在已知随机变量期望 \( E(X) \) (或 \( \mu \)) 的情况下, 随机变量的方差定义如下:

\[ D(X) = E((X - E(X))^2). \]

在数理统计中,设 \( X_1, X_2, \ldots, X_n \) 是来自总体 \(X\) 的样本, \( x_1, x_2, \ldots, x_n \) 是样本观察值.

\( \bar{X} = \frac{1}{n} \sum\limits_{i=1}^{n}X_i \)样本平均值 (或样本均值);
\( S^2 = \frac{1}{n-1} \sum\limits_{i=1}^{n}(X_i - \bar{X})^2 \)样本方差;

由此, 单从形式上来看, 会产生这样一个疑问: 为什么样本方差的分母是 \(n-1\), 而不是 \(n\)?

关于这个疑问,我写了一篇详细的分析文章:
随机变量的方差与样本方差: PDF; LaTeX 源码.

]]>
moltiobjective optimization 2016-05-30T00:00:00+00:00 张凯 http://kayzhang.github.io/2016/05/moltiobjective-optimization 优化算法…

]]>
大城床 VS 小城房 2015-04-07T00:00:00+00:00 张凯 http://kayzhang.github.io/2015/04/city-bed-vs-town-house 最近一直在看《奇葩说》,其中一个辩题是“大城床小城房你选哪个?”

当然这是一个没有定论的问题,否则也不会拿过来作为辩题,它代表的是两种完全不同的人生观,代表了不同人在面对人生选择时的态度。大城市有更多拼搏的机会、更广阔的视野、更多的资源和人脉,生活虽然累但更加精彩,少了他人对自己私生活的窥探,少了排资论辈,因而可以更加宽容地接受我们的失败,给我们舔舐伤口的机会。而小城市有比较好的生活环境,比如新鲜的空气和闲适的生活节奏,离亲人更近,并且在信息高度密集的今天互联网和高铁网络正在逐步地缩小大城市和小城市之间的差距。

其实作为一个即将走向社会的青年,这个问题也时常困扰着我。仔细观察身边的同学,更多地选择了回到自己的家乡,回到那个养育自己的小城市,在系统内谋一职位,看起来也很潇洒快活。我有时候会想,这些人是迫于房价、能力不足等生活的压力而选择了小城市,还是说是发自内心地喜欢小城市的干净与舒适呢?这个辩题之所以是大城床和小城房的选择,而非简单的大城市和小城市的选择,我猜测是因为在不考虑生活压力方面的因素的话,更多的人会不假思索地选择大城市吧。

有很多人选择了北漂、选择了去上海、去广州奋斗,他们放弃了舒适的生活环境而选择了这条路,哪怕等待他们的是一张冷冰冰的床。我想是梦想在支撑着他们,虽然这是一个不缺梦想的年代,梦想甚至有时候看起来很廉价,但是作为年轻人总得有点追求吧。其实廉价的不是梦想本身,廉价的是那些虽有鸿鹄之志却甘愿栖身一隅的人,因此我们不缺梦想,我们缺少的是行动。我们还年轻,为什么要年纪轻轻就埋没梦想呢?只因社会残酷、造化弄人?是时候采取行动了,用自己的行动去证明作为年轻人的我们是有能力去实现自己的梦想的。

高晓松说,他选择离开大城市而选择小城市,是因为他觉得大城市并没有所谓的未知与激情,相反在大城市有件事是一定会发生的,那就是你一定会离自己越来越远,你一定会越来越接近这个大城市制定的规则,只有在小城市才可以做自己,才可以出于本心地观察这个世界。好吧,我只想说这有点站着说话不腰疼的感觉,我们这些年轻人没有像您那样的物质基础,所以无法像您那样悠哉于加州小城;同时我们也非您口中所说的很多哲人学者,甘愿承受孤苦一生只为寻求思想自由。我们只是一只只向往天空的雏鸟,或许天空并没有我们眼中那么美,时常会阴云密布,时常会暴雨雷鸣,但我们不会因此而选择退缩,我们要勇于去挑战自己,去成为一个全新的自己。

突然想起《东京喰种》中在枭阻止金木研去追董香时金木研说的那句话:我想店长一定将事情看得很远,考虑过各种因素才下了这样的判断,但是对我而言,不管是对搜查官出手需要做出多大的觉悟,还是喰种世界的规矩等等,所以我打算先用自己的眼睛看过之后,再决定要怎么做。

只有用自己的眼睛看过之后,只有用自己的双脚走过之后,我们才能有发言权,我们才能有能力去做出正确的选择。其实我在这说这么多也只是纸上谈兵,博君一笑而已,因为这些观点并未建立在我自己实际的经验之上。那么让我们像金木研一样去用自己的双眼看过之后,再决定怎么做吧,哪怕我们会为此付出代价,哪怕我们会因此遍体鳞伤,但我们并不会因此后悔,因为——我活过。

]]>
再不行动就真的晚了——阻碍梦想的不是现实,而是你自己 2015-03-21T00:00:00+00:00 张凯 http://kayzhang.github.io/2015/03/zai-bu-xing-dong-jiu-zhen-de-wan-le 今天看了简书上的几篇文章,感觉内心再一次被触动,感觉远方一直有一种声音在召唤自己。我知道,那是梦想在召唤自己,虽然自己浪费了大把大把的时间来规划自己走向梦想的道路,但是只有我自己知道,其实我并没有采取行动,相反自己一直在原地踏步,更确切的是自己正在一步步走向自己最讨厌的那种生活。

当梦想和现实出现冲突时,有的人选择了背弃一切去追寻内心,有些人选择了放弃梦想去妥协,其实每个人都有选择的权利,选择什么样的生活都无可厚非,既然是自己做出的选择,那么就要义无反顾地去努力。所以我一直觉得梦想输给了现实是可以理解的,也是可以接受的。但我不是输给了现实,而是输给了自己。

从小就一直说这句话:机会总是留给有准备的人。而自己恰恰就是那个一直怀揣梦想,却迟迟没有行动的人。总是在为自己的未来做规划,我以后要出国留学,要思想自由,要高品质的生活,要充满激情的工作……与其说这是梦想,倒不如说这是在做梦,而且是“白日梦”。当我到了面临选择的时候,突然发现,之前的规划全TM是扯淡,因为你根本就没有选择的权利,根本没有选择的资本。

每天晚上看剧看游戏直播看到2点,早上10点多起床,从不吃早餐,不能静下心学习,被游戏控制,整天只知道刷知乎、刷各种网站找鸡汤,这种状态是不配拥有梦想,不配谈梦想的。自己当前的状态用花粥屌丝之歌形容是很贴切的,而静好_《我就是不想让别人知道我在努力》更是重重地打了自己一记耳光。

<iframe frameborder=”no” border=”0” marginwidth=”0” marginheight=”0” width=330 height=86 src=”http://music.163.com/outchain/player?type=2&id=247173&auto=1&height=66”></iframe>

但这种生活真的是自己想要的吗?经常在空虚颓废之后会感到一直有一个声音在召唤自己,其实我知道那个声音就是未来的自己,他在召唤仍处于年少时期的那个自己,他希望唤醒这个一蹶不振、空虚颓废的自己,他希望年轻的自己能真真正正为了未来而努力一次,我能深切地感受到这个呼唤。

我经常会感到害怕,害怕等到自己老了,等到自己没有精力、没有时间的时候,突然发现自己这一生就像从没活过一样。这种莫名的恐惧常常让我感到害怕与彷徨,但这时我并没有选择面对这种恐惧,而是选择了逃避,选择了拖延,选择了用游戏来麻醉自己。

但我不能再这样下去了,我要对自己负责,对未来的那个自己负责。我不希望未来的自己在回顾年轻的自己时会不禁潸然泪下,会不禁悔恨于心。

凯尔特人的队训是:What hurts more, the pain of hard work, or the pain of regret?

现在开始追寻自己的梦想还为时不晚,虽然会付出很大的代价,但这些代价都是你自找的。是时候开始行动了,因为真的——再不行动就真的晚了。这一次我要给未来的自己一个承诺,是时候为了梦想背弃一切了,是时候为了梦想改变自己了,是时候为了梦想流血流汗了!这一次,改变自己!

]]>
Ubuntu 下使用 Pandoc 2014-09-07T00:00:00+00:00 张凯 http://kayzhang.github.io/2014/09/pandoc 参考文档:

Ubuntu 下安装 Pandoc 的步骤如下:

$ sudo apt-get autoremove pandoc	        #删掉之前的pandoc安装
$ sudo apt-get install cabal-install    #安装Haskell包管理器
$ cabal update                          #获取Haskell包信息
$ cabal install pandoc                  #通过cabal安装pandoc

然后再把 ~/.cabal 加到路径中去,即在 ~/.bashrc 里加上一句

export PATH=/home/UserName/.cabal/bin:$PATH

安装好之后可以用 pandoc –version 校验是否安装成功。

使用 Vundle 管理 Vim 插件

为了使用 vim-pandoc,需要安装该插件,可以用 Vundle 来安装并管理 Vim 插件。

安装 Vundle 步骤如下:

$ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

之后配置插件:

将下述官方样例复制到 ~/.vimrc 文件的头部,当然里面的具体插件可以自己根据需要修改。

set nocompatible “ be iMproved, required
filetype off “ required

” set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
“ alternatively, pass a path where Vundle should install plugins
“call vundle#begin(‘~/some/path/here’)

” let Vundle manage Vundle, required
Plugin ‘gmarik/Vundle.vim’

” The following are examples of different formats supported.
“ Keep Plugin commands between vundle#begin/end.
“ plugin on GitHub repo
Plugin ‘tpope/vim-fugitive’
“ plugin from http://vim-scripts.org/vim/scripts.html
Plugin ‘L9’
“ Git plugin not hosted on GitHub
Plugin ‘git://git.wincent.com/command-t.git’
“ git repos on your local machine (i.e. when working on your own plugin)
Plugin ‘file:///home/gmarik/path/to/plugin’
“ The sparkup vim script is in a subdirectory of this repo called vim.
“ Pass the path to set the runtimepath properly.
Plugin ‘rstacruz/sparkup’, {‘rtp’: ‘vim/’}
“ Avoid a name conflict with L9
Plugin ‘user/L9’, {‘name’: ‘newL9’}

” All of your Plugins must be added before the following line
call vundle#end() “ required
filetype plugin indent on “ required
“ To ignore plugin indent changes, instead use:
“filetype plugin on

“ Brief help
“ :PluginList - lists configured plugins
“ :PluginInstall - installs plugins; append ! to update or just :PluginUpdate
“ :PluginSearch foo - searches for foo; append ! to refresh local cache
“ :PluginClean - confirms removal of unused plugins; append ! to auto-approve removal

“ see :h vundle for more details or wiki for FAQ
“ Put your non-Plugin stuff after this line

配置完插件信息之后可以在 Vim 命令模式下执行 :PluginInstall 来进行插件的自动安装。

安装 vim-pandoc

首先添加

Plugin ‘vim-pandoc/vim-pandoc’
Plugin ‘vim-pandoc/vim-pandoc-syntax’

到 ~/.vimrc 的相应位置,然后执行 :PluginInstall 即可。

]]>
LyX R knitr RStudio 2014-09-07T00:00:00+00:00 张凯 http://kayzhang.github.io/2014/09/lyx-r-knitr 安装 LyX

下载源码

此处 LyX 的安装建立在 Ubuntu 14.04.1 64 位系统已安装 TeXLive 2014 的基础上,由于直接下载 deb 安装包根据依赖关系自动安装 TeXLive 在源中的版本,因此此处应该选择源码安装,源码下载地址为 LyX

安装依赖环境 qt4

$ sudo apt-get install qt4-designer

编译安装

将源码文件解压并复制到 /opt,然后切换到源码文件目录,执行

$ sudo ./configure

系统提示错误信息如下:

The following minor problems have been detected by configure.
Please check the messages below before running ‘make’.
(see the section ‘Problems’ in the INSTALL file)

cannot find magic.h. Please check that the libmagic library
is correctly installed on your system.
Falling back to builtin file format detection.

解决方法如下:

$ sudo apt-get install libmagic-dev

为了验证问题已解决,可以重新 configure 一遍看输出信息。

之后执行以下指令即可:

$ sudo make
$ sudo make install

安装完成之后,打开 LyX,点击工具–>重配置,进行本地 TeXLive 路径的自动配置。

添加 knitr 遇到的问题

参见谢益辉博客中的 demo Using knitr with LyX,当为 LyX 添加 knitr 模块时,提示以下错误:

Missing prerequisites: knitr->latex

经 Google 并分析结果为 knitr 必须要有 R 支持,即要先安装 R

具体可参见 stackoverflow1stackoverflow2

安装 R

可以参见官网安装教程 Install R

我参考的教程主要为 Installing R in Ubuntu,具体如下:

第一步为添加安全密钥:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9

然后需要在 /etc/apt/sources.list 文件末尾添加 CRAN 源:

deb http://cran.r-project.org/bin/linux/ubuntu trusty/

其中 CRAN 的地址可以用任意你喜欢的镜像替换,同时 trusty/ 为 Ubuntu 版本, trusty 代表的时 14.04 版。

接着便开始安装:

$ sudo apt-get update
$ sudo apt-get install r-base
$ sudo apt-get install r-base-dev

利用这种方法,除了能获得最新版本的 R 外,还有一个好处便是所有的较老版本的软件包(packages)都是可以安装的。要安装这些,具体参考 这里

注:若在安装中遇到缺失 libtiff4 的问题,可以从 这里 下载并安装,没有遇到该问题可直接含忽略。

安装 R 后要接着安装 knitr:

install.packages('knitr')

在 LyX 中工具,首选项中将 which Rscript 得到的路径添加到 路径前缀中,之后便可以在 LyX 中重配置之后添加 knitr 模块了。

关于语言的全局设置可以参见 LyX

安装 RStudio

安装包下载地址:RStudio

安装之后,终端打开会报错:

QGtkStyle was unable to detect the current GTK+ theme.

这是由于没有选择 qt 主题的缘故,需先安装 qt4-qtconfig,可以直接在新利得中安装,安装后执行:

$ qtconfig

在 select GUI style 里面选择一种 style ,退出时选择保存(save),问题即可解决。

RStudio 中配置 knitr 和 RMarkdown 参见 knitr与RStudio的中文初步介绍(从R Markdown到HTML报告),也可以参考 Markdown写作浅谈

]]>
修复并配置 xdvi 和 xpdf 2014-09-06T00:00:00+00:00 张凯 http://kayzhang.github.io/2014/09/configure-xdvi-and-xpdf 在 Ubuntu 上安装好 TeXLive 和 xpdf 后,运行 xdvi 会出现以下错误:

Warning: Cannot convert string “--helvetica-medium-r---12------” to type FontStruct
Warning: Missing charsets in String to FontSet conversion
Warning: Cannot convert string “-
-helvetica-medium-r---10------” to type FontStruct

运行复杂的 xpdf 也会出现问题,解决方法可参考 生醫影像實驗室,具体如下:

$ sudo apt-get install xfs xfstt
$ sudo apt-get install t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac xfonts-75dpi xfonts-100dp
$ xset +fp /usr/share/fonts/X11/75dpi/
$ xset +fp /usr/share/fonts/X11/100dpi/

执行之后发现 xpdf 完美解决,但是 xdvi 还是剩下一个问题,即上面错误信息的第二项,解决方法为将 LANG 设置为 C,即在 ~/.bashrc 中添加 export LANG=C,问题得以解决,但是同时又会出现系统编码的问题,由于平时 xdvi 也不常用,此处选择了暂时让步,即不更该 LANG 的值,做为一种折衷方案还是可以接受的。

]]>
Ubuntu 之中文输入法——fictx 2014-09-05T00:00:00+00:00 张凯 http://kayzhang.github.io/2014/09/use-fcitx-in-ubuntu 一直没有在 Ubuntu 上好好选择一款输入法,而是用系统默认的,但是实在是。。。难用啊:)

最近有时间就选择了一款中文输入法:fcitx-pinyin,也试了搜狗,不是很好用。

下面介绍配置过程

$ sudo add-apt-repository ppa:fcitx-team/nightly 
$ sudo apt-get update 
$ sudo apt-get install fcitx-pinyin

其它输入法的名称如下
拼音
fcitx-pinyin、fcitx-sunpinyin、fcitx-googlepinyin
五笔
fcitx-table、fcitx-table-wubi、fcitx-table-wbpy(五笔拼音混合)

安装好之后可在系统设置–>语言支持中将键盘输入方式系统设置为 fcitx,注销即可。

此时,会发现无法切换为英文,可在系统输入法设置中仅启用拼音和键盘-英语(美国),然后将切换输入法的快捷键从 Ctrl+Space 改成 L-shift,而后便完美实现 Ubuntu 下的中文输入了!

]]>
我的 Linux 软件列表 2014-09-05T00:00:00+00:00 张凯 http://kayzhang.github.io/2014/09/my-linux-software-list Ubuntu

前言:此处列出我在 Linux 发行版 Ubuntu 上的常用软件,供今后安装系统时参考。

  • MentoHUST 锐捷校园网认证软件,初次配置如下:

    $ sudo mentohust -u20073161xxxx -p123456 -d1 -f/etc/mentohust/123.mpf -b3 -w
    
  • Chrome 直接从软件中心安装即可

  • 红杏 Chrome 付费X墙插件,在没法在线安装的情况下可以从上述链接下载离线安装包。

  • Adobe Flash Player for Chrome

    在网上尝试了一些方法,也按照官方指南进行了安装,但还是无法成功,最后在网上找到如下方法完美解决:

    $ sudo apt-get install pepperflashplugin-nonfree
    $ sudo update-pepperflashplugin-nonfree --install
    
  • 新立得软件包管理器 直接从软件中心安装即可

  • nautilus-open-terminal 支持在文件夹内右键打开终端的软件

    $ sudo apt-get install nautilus-open-terminal
    
  • indicator-keylock 大小写显示托盘

    $ sudo add-apt-repository ppa:tsbarnes/indicator-keylock-daily
    $ sudo apt-get update
    $ sudo apt-get install indicator-keylock
    
  • Vim 配置

    直接把 /usr/share/vim…./vim6.3/ 下的 vimrc.sample 拷到自己的目录下并改名 .vimrc 来保存配置信息。

    $ cp /usr/share/vim/vim63/vimrc_example.vim ~/.vimrc
    
    • set shiftwidth=4 设置缩进的空格数为4
    • set nu 打开行号
    • 取消生成备份文件

      找到
      if has(“vms”)
      set nobackup “ do not keep a backup file, use versions instead
      else
      set backup “ keep a backup file
      用 Vim 注释符(“)注释掉后两行,即
      if has(“vms”)
      set nobackup “ do not keep a backup file, use versions instead
      “else
      “ set backup “ keep a backup file

  • Emacs 感觉要比 Vim 方便一点。。。

  • Haroopad 跨平台的 Markdown 本地编辑器,个人感觉比 ReText 体验好很多,但是存在一个 bug,就是直接点 x 退出时可能不提示保存,造成数据丢失,用 Ctrl + F4 的方式代替即可解决。

  • WPS 在 WIndows 上就开始喜欢这款开源软件了,虽然现在已转向 LyX 和 Markdown,但难免还是要偶尔用到 Office,这种情况下 WPS 不失为一种好的解决方案。
    • 官方说需要安装支持 32 位的库,但貌似在 Ubuntu 14.04 上直接即可安装。
    • 直接安装 deb 包
    • 打开程序,发现部分符号字体,可参见 官方解释,下载相应字体放到 ~/.fonts 文件夹内重启程序即可。
    • 接下来可以到下载页面下载中文语言包和字体包进行安装,至此,安装完毕。
  • Ubuntu 额外的版权受限程序 一些受限的音频和视频解码器
  • SMPlayer 很棒的 MPlayer 前端,直接在软件中心安装即可,若中文字幕乱码,只需在选项中将字幕编码设置为中文简体即可。
]]>
Windows 下安装 Ubuntu 双系统 2014-09-05T00:00:00+00:00 张凯 http://kayzhang.github.io/2014/09/install-ubuntu-with-windows
  • 准备磁盘空间

    在磁盘管理中将要分配给 Ubuntu 的卷删除。

  • 设置 iso 文件

    • 将镜像下的 casper 文件夹下的 vmlinuzinitrd.lz 解压出来,并复制在 C 盘根目录下;
    • 将准备好的 iso 镜像文件拷贝到某盘根目录下(如D盘);
  • 安装 EasyBCD 软件
  • 设置向导
    • 打开 EasyBCD 软件,选择 Add Entries,选 NeoGrub,然后点 Install,接着是 Configure
    • 然后就会弹出 menu.lst 文件,我们要编辑这个文件,因为系统就是这个文件找到我们的 Ubuntu 的;
    • 把下面的英文复制到 menu.lst 文件末尾

      title Install Ubuntu
      root (hd0,0)
      kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-11.10-i386.iso ro quiet splash locale=zh_CN.UTF-8
      initrd (hd0,0)/initrd.lz
      

      特别注意:
      ubuntu-11.10-i386.iso 是 Ubuntu 系统 iso 镜像文件的名字,需要根据所用版本进行更改;
      对于有的电脑上你的第一个盘符并不是C盘,在磁盘管理中可以看出,所以安装时需将 (hd0,0) 改为 (hd0,1)【假设为第二个】;
      64 位 Ubuntu 解压出来的文件为 vmlinuz.eti,因此须将上述代码中的 vmlinuz 改为 vmlinuz.eti

  • 重启

    重启,你就会看到有2个启动菜单给你选择,我们选择第2个 Grub 这个,选择 install,然后等待一段时间,就会进入 Ubuntu 桌面了。

  • 卸载镜像

    进入桌面之后,先在终端输入:

    $ sudo umount -l /isodevice
    

    这一命令取消掉对光盘所在驱动器的挂载,否则分区界面找不到分区。

  • 安装

    一路 next 之后在安装类型界面,我们用自定义,即可以自定义分区的安装方法。

    选择在 Win7/8 中删除的空闲空间(以 40G 左右为例),点击创建,点击添加:

    具体分区如下(仅作参考):
    分配 20G 给根目录,即 /ext 4
    分配 18G 给 /usr ext4
    分配 120M 给 /boot ext4
    分配 8G 给 /home ext4
    分配 2G(所有剩下的,约为 2G)给交换空间 swep

    关于安装启动引导器的设备,会影响 Window 和 Ubuntu 的引导关系,此处默认即可。

  • 重启

    注意:若重启发现原来 Windows 进不去了,打开终端输入命令:

    $ sudo gedit /etc/default/grub
    

    修改 GRUB_TIMEOUT=”10”,然后在终端中输入:

    $ sudo update-grub update
    

    命令会自动找到 Windows 启动项,并且自动更新 /boot/grub/grub.cfg 文件,这样重启就能进 Windows 了。

  • 更改启动顺序将 Windows7/8 设为默认启动项

    若重启,发现 Windows 不是第一个启动项,则

    $ sudo mv /etc/grub.d/30_os-prober /etc/grub.d/06_os-prober
    

    即将 /etc/grub.d/30_os-prober 改名为 06_os-prober,再执行:

    $ sudo update-grub
    

    即可。

  • 进入 windows 进行善后工作

    最后进入 Window7/8,打开 EasyBCD 删除安装时改的 menu.lst 文件,按 Remove 即可。

    然后去我们的 C 盘删除 vmlinuzinitrd.lz 和系统的 iso 文件。

  • Let’s begin Linux。
  • ]]>