Skip to content

Commit cac4455

Browse files
committed
1st commit
1 parent 51cf59e commit cac4455

14 files changed

Lines changed: 2141 additions & 2 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*.out
2+
.DS_Store

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
# MathStatsCode
2-
Codes for my mathematical statistics course
1+
Codes and Jupyter-notebooks for my course of Mathematical Statistics.

code_in_notes/exponential.do

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// file: exponential.do
2+
set more off
3+
clear
4+
set obs 100
5+
// 产生随机数
6+
gen x=-1*log(runiform())

code_in_notes/exponential.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/usr/bin/python3
2+
## file: exponential.py
3+
4+
# 导入math包,使用math中的log()函数
5+
import math
6+
import random as rd
7+
# 获取5个均匀分布随机数
8+
x=[-1*math.log(rd.random()) for i in range(5)]
9+
print(x)
10+
# 导入numpy包,使用其中的log()函数
11+
import numpy as np
12+
import numpy.random as nprd
13+
# 获取5个均匀分布随机数
14+
x=-1*np.log(nprd.random(5))
15+
print(x)

code_in_notes/uniform.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// file: uniform.c
2+
#include<stdio.h>
3+
#include<stdlib.h> // 使用标准库<stdlib.h>,包含rand()
4+
int main(int argc, char const *argv[]) {
5+
// 打印出rand()所生成的最大整数
6+
printf("%d\n",RAND_MAX);
7+
// 设置seed
8+
srand(505);
9+
// 生成(0,1)上的10个随机数
10+
int i;
11+
for (i=0; i<5; ++i){
12+
double x=(double)rand()/RAND_MAX;
13+
printf("%f ",x);
14+
}
15+
printf("\n");
16+
// 如果每次都设置seed生成(0,1)上的5个随机数
17+
//那么每次生成的随机数都相同
18+
for (i=0; i<5; ++i){
19+
srand(505);
20+
double x=(double)rand()/RAND_MAX;
21+
printf("%f ",x);
22+
}
23+
printf("\n");
24+
return 0;
25+
}

code_in_notes/uniform.do

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// file: uniform.do
2+
// 关闭--more--
3+
set more off
4+
// 清楚工作区内所有数据
5+
clear
6+
// 设置样本量
7+
set obs 100
8+
// 设置seed
9+
set seed 505
10+
// 产生随机数
11+
gen x=runiform()

code_in_notes/uniform.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/python3
2+
## file: uniform.py
3+
4+
# 导入random包
5+
import random as rd
6+
# 设置seed
7+
rd.seed(505)
8+
# 获取5个均匀分布随机数
9+
x=[rd.random() for i in range(5)]
10+
print(x)
11+
# 导入numpy中的random包
12+
import numpy.random as nprd
13+
# 设置seed
14+
nprd.seed(505)
15+
# 获取5个均匀分布随机数
16+
x=nprd.random(5)
17+
print(x)

