R常用命令

R is a free software environment for statistical computing and graphics. It compiles and runs on a wide variety of UNIX platforms, Windows and MacOS.

1. related to environment variables
Sys.getenv()
Sys.setenv(BINPREF = “”)

## try http:// if https:// URLs are not supported

2. Change directory: setwd(‘E:/’) or setwd(“E:/”)
caveat: use ‘/’ not ‘\’ in windows.
*: list items in the current directory: dir()

3. bioconductor:
options(BioC_mirror=”https://mirrors.ustc.edu.cn/bioc/”) #换成国内的源,用于加速
if (!requireNamespace(“BiocManager”, quietly = TRUE))
install.packages(“BiocManager”)
BiocManager::install(“ChIPseeker”)

4. update, remove packages
update.packages()
remove.packages()

5. upgrade R
library(installr)
updateR()

6. rstudio换源加速

7. BiocManager换源
源列表:https://www.bioconductor.org/about/mirrors/
options(BioC_mirror=”http://mirrors.ustc.edu.cn/bioc/”)

8. local installation of r package:
install.packages(“BiocInstaller_1.20.1.tar.gz”, repos = NULL)
“R -e “install.packages(‘shiny’, repos=’https://cran.rstudio.com/’)””
R CMD INSTALL package.tar.gz

VIM Tips

  1. Quick Move

2016-12-20_162158word:b w e ge

2016-12-20_162317

WORD:B W E gE

2. S-LEFT/RIGHT: 在命令行模式下,shift+方向键可以快速跳跃一个单词,但是在putty,x-shell都会失效。

3. :verbose set tabstop
当我们发现vim的实际值与我们在vimrc中的设定值不一致时,可以使用verbose命令去查看值的设置来源。

4. set tabstop=2 expandtab
每个tab键等于两个空格键,将按下的tab键转换为对应数目的空格键
如果不设置expandtab,相应数目的空格键就会被转换为tab键
在python代码里,我们换行时,新的一行开头的空格就会被转换为tab,从而引发格式错误,无法正确运行代码

5. set autoindent
Copy indent from current line when starting a new line

6. backspace: 
默认情况下,退格键的工作模式有点小奇怪。
比如:如果你正在编辑第三行,然后将鼠标移动到第二行,想要修改要给字母,退格键就会删除不动。
原因:这是vim的一个特性,保护意外删除不想删除的地方
关闭这个特性及相关难用特性
set backspace=indent,eol,start

FM-index

In computer science, an FM-index is a compressed full-text substring index based on the Burrows-Wheeler transform, with some similarities to the suffix array. It was created by Paolo Ferragina and Giovanni Manzini, who describe it as an opportunistic data structure as it allows compression of the input text while still permitting fast substring queries. The name stands for Full-text index in Minute space.

It can be used to efficiently find the number of occurrences of a pattern within the compressed text, as well as locate the position of each occurrence. Both the query time and storage space requirements are sublinear[clarification needed] with respect to the size of the input data.

The original authors have devised improvements to their original approach and dubbed it “FM-Index version 2“. A further improvement, the alphabet-friendly FM-index, combines the use of compression boosting and wavelet trees to significantly reduce the space usage for large alphabets.

The FM-index has found use in, among other places, bioinformatics.

1 – Subtraction Games

Let S be a set of positive integers. The subtraction game with subtraction set S is played as follows. From a pile with a large number, say n, of chips, two players alternate moves.  A move consists of removing s chips from the pile where s ∈S. Last player to move wins.

GDB error

  1. “PC register is not available” (“SuspendThread failed. (winerr 5)”)
    MS Windows
    GDB may fail with this message. This is due to it .If you get this issue you may want to downgrade to GDB 7.2.
  2. 1
  3. 1

Molecular Evolution: A Statistical Approach

Ziheng Yang’s new book, “Molecular Evolution: A Statistical Approach” is on sale at Amazon. The cover photo, a western fence lizard (Sceloporus occidentalis), was taken by Charles Linkem during our collecting trip to Oregon last summer. Some people think that the lizard is beautiful, while others (Ziheng included) think that it looks terrifying. The book covers the statistical and computational foundations of molecular evolution, phylogenetics and phylogeography. It provides explanations and examples using real data analysis. The data and computer programs are available on the web, and course materials are provided at the end of each chapter. This will make it easy to use the book for teaching, perhaps in a graduate seminar course.

from: faculty.washington.edu/leache/wordpress/2014/04/molecular-evolution-a-statistical-approach/

 

数学概率统计

课程大纲

第一部分:数据科学中的数学基础 35小时
第1课 基本概念、函数
集合、等势、确界、函数、映射、实数集、函数、函数的性质、初等函数
第2课 序列极限
序列极限的定义、ε-N语言、无穷小量、无穷大量、夹逼定理、极限性质、Stolz公式、重要极限
第3课 函数极限与连续函数
函数极限的定义、性质、序列极限和函数极限关系、极限存在定理、重要极限、连续函数的性质、闭区间上得连续函数
第4课 导数与微分
导数、求导数的方法、微分、高阶导数与高阶微分
第5课 微分中值定理
微分中值定理、洛必达法则
第6课 泰勒公式
泰勒展开、泰勒公式的余项、函数凹凸性、导数的应用
第7课 积分
不定积分、定积分、变上限定积分、微积分基本定理、换元与分部积分法、可积函数类、定积分的应用、广义积分
第8课 多元函数微分学(上)
多元函数概念、多元函数极限、偏导数、全微分、复合函数和隐函数的微分、方向导数、梯度
第9课 多元函数微分学(下)
多元函数微分中值定理及泰勒公式、隐函数存在定理
第10课 线性方程组和行列式
高斯约当算法、行列式的定义、行列式展开、向量空间、线性相关与线性无关、向量组的秩、矩阵的秩、线性方程组解集结构
第11课 矩阵运算
矩阵运算、矩阵乘积、可逆矩阵、分块矩阵、正交矩阵
第12课 矩阵的相似与合同
矩阵相似、特征值、特征向量、实对称矩阵的对角化、二次型、正定二次型与正定矩阵
第13课 矩阵分解
LU分解,Cholesky分解、QR分解、SVD分解
第14课 最优化问题
范数、凸函数、凸集、广义逆、秩一校正、共轭函数、线搜索
第15课 使用导数的最优化方法
最速下降法、牛顿法、共轭梯度法、拟牛顿法
第16课 对偶理论
KKT条件、线性规划、凸规划、拉格朗日乘子
第17课 二次规划

第二部分:数据科学中的概率论 28小时
第1课:事件与概率
概率导论,事件及其运算,古典概型与几何概型,主要介绍概率论发展历史上主要研究的两种概率模型和概率论公理化体系
第2课:条件概率与统计独立性
条件概率,贝叶斯公式,统计独立性
第3课:随机变量与分布函数
随机变量及其分布,离散型随机变量,连续型随机变量, 随机变量的联合分布和边际分布, 随机变量的条件分布, 随机变量的独立性,随机变量的函数及其分布,共轭分布,次序统计量
第4课:数字特征与特征函数
期望与方差,协方差与相关系数,条件期望及预测, 熵与不确定性,特征函数
第5课:极限定理
极限定理基础,大数定律,中心极限定律
第6课:随机过程
随机过程基础,马尔可夫链,高斯过程
第7课:统计模拟
统计模拟基础,统计模拟应用,MCMC

第三部分:数据科学中的统计基础 26小时
第1课:数理统计学的基本知识
第2课:估计
参数估计的方法(最大似然,矩估计),估计的优良性标准(最小方差无偏估计),置信区间,分布函数与密度函数的估计
第3课:假设检验
问题描述,似然比检验,单参数情形的假设检验,广义似然比检验,p值,拟合优度检验,非参检验
第4课:抽样调查的意义与作用(主要应用)
第5课:抽样调查的基本概念
总体与样本,几种基本的抽样方法,简单随机抽样(详细),分层抽样,整群抽样,二阶与多阶抽样,系统抽样,不等概率抽样,误差与精度的表示方法
第6课:试验设计简介
试验设计问题的提法与数学模型,正交表与正交设计
第7课:多元统计分析的意义与作用
第8课:多元正态分布及参数的估计
随机向量,多元正态分布的定义与基本性质,条件分布和独立性,随机阵的正态分布,多元正态分布的参数估计
第9课:多元正态总体参数的假设检验
几个重要统计量的分布,单总体均值向量的检验及置信域,多总体均值向量的检验,协方差阵的检验,独立性检验,正态性检验
第10课:判别分析(与支持向量机的联系)
距离判别,Bayes判别法及广义平方距离判别法,Fisher判别,判别效果的检验及各变量判别能力的检验,逐步判别
第11课:聚类分析
聚类分析的方法,距离与相似系数,系统聚类法,系统聚类法的性质及类的确定
第12课:主成分分析
总体的主成分,样本的主成分,主成分分析的应用
第13课:因子分析
因子模型,参数估计方法,方差最大的正交旋转,因子得分
第14课:简单线性回归
建立简单回归模型,最小二乘估计,估计sigma2,最小二乘估计的性质,模型的比较:方差分析,测定系数,R2,置信区间和检验,残差
第15课:多元回归
在简单回归模型上增加一个自变量,回归的矩阵表示,方差分析,附加变量图,通过原点的回归
第16课:结果分析
解释参数估计值,抽样在回归中的作用,含测量误差的自变量
第17课:诊断一:残差及影响
第18课:诊断二:症状与治疗
散点图,非常数方差,非线性,变换响应变量,变换自变量,正态性假设
第19课:建立模型一:定义新的自变量
多项式回归,虚拟变量:二分类/多分类,比较回归直线,变量的尺度,线性变换及主成分
第20课:建立模型二:共线性与变量选择
什么是共线性,为什么共线性是一个问题,共线性的度量,变量选择,假设和记号,根据实际意义选择子集,求子集:逐步回归,选择一个子集的准则,求子集:所有可能的回归,求子集:LASSO;求子集:LARS
第21课:非最小二乘估计
ridge,主成分回归,偏最小二乘回归
第22课:线性回归的推广
广义线性模型(logistic、poisson),非线性回归,统计决策与bayes统计,统计决策问题概述,什么是bayes统计(著名的三羊问题),共轭分布
第24课:马氏模型
基本概念,隐马氏模型,隐马氏模型理论,隐马氏模型应用

FreeCell

1~999999

916343,

1000000~1999999

 

2000000

2416098

3000000

3963289

4000000~4999999

4562572

5000000~5999999

 

6000000~6999999

6523718

……

8000000~8999999

8283851

suffix array – 后缀数组(倍增算法实现版)

使用倍增算法,反复调用基数排序,最后得到’名次数组rank’;
使用’名次数组rank’最终得到’后缀数组sa‘。

倍增算法的倍增体现在,每次处理的字符串长度增长方式为:2^0,2^1,2^2…(a^b表示a的b次方);
rank[i]表示首指针为i的序列,排名第几;
sa[i]表示排名第i的序列,首指针是多少;
注意编号开始的位置。

时间复杂度:
O(n*log[2](n))
log2n为倍增次数,n为基数排序的次数;

注意两个很重要的边界:一个是单个数据的范围,一个是数据个数的范围;
即,每个数据的最小值最大值,和一共要处理的数据的个数;

Counting sort – 计数排序

原理:

假设待排序对象为整数,且范围为1…1000;

举例:2,3,3,4

首先统计每个数字出现的次数,用c[i]表示。i表示数字,c[i]表示数字i出现的次数;

c[1] = 0;  c[2] = 1;  c[3] = 2;  c[4]=1;

然后从小到大,统计比每个数小的数一共有多少,用a[i]表示。i表示数字,a[i]=c[1]+c[2]+c[3]…+c[i]

a[2] = 1;a[3] = 3;a[4]=4;

接着算出每个数字的序数;遍历每个数字,算出其序数,将这个数字直接放在数组rank中,其对应的位置上;

for(int i = 1;i <= n;i ++) rank[– c[a[i]]] = a[i];

整个过程并没有一个数组专门来存所有待排列数字,只有一个数组rank来存储排列好的数字,所有一样大的数字之间的顺序取决于代码实现的过程。

《算法设计编程实验》中提到使用计数排序来实现后缀数组中rank数组的计算(这里的rank是后缀数组的rank),其实是笔误,那里用的是基数排序。