北大讲义

  • 北京大学R语言教程(李东风)第2章:R语言入门运行样例

    启动R软件后进入命令行界面,每输入一行命令,就在后面显示计算结果。可以用向上和向下箭头访问历史命令;可以从已经运行过的命令中用鼠标拖选加亮后,用Ctrl+C复制后用Ctrl+V粘贴(这是MS Windows下的快捷键组合),粘贴的目标是当前命令行。 如果使用RStudio软件,有一个“Console窗格”相当于命令行界面。在RStudio中,可以用New F…

    2023年10月20日
    38900
  • 北京大学R语言教程(李东风)第1章: R语言介绍

    R的历史和特点 R的历史 R语言来自S语言,是S语言的一个变种。S语言由Rick Becker, John Chambers, Alan Wilks等人在贝尔实验室开发,著名的C语言、Unix系统也是贝尔实验室开发的。 S语言第一个版本开发于1976-1980,基于Fortran;于1980年移植到Unix, 并对外发布源代码。1984年出版的“棕皮书” (…

    2023年10月19日
    77600
  • 北京大学Julia语言讲义第26章: 概率统计应用

    概率论例子 取帽子问题 问题介绍与推导 设 n个人都戴了帽子参加聚会,聚会时摘下帽子弄乱了,散会时随机抽取一顶。问:所有人都没有取到自己的帽子的概率是多少? 令 Ai表示第 i个人取对自己的帽子,要求概率的事件为 B=⋂i=1nAic. 由概率论的Jordan公式, P(B)=1−P(Bc)=1−P(⋃i=1nAi)=1−[∑iP(Ai)−∑i<jP(…

    2023年9月7日
    19400
  • 北京大学Julia语言入门讲义第25章: Julia编程示例–动态规划

    动态规划(dynamic programming)不完全是数学规划(最优化)问题的算法。它能解决如下问题:问题可以分解为子问题,子问题多次重复出现,就可以将已经出现的子问题记住,从而大大减小计算量。 Fibonacci数列 Fibonacci数列满足 F0=F1=1, Fn=Fn−1+Fn−2, n=2,3,…。 显然,可以写成简单的递归函数: functi…

    2023年9月6日
    10700
  • 北京大学Julia语言入门讲义第24章: Julia编程示例–单词和文本

    词典中单词的练习 二分法查词 设dict是一个字符串数组,包含了许多单词,按字典序排列。为了检查字符串word是否在dict中,可以用word in dict的写法,但是这样会进行线性搜索,效率较低。因为词典dict是按升序排序的,可以用二分法搜索。程序如下: function indict(dict, word) a = 1 b = length(dict…

    2023年9月6日
    5000
  • 北京大学Julia语言入门讲义第23章: Julia编程示例–递归趣例

    23.1 汉诺塔问题 设有三根柱子A, B, C,有大小依次为1,2,…,𝑛的𝑛个空心圆盘,在A柱子上依次从低向上穿了𝑛,𝑛−1,…,1大小的圆盘。任务是要把这𝑛个圆盘移动到C柱子上,仍按照从低向上越来越小的次序。移动的要求为: 每次仅移动一个圆盘到另一个柱子上; 每次的移动,都不能使得增加一个圆盘的柱子上的大圆盘压在小圆盘上。 这个问题是典型的递归问题: …

    2023年9月4日
    16100
  • 北京大学Julia语言入门讲义第22章: Julia编程示例–自然数处理

    在Julia中用Int64保存整数,如果需要许多位的整数就用BigInt类型。 从整数值拆分各个数字 编写一个函数,从一个正整数如12345,拆分成各个数字的数组[1,2,3,4,5]。 输入: n: 要拆分的值。 base: n的进制。 ndigits: 输出的位数,不足时在左边添加0,超过时出错。 function todigits(n, base = …

    2023年9月4日
    3900
  • 北京大学Julia语言入门讲义第21章: Julia编程示例–科学计算问题

    用迭代计算平方根 求某个正数 x的平方根,相当于求解方程 f(u)=u2−x=0。利用一阶泰勒展开式 f(u)=f(u0)+f′(u0)(u−u0)+o(u−u0),其中 f′(u)=2u,令 f(u)=0得 u≈u0−f(u0)f′(u0), 将其作为迭代公式 un=un−1−f(un−1)f′(un−1)=un−1−un−12−x2un−1=12(un−…

    2023年9月2日
    17000
  • 北京大学Julia语言入门讲义第20章: Julia统计图形—Gadfly

    介绍 Julia语言没有内建作图能力,作图需要通过扩展包提供,因为Julia语言的历史还比较短,现在有多种作图用的扩展包但是没有一个占绝对优势的包。比较常用的有Gadfly, Plots, PyPlot包。Julia还在快速发展阶段,功能的兼容性不够稳定,作图功能尤其如此。本文演示Gadfly包作图。 本文作者先安装了Anaconda3,然后安装Julia1…

    2023年9月2日
    9300
  • 北京大学Julia语言入门第19章: Julia统计图形–Plots库

    介绍 Julia语言没有内建作图能力,作图需要通过扩展包提供,因为Julia语言的历史还比较短,现在有多种作图用的扩展包但是没有一个占绝对优势的包。比较常用的有Plots, Makie, Gadfly, PyPlot包。其中Makie出现较晚,功能比较强大,后端安装容易。 本文演示Plots包。参见: https://docs.juliaplots.org/…

    2023年9月1日
    36700
  • 北京大学Julia语言入门讲义第18章: Julia程序效率介绍

    Julia的语言特点 Julia语言是一种历史很短的计算机语言,公开发布于2012年。其设计理念就是希望兼有Python、R、Matlab这样的动态语言的易用性,以及C、C++、Java这样的静态语言的运行速度。所以Julia很适合用来做统计和金融计算。 Julia语言的特点有: 动态语言; 使用基于LLVM的动态编译技术,可以动态生成高效的运行代码; 不需…

    2023年8月30日
    26000
  • 北京大学Julia语言入门讲义第17章: 离散事件模拟SimJulia

    对于离散事件系统模拟,比如排队系统的模拟,SimJulia包可以很容易地建模进行模拟。 一般的独立样本抽样、重要性抽样等可以直接利用Julia的随机数发生器模拟。 贝叶斯推断问题一般使用MCMC,Julia的Stan包调用Stan程序库进行MCMC计算,Stan程序会将模型转换为C++然后编译成本地二进制代码运行。 Julia的Mamba包是纯Julia语言…

    2023年8月29日
    13600
  • 北京大学Julia语言入门讲义第16章: 随机模拟

    介绍 在用数学模型, 包括概率统计模型处理实际应用中的问题时,我们希望建立的模型能够尽可能地符合实际情况。但是,实际情况是错综复杂的, 如果一味地要求模型与实际完全相符,会导致模型过于复杂, 以至于不能进行严格理论分析,结果导致模型不能使用。所以,实际建模时会忽略许多细节, 增加一些可能很难验证的理论假设,使得模型比较简单,可以用数学理论进行分析研究。 这样…

    2023年8月28日
    15900
  • 北京大学Julia语言入门讲义第15章: 统计计算

    这一部分介绍如何靠自己编写Julia程序进行定制化的统计计算。从自己编写程序作统计计算的角度简单介绍Julia中与统计计算编程有关的功能,如向量、矩阵计算,最优化,随机模拟,并行计算等。 Julia比较适合用作数值计算,编程既有Python、R、Matlab这样的语言的简洁,又有C++这样的编译语言的运行效率。统计数据分析、作图需要用到许多复杂的算法,有些算…

    2023年8月28日
    32100
  • 北京大学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…

    2023年8月27日
    10800
  • 北京大学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…

    2023年8月26日
    21300
  • 北京大学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…

    2023年8月25日
    30500
  • 北京大学Julia语言入门讲义第11章: 数据框

    统计数据分析 Julia比较适合用作数值计算,编程既有Python、R、Matlab这样的语言的简洁,又有C++这样的编译语言的运行效率。统计数据分析、作图需要用到许多复杂的算法,有些算法耗时很多,比如MCMC等。大量数据的分析、计算、测试都需要易用的编程和高效的运行效率,Julia在这两点都很适合。 Julia用作统计数据分析,缺点是其问世时间还比较短,许…

    2023年8月24日
    10100
  • 北京大学Julia语言入门讲义第10章: 泛型编程和其它内容

    方法 Julia的函数能够针对不同的自变量类型通过即时编译产生高效代码,不需要声明自变量类型。 函数可以声明自变量类型和返回值类型,这可以限定能使用的自变量类型,避免错误的输入,使得程序意图更明显;同一个函数可以有不同类型的自变量,这其实是多个函数共用同一个函数名,称这些函数为该函数名的“方法”(methods)。这种做法称为“多重派发”(multiple …

    2023年8月23日
    15900
  • 北京大学Julia语言入门讲义第9章: 类型系统

    程序中的常量和变量都有类型,比如,常数108的类型为Int64。函数typeof()可以返回常量或变量的类型,如 变量的类型由其中保存的值的类型决定,Julia变量实际是“绑定”到了某个保存了值的地址。如 x = 108; typeof(x) ## Int64 用isa运算符可以查看某个对象是否属于某个类型,如: 函数typemax()可以求一个数值类型能保…

    2023年8月22日
    18500
  • 北京大学Julia语言入门讲义第8章: 作用域

    变量的作用域是某个变量可见的范围。同名的变量使得问题变得复杂,变量作用域使得同名的不同变量能够区分开来。 变量作用域都是某些程序结构的范围内,比如一个函数定义范围,而不是任意的一段程序行的范围。 有两种主要的作用域: 全局作用域 局部作用域,可以嵌套,分为: 软局部作用域 硬局部作用域 全局作用域适用于模块(module)内,baremodule内,或者在命…

    2023年8月21日
    18300
  • 北京大学Julia语言入门讲义第7章: 模块

    前面的例子都是相当于在命令行直接运行的。这样,变量和函数属于命令行对应的名字空间,称为Main模块。如果要写比较长的程序,所有变量和函数都在同一个名字空间中就很容易发生名字冲突。 Julia使用模块来区分名字空间,不同模块的同名变量、函数没有关系,不会发生冲突。 在一个模块内,可以有模块本身的全局变量,不同模块的全局变量即使同名也没有关系。 在模块内,可以控…

    2023年8月20日
    21600
  • 北京大学Julia语言讲义第6章: 文件

    对文本文件,readlines(filename)函数根据输入的文件名读入文件的各行为字符串数组,每个元素是一行,缺省行为会读入换行符但结果字符串不包含换行符,加选项keep=true可以保留换行符。用read(filename, String)将整个文件读入为一个长字符串。 用fh = open(filename)打开指定的文件用于读取,这里fh称为一个文…

    2023年8月18日
    14200
  • 北京大学Julia语言入门讲义第5章: 字符串

    Julia有单独的字符型Char,如’a’, ‘B’,以Unicode编码表示。 对字符型变量ch,用Int(ch)获得其编码,如: ‘中’ ## ‘中’: Unicode U+4E2D (category Lo: Letter, other) Int(‘中’) ## 20013 20013是十六进制数4E2D的十进制值。 适用于字符的函数: isdigit…

    2023年8月18日
    18000
  • 北京大学Julia语言入门第4章: 复合数据类型进阶

    这一部分介绍Julia的数组和数组运算,以及收集容器(collections)类型的一般用法。 一维数组 Julia支持一维和多维的数组,当一维数组的元素是数值时,也可以理解成数学中的向量。 在程序中直接定义一个向量,只要用方括号内写多个逗号分隔的数值,如 v1 = [2, 3, 5, 7, 11, 13, 17] 7-element Vector{Int6…

    2023年8月16日
    22300
  • 北京大学Julia语言入门讲义第3章: 函数进阶

    参数传递模式 Julia的参数传递是“共享传递”(pass by sharing),这样可以省去复制的开销。如果参数是标量的数值、字符串、元组(tuple)这样的非可变类型,参数原来的值不会被修改;如果参数是数组这样的可变(mutable)数据类型,则函数内修改了这些参数保存的值,传入的参数也会被修改。 例如,非可变类型不会被修改: function f(n…

    2023年8月14日
    18400
  • 北京大学Julia语言入门讲义第2章: 复合数据结构

    这一部分介绍Julia的向量、元组、集合、字典等复合数据结构,以及函数的进一步介绍。 一维数组 Julia支持一维和多维的数组,当一维数组的元素是数值时,也可以理解成数学中的向量。 在程序中直接定义一个向量,只要用方括号内写多个逗号分隔的数值,如 v1 = [2, 3, 5, 7, 11, 13, 17] 7-element Vector{Int64}: 2…

    2023年8月12日
    11500
  • 北京大学Julia语言入门讲义第1章: 基本使用

    介绍 Julia程序语言是一种计算机编程语言,就像C、C++、Fortran、Java、R、Python、Matlab等程序语言一样。Julia语言历史比较短,发布于2012年,是MIT的几位作者(Jeff Bezanson, Stefan Karpinski, Viral Shah, Alan Edelman)和全世界的参与者共同制作的。主网站在https…

    2023年8月12日
    30600
  • 北京大学金融时间序列分析讲义第28章: 状态空间模型

    上一章的局部水平模型是线性高斯状态空间模型的一个简单特例。本章给出状态空间模型,举例说明这种模型能够表示的其它模型,如ARIMA模型,结构时间序列模型,时变回归模型,有自相关误差的回归模型,随机波动率模型等,并给出滤波、平滑、预报公式和参数估计方法。 参考: (Durbin and Koopman 2012) (Tsay 2010) (Beijers 202…

    2023年8月9日
    20600
  • 北京大学金融时间序列分析讲义第27章: 局部水平模型

    状态空间模型是时间序列分析领域中一类强大、灵活、多样的模型,配合卡尔曼滤波技术,可以涵盖ARIMA模型、许多非平稳的、带有外生变量的模型,比前面所述的线性时间序列模型更为灵活。R扩展包statespacer实现了许多基于线性高斯状态空间模型的模型,并且可以自定义模型。 参考: (Tsay 2010) (Durbin and Koopman 2012) (Be…

    2023年8月9日
    14700
客服
客服
关注订阅号
关注订阅号
分享本页
返回顶部