notebook_julia/Julia.ipynb

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# Julia的安装\n",
8+
"Julia是一个开源的数值计算软件,由于具有JIT等特性,所以具有非常高的性能。我们可以从Julia官网:https://julialang.org 下载和安装。\n",
9+
"Julia的界面非常简单,不适合编写程序,因而我们一般通过配置Atom, sublime等编辑器写Julia程序。此外,通过安装Jupyter,再在Julia中安装IJulia也可以使用Jupyter调用Julia。安装IJulia的方法很简单,只需要在Julia的命令界面数据「Pkg.add(\"IJulia\")」即可,其中「Pkg.add()」即安装Julia扩展包的命令。\n",
10+
"为了展示方便,我们仍然推荐使用Jupyter作为学习工具。比如此文档就是使用Jupyter写作。\n",
11+
"# 使用Julia生成随机数\n",
12+
"在Julia中,可以使用rand()函数生成随机数。最基本的是生成一个在$(0,1)$区间内的均匀分布的随机数,使用此均匀分布随机数,给定任意的分布函数$F$,可以生成服从$F$的随机数。"
13+
]
14+
},
15+
{
16+
"cell_type": "code",
17+
"execution_count": 2,
18+
"metadata": {},
19+
"outputs": [
20+
{
21+
"name": "stdout",
22+
"output_type": "stream",
23+
"text": [
24+
"一个(0,1)区间内的随机数:0.37548057506738663\n",
25+
"20个(0,1)区间内的随机数:\n",
26+
"[0.719472, 0.447485, 0.101696, 0.166868, 0.042199, 0.29615, 0.957232, 0.688239, 0.583882, 0.30275, 0.718666, 0.945527, 0.150395, 0.650269, 0.811649, 0.770101, 0.681383, 0.066861, 0.0560345, 0.760834]"
27+
]
28+
}
29+
],
30+
"source": [
31+
"## 生成一个x~Uniform(0,1)\n",
32+
"x=rand()\n",
33+
"print(\"一个(0,1)区间内的随机数:\",x,\"\\n\")\n",
34+
"\n",
35+
"## 生成20个z~Uniform(0,1)\n",
36+
"z=rand(20)\n",
37+
"print(\"20个(0,1)区间内的随机数:\",\"\\n\")\n",
38+
"print(z)"
39+
]
40+
},
41+
{
42+
"cell_type": "markdown",
43+
"metadata": {},
44+
"source": [
45+
"如果我们需要生成一个服从分布函数$F: R\\rightarrow [0,1]$的随机数,那么只要首先生成一个$(0,1)$的随机数$u$,并令$x=F^{-1}(u)$,那么新生成的$x$即服从$F$的分布。比如,指数分布的分布函数为$1-e^{-\\frac{1}{b}\\cdot x}$,其中b为一个参数,因而我们可以使用$x=-b\\cdot \\ln(u)$来生成服从指数分布的随机数。"
46+
]
47+
},
48+
{
49+
"cell_type": "code",
50+
"execution_count": 5,
51+
"metadata": {
52+
"scrolled": true
53+
},
54+
"outputs": [
55+
{
56+
"name": "stdout",
57+
"output_type": "stream",
58+
"text": [
59+
"20个服从指数分布F(x)=1-exp{-(1/b)*x}的随机数:\n",
60+
"[2.58645, 11.1848, 0.918512, 0.543136, 3.53971, 0.259657, 1.99849, 0.350091, 3.09114, 0.165935, 0.0657694, 0.949447, 9.25605, 0.393429, 10.0648, 1.87895, 2.65323, 6.0845, 6.48842, 2.73542]"
61+
]
62+
}
63+
],
64+
"source": [
65+
"## 设定参数\n",
66+
"b=3\n",
67+
"\n",
68+
"## 生成20个x~F(x)=1-exp{-(1/b)*x}\n",
69+
"x=-1*log.(rand(20))*b\n",
70+
"print(\"20个服从指数分布F(x)=1-exp{-(1/b)*x}的随机数:\\n\")\n",
71+
"print(x)"
72+
]
73+
},
74+
{
75+
"cell_type": "markdown",
76+
"metadata": {},
77+
"source": [
78+
"我们可以使用经验分布函数(Empirical distribution function)与理论的分布函数比较,来判断我们生成的随机数是否满足某一分布。经验分布函数的定义为:$\\hat{F}(x)=\\frac{1}{N}\\cdot \\sum_{i=1}^N 1\\{X_i \\leq x\\}$,也就是给定一个$x$,其经验分布函数的值为样本中小于等于$x$的比例,比如:"
79+
]
80+
},
81+
{
82+
"cell_type": "code",
83+
"execution_count": 20,
84+
"metadata": {},
85+
"outputs": [
86+
{
87+
"name": "stdout",
88+
"output_type": "stream",
89+
"text": [
90+
" x | 分布函数 | 经验分布函数| 差的绝对值\n",
91+
"0.1 |0.0327838995179941 | 0.035 | 0.002216100482005906 \n",
92+
"0.3 |0.09516258196404037 | 0.1 | 0.004837418035959634 \n",
93+
"0.5 |0.15351827510938598 | 0.185 | 0.031481724890614016 \n",
94+
"0.7 |0.20811043366321835 | 0.255 | 0.04688956633678165 \n",
95+
"0.9 |0.2591817793182821 | 0.295 | 0.03581822068171786 \n",
96+
"1.1 |0.3069593799135585 | 0.325 | 0.018040620086441528 \n",
97+
"1.3 |0.3516556589984903 | 0.4 | 0.04834434100150975 \n",
98+
"1.5 |0.3934693402873666 | 0.455 | 0.06153065971263344 \n",
99+
"1.7 |0.43258633120299617 | 0.495 | 0.06241366879700383 \n",
100+
"1.9 |0.46918054943798604 | 0.54 | 0.070819450562014 \n",
101+
"2.1 |0.5034146962085905 | 0.575 | 0.07158530379140948 \n",
102+
"2.3 |0.5354409796390884 | 0.625 | 0.08955902036091157 \n",
103+
"2.5 |0.5654017914929217 | 0.655 | 0.08959820850707834 \n",
104+
"2.7 |0.5934303402594009 | 0.68 | 0.08656965974059916 \n",
105+
"2.9 |0.6196512434107414 | 0.715 | 0.09534875658925857 \n",
106+
"3.1 |0.6441810814626581 | 0.735 | 0.09081891853734192 \n",
107+
"3.3 |0.6671289163019204 | 0.745 | 0.0778710836980796 \n",
108+
"3.5 |0.6885967760854023 | 0.76 | 0.07140322391459775 \n",
109+
"3.7 |0.708680108866529 | 0.77 | 0.06131989113347103 \n",
110+
"3.9 |0.7274682069659874 | 0.785 | 0.05753179303401268 \n",
111+
"4.1 |0.7450446039734899 | 0.795 | 0.04995539602651011 \n",
112+
"4.3 |0.7614874461456975 | 0.8 | 0.03851255385430252 \n",
113+
"4.5 |0.7768698398515702 | 0.81 | 0.033130160148429844 \n",
114+
"4.7 |0.7912601766099203 | 0.825 | 0.03373982339007964 \n",
115+
"4.9 |0.8047224371643142 | 0.835 | 0.030277562835685723 \n",
116+
"5.1 |0.8173164759472653 | 0.845 | 0.027683524052734665 \n",
117+
"5.3 |0.8290982871984751 | 0.85 | 0.020901712801524863 \n",
118+
"5.5 |0.8401202539203061 | 0.86 | 0.019879746079693894 \n",
119+
"5.7 |0.8504313807773649 | 0.87 | 0.019568619222635086 \n",
120+
"5.9 |0.8600775119756906 | 0.87 | 0.009922488024309395 \n",
121+
"6.1 |0.8691015350902557 | 0.88 | 0.010898464909744332 \n",
122+
"6.3 |0.877543571747018 | 0.895 | 0.017456428252981993 \n",
123+
"6.5 |0.8854411560073123 | 0.895 | 0.009558843992687693 \n",
124+
"6.7 |0.8928294012476933 | 0.9 | 0.007170598752306745 \n",
125+
"6.9 |0.8997411562771962 | 0.9 | 0.0002588437228038254 \n",
126+
"7.1 |0.9062071513861237 | 0.91 | 0.0037928486138762985 \n",
127+
"7.3 |0.9122561349757057 | 0.91 | 0.002256134975705648 \n",
128+
"7.5 |0.9179150013761012 | 0.92 | 0.0020849986238988816 \n",
129+
"7.7 |0.9232089104210319 | 0.92 | 0.0032089104210318853 \n",
130+
"7.9 |0.9281613993106868 | 0.92 | 0.008161399310686712 \n",
131+
"8.1 |0.9327944872602503 | 0.925 | 0.007794487260250227 \n",
132+
"8.3 |0.9371287733993328 | 0.925 | 0.012128773399332715 \n",
133+
"8.5 |0.9411835283575701 | 0.94 | 0.001183528357570185 \n",
134+
"8.7 |0.9449767799435927 | 0.94 | 0.004976779943592802 \n",
135+
"8.9 |0.9485253932982992 | 0.945 | 0.003525393298299262 \n",
136+
"9.1 |0.9518451458788036 | 0.955 | 0.0031548541211963155 \n",
137+
"9.3 |0.9549507976064422 | 0.955 | 4.92023935577679e-5 \n",
138+
"9.5 |0.9578561564907236 | 0.955 | 0.0028561564907236825 \n",
139+
"9.7 |0.9605741400209925 | 0.96 | 0.0005741400209925418 \n",
140+
"9.9 |0.96311683259876 | 0.96 | 0.0031168325987600554 \n",
141+
"Mean absolute bias:0.03123553671578694"
142+
]
143+
}
144+
],
145+
"source": [
146+
"## 设定参数\n",
147+
"b=3\n",
148+
"\n",
149+
"## 生成200个x~F(x)=1-exp{-(1/b)*x}\n",
150+
"x=-1*log.(rand(200))*b\n",
151+
"\n",
152+
"## 给定一些点,在这些点上计算分布函数和经验分布函数\n",
153+
"x_eval=[i for i in 0.1:0.2:9.9] #0.1,0.3,...,9.9\n",
154+
"\n",
155+
"## 计算理论的分布函数\n",
156+
"F=1-exp.(-1/b.*x_eval)\n",
157+
"\n",
158+
"## 给定z计算经验分布函数\n",
159+
"function empirical_F(x,z::Float64)::Float64\n",
160+
" return mean(x.<=z)\n",
161+
"end\n",
162+
"\n",
163+
"## 计算经验分布函数\n",
164+
"Fhat=[empirical_F(x,z) for z in x_eval]\n",
165+
"\n",
166+
"## 计算经验分布函数与真实的分布函数之间的绝对差异\n",
167+
"bias=mean(abs.(Fhat-F))\n",
168+
"## 打印两个分布函数及其绝对差异,以及平均的绝对差异\n",
169+
"print(\" x | 分布函数 | 经验分布函数| 差的绝对值\\n\")\n",
170+
"for i in 1:1:length(x_eval)\n",
171+
" print(\"$(x_eval[i]) |$(F[i]) | $(Fhat[i]) | $(abs(F[i]-Fhat[i])) \\n\")\n",
172+
"end\n",
173+
"print(\"Mean absolute bias:\",bias)"
174+
]
175+
},
176+
{
177+
"cell_type": "code",
178+
"execution_count": null,
179+
"metadata": {
180+
"collapsed": true
181+
},
182+
"outputs": [],
183+
"source": []
184+
}
185+
],
186+
"metadata": {
187+
"kernelspec": {
188+
"display_name": "Julia 0.6.0",
189+
"language": "julia",
190+
"name": "julia-0.6"
191+
},
192+
"language_info": {
193+
"file_extension": ".jl",
194+
"mimetype": "application/julia",
195+
"name": "julia",
196+
"version": "0.6.0"
197+
},
198+
"latex_envs": {
199+
"LaTeX_envs_menu_present": true,
200+
"autocomplete": true,
201+
"bibliofile": "biblio.bib",
202+
"cite_by": "apalike",
203+
"current_citInitial": 1,
204+
"eqLabelWithNumbers": true,
205+
"eqNumInitial": 1,
206+
"hotkeys": {
207+
"equation": "Ctrl-E",
208+
"itemize": "Ctrl-I"
209+
},
210+
"labels_anchors": false,
211+
"latex_user_defs": false,
212+
"report_style_numbering": false,
213+
"user_envs_cfg": false
214+
}
215+
},
216+
"nbformat": 4,
217+
"nbformat_minor": 2
218+
}

0 commit comments

Comments
 (0)