量化分析
-
北京大学R语言教程(李东风)第33章: R多元回归
建模步骤: 33.1 模型 模型 y=β0+β1×1+⋯+βpxp+ε 其中 对n组观测数据, 有 yi=β0+β1xi1+⋯+βpxip+εi,i=1,2,…,n 对其中的随机误差项εi, i=1,2,…,n,假定: 总之,ε1,ε2,…,εn 相互独立,服从N(0,σ2)分布。 数据格式如: ⎛⎝⎜⎜⎜⎜⎜⎜⎜x1…
-
北京大学R语言教程(李东风)第32章: R相关与回归
32 R相关与回归 本章所用例子数据下载: 32.1 相关分析 考虑连续型随机变量之间的关系。相关系数定义为 ρ(X,Y)=E[(X−EX)(Y−EY)]Var(X)Var(Y)‾‾‾‾‾‾‾‾‾‾‾‾‾√ 又称Pearson相关系数。 −1≤ρ≤1。ρ接近于+1表示X和Y有正向的相关; ρ接近于−1表示X和Y有负向的相关。 相…
-
北京大学R语言教程(李东风)第31章: 使用infer包进行统计推断
R的infer扩展包提供了与tidyverse系统习惯做法一致的进行假设检验的方法。 在进行理论推断时, 主要使用随机模拟方法进行计算, 也支持基于理论分布的方法。 这个包的当前版本(1.2.9001)还有一些错误, 不能用于较正式的研究问题。 以数据框(tibble)为输入, 用动词specify指定针对的变量, 用hypothesis指定假设检验(包括置…
-
北京大学R语言教程(李东风)第30章: R初等统计分析
这一部分讲授如何用R进行统计分析, 包括基本概括统计和探索性数据分析, 置信区间和假设检验, 回归分析与各种回归方法, 广义线性模型, 非线性回归与平滑, 判别树和回归树, 等等。 主要参考书: 30.1 概率分布 R中与xxx分布有关的函数包括: dxxx(x)函数可以加选项log=TRUE, 用来计算\ln p(x), 这在计算对数似然函数时有…
-
北京大学R语言教程(李东风)第29章: 探索性数据分析
探索性数据分析(Exploratory data analysis, EDA)是在进行推断性统计建模之前, 对数据的分布、变量之间的关系、观测之间的聚集等特性用汇总统计、作图等方法进行探索, 这是必不可少的步骤。 有时我们不知道数据告诉我们什么信息, 不知道要提什么问题, 这就必须用EDA来获得对数据的洞察, 提示我们随后要进行的研究。 即使一开始研究目标就…
-
北京大学R语言教程(李东风)第28章: ggplot的各种图形
28.1 介绍 ggplot2包提供了许多种图形, 其作用可以大致地分为: 下面按照其作用分别进行介绍。 主要参考: 28.2 表现数量 28.2.1 条形图 设有若干个类, 每个类有一个数量属性值。 经常用条形图表现数量。 28.2.1.1 简单的条形图 例如, 有25个共同基金, 分为三个类别, 各类别的频数为: …
-
北京大学R语言教程(李东风)第27章: ggplot作图入门
介绍 Hadley Wickem的ggplot2包是R的一个作图用的扩展包,它实现了“图形的语法”,将一个作图任务分解为若干个子任务,只要完成各个子任务就可以完成作图。在作常用的图形时,只需要两个步骤:首先将图形所展现的数据输入到ggplot()函数中,然后调用某个geom_xxx()函数,指定图形类型,如散点图、曲线图、盒形图等。 如果需要进一步控制图形细…
-
北京大学R语言教程(李东风)第26章: 基本R绘图
R语言的前身是S语言,S语言的设计目的就是交互式数据分析、绘图。所以绘图是R的重要功能。 R有最初的基本绘图,这是从S语言继承过来的,还有一些功能更易用、更强大的绘图系统,如lattice、ggplot2。基本绘图使用简单,灵活性强,但是为了做出满意的图形需要比较多的调整。这里先讲解R语言的基本绘图功能。 R的基本绘图功能有两类图形函数:高级图形函数, 直接…
-
北京大学R语言教程(李东风)第25章: 函数式编程和数据框列表列
函数式编程介绍 R支持类(class)和方法(method),实际提供了适用于多种自变量的通用函数(generic function,或称泛型函数),不同自变量类型调用该类特有的方法, 但函数名可以保持不变。这可以支持一定的面向对象编程方式。 R也支持函数式编程,但不是专门的函数式编程语言。R语言的设计主要用函数求值来进行运算;R的用户主要使用函数调用来访问…
-
北京大学R语言教程(李东风)第24章:数据汇总
dplyr包的summarise()函数可以对数据框计算统计量。 以肺癌病人化疗数据cancer.csv为例,有34个肺癌病人的数据: d.cancer <- read_csv( “data/cancer.csv”, locale=locale(encoding=”GBK”)) ## Rows: 34 Columns: 6 ## ── Column s…
-
北京大学R语言教程(李东风)第23章: 数据整理
tidyverse系统 tidyverse是一系列用于数据输入输出、数据整理和数据汇总的R扩展包集合,使用这些包遵循相近的编程风格,比直接使用基本R编程要更直观、容易理解。其中readr包用于读入数据,tidyr包用于进行长、宽表转换,dplyr包用于数据整理与汇总,purr包进行map-reduce类操作,等等。 假设数据以tibble格式保存。数据集如果…
-
北京大学R语言教程(李东风)第22章: Quarto格式文件
22.1 介绍 Quarto是POSIT(原RStudio)团队开发的一个开源软件,可以将包含R、Python、Julia、Observable JS源程序的markdown文件产生运行结果后转换为各种输出格式,这些源文件可以是普通的包含程序代码的markdown文件(扩展名为.qmd),也可以是Jupyter笔记本文件(扩展名为.ipynb)。支持HTML…
-
北京大学R语言教程(李东风)第21章: Markdown格式
介绍 Markdown是一种很简单的文本文件格式,通常保存为.md扩展名。Mardown中文内容应该使用UTF-8编码。Markdown文件里面有一些简单的格式标注方法,比如两个星号之间的文字会转化为斜体,缩进四个空格或一个制表符的内容会看成代码,用井号开头的行表示标题,井号越多标题级别越低。 Markdown适用于比较简单的文章、源程序说明等,不太适用于复…
-
北京大学R语言教程(李东风)第20章: 研究项目管理
执行一个数据分析研究项目,必须遵循一定的管理规则,才能事半功倍。 可重复式科学研究 现代科学研究之所以能被大众接受,成为主流世界观,很大程度上要归功于“可重复结果的试验”。现在生物、物理、化学等领域的科研越来越复杂,重复试验越来越难,但是不能重复的试验就备受争议。 数据分析项目也是这样,你的研究结果,一定要能够被第三方研究者所重复,要尽可能地提供详尽的代码和…
-
拥有 23 万亿美元资产的量化分析师即使在犹豫不决的情况下也看到了人工智能的接管
作者:Justina Lee 金融界热爱计算机的人群正在为人工智能驱动的新时代的到来做准备,但这并不意味着他们已经准备好完全接受这项技术。 在 Invesco 对管理着 22.5 万亿美元的系统投资者进行的一项调查中,62% 的人表示,十年后人工智能将与传统分析一样重要,而 13% 的人认为人工智能将更加重要。 然而,当被问及他们自己目前对该技术的使用情况时…
-
北京大学R语言教程(李东风)第19章:函数进阶
函数调用的各种形式 在R语言中,有两条简明的理解R程序的原则: 任何成分都是R的对象(变量、函数等等); 任何活动都是调用函数(求子集、四则运算、比较、函数调用等)。 函数调用有四种方式: 一、前缀形式。这也是一般的格式,如fsub(5, 2)。 二、中缀形式。二元运算符实际上都是函数,5 – 2的写法是中缀形式,等同于`-`(5, 2)。因为-不是合法的R…
-
北京大学R语言教程(李东风)第18章: R程序效率
R是解释型语言,在执行单个运算时,效率与编译代码相近;在执行迭代循环时, 效率较低,与编译代码的速度可能相差几十倍。在循环中对变量进行修改尤其低效,因为R在修改某些数据类型的子集时会复制整个数据对象。R以向量、矩阵为基础运算单元,在进行向量、矩阵运算时效率很高,应尽量采用向量化编程。 另外,R语言的设计为了方便进行数据分析和统计建模,有意地使语言特别灵活,比…
-
北京大学R语言教程(李东风)第17 章:函数
函数基础 介绍 在现代的编程语言中使用自定义函数,优点是代码复用、模块化设计。 如果一段程序需要在多处使用,就应该将其写成一个函数,然后在多处调用。需要修改程序执行功能时,仅需要修改函数而不需要修改各处调用。如果不使用函数而是将相同的代码在多处复制粘贴,修改时就需要修改多处,很容易漏掉一处。 在编程时,把编程任务分解成小的模块,每个模块用一个函数实现,便于理…
-
北京大学R语言教程(李东风)第16章: 程序控制结构
表达式 R是一个表达式语言,其任何一个语句都可以看成是一个表达式。表达式之间以分号分隔或用换行分隔。表达式可以续行,只要前一行不是完整表达式(比如末尾是加减乘除等运算符,或有未配对的括号)则下一行为上一行的继续。若干个表达式可以放在一起组成一个复合表达式,作为一个表达式使用,复合表达式的值为最后一个表达式的值,组合用大括号表示, 如: 分支结构 分支结构包括…
-
北京大学R语言教程(李东风)第11章:列表类型
R中列表(list)类型来保存不同类型的数据。一个主要目的是提供R分析结果输出包装:输出一个变量,这个变量包括回归系数、预测值、残差、检验结果等等一系列不能放到规则形状数据结构中的内容。实际上,数据框也是列表的一种,但是数据框要求各列等长,而列表不要求。 列表可以有多个元素,但是与向量不同的是,列表的不同元素的类型可以不同,比如,一个元素是数值型向量,一个元…
-
北京大学R语言教程(李东风)第8章: R数据类型的性质
存储模式与基本类型 R的变量可以存储多种不同的数据类型,可以用typeof()函数来返回一个变量或表达式的类型。比如 typeof(1:3) ## [1] “integer” typeof(c(1,2,3)) ## [1] “double” typeof(c(1, 2.1, 3)) ## [1] “double” typeof(c(TRUE, NA, FAL…
-
北京大学Julia语言讲义第26章: 概率统计应用
概率论例子 取帽子问题 问题介绍与推导 设 n个人都戴了帽子参加聚会,聚会时摘下帽子弄乱了,散会时随机抽取一顶。问:所有人都没有取到自己的帽子的概率是多少? 令 Ai表示第 i个人取对自己的帽子,要求概率的事件为 B=⋂i=1nAic. 由概率论的Jordan公式, P(B)=1−P(Bc)=1−P(⋃i=1nAi)=1−[∑iP(Ai)−∑i<jP(…
-
北京大学Julia语言入门讲义第25章: Julia编程示例–动态规划
动态规划(dynamic programming)不完全是数学规划(最优化)问题的算法。它能解决如下问题:问题可以分解为子问题,子问题多次重复出现,就可以将已经出现的子问题记住,从而大大减小计算量。 Fibonacci数列 Fibonacci数列满足 F0=F1=1, Fn=Fn−1+Fn−2, n=2,3,…。 显然,可以写成简单的递归函数: functi…
-
北京大学Julia语言入门讲义第23章: Julia编程示例–递归趣例
23.1 汉诺塔问题 设有三根柱子A, B, C,有大小依次为1,2,…,𝑛的𝑛个空心圆盘,在A柱子上依次从低向上穿了𝑛,𝑛−1,…,1大小的圆盘。任务是要把这𝑛个圆盘移动到C柱子上,仍按照从低向上越来越小的次序。移动的要求为: 每次仅移动一个圆盘到另一个柱子上; 每次的移动,都不能使得增加一个圆盘的柱子上的大圆盘压在小圆盘上。 这个问题是典型的递归问题: …
-
北京大学Julia语言入门讲义第17章: 离散事件模拟SimJulia
对于离散事件系统模拟,比如排队系统的模拟,SimJulia包可以很容易地建模进行模拟。 一般的独立样本抽样、重要性抽样等可以直接利用Julia的随机数发生器模拟。 贝叶斯推断问题一般使用MCMC,Julia的Stan包调用Stan程序库进行MCMC计算,Stan程序会将模型转换为C++然后编译成本地二进制代码运行。 Julia的Mamba包是纯Julia语言…
-
北京大学Julia语言入门讲义第15章: 统计计算
这一部分介绍如何靠自己编写Julia程序进行定制化的统计计算。从自己编写程序作统计计算的角度简单介绍Julia中与统计计算编程有关的功能,如向量、矩阵计算,最优化,随机模拟,并行计算等。 Julia比较适合用作数值计算,编程既有Python、R、Matlab这样的语言的简洁,又有C++这样的编译语言的运行效率。统计数据分析、作图需要用到许多复杂的算法,有些算…
-
北京大学Julia语言入门讲义第14章: 统计学习介绍
这一部分介绍一些机器学习(统计学习)方法。 参考: McNicholas and Tait(2019) Data Science Using Julia, CRC Press. Jose Storopoli, Rik Huijzer, Lazaro Alonso(2022) Julia Data Science. https://cn.julialang.o…
-
北京大学Julia语言入门讲义第13章: 基本统计功能
这一部分介绍描述统计、估计、置信区间、假设检验和一些模型。 参考: McNicholas and Tait(2019) Data Science Using Julia, CRC Press. Jose Storopoli, Rik Huijzer, Lazaro Alonso(2022) Julia Data Science. https://cn.jul…
-
北京大学Julia语言入门讲义第12章: Makie包作图
这一部分介绍用Julia的Makie包作图方法。 参考: Jose Storopoli, Rik Huijzer, Lazaro Alonso(2022) Julia Data Science. https://cn.julialang.org/JuliaDataScience/ Makie: https://makie.juliaplots.org/sta…
-
北京大学Julia语言入门讲义第11章: 数据框
统计数据分析 Julia比较适合用作数值计算,编程既有Python、R、Matlab这样的语言的简洁,又有C++这样的编译语言的运行效率。统计数据分析、作图需要用到许多复杂的算法,有些算法耗时很多,比如MCMC等。大量数据的分析、计算、测试都需要易用的编程和高效的运行效率,Julia在这两点都很适合。 Julia用作统计数据分析,缺点是其问世时间还比较短,许…