中科大统计学习(刘东)作业1
2. Learn to install Anaconda (version ≥ 3.7) and OpenCV-Python (ver-sion ≥ 3.4) on your PC. Write down the installation steps, which can be very helpful for the following exercises and projects.
1) Anaconda 3 下载安装。
a)下载。登陆Anaconda官网或镜像网站下载安装包。
在此我选择从清华大学开源镜像网站进行下载。
因为我的电脑是Win-64,在此我选择的是Anaconda3-2021.04-Windows-x86_64版本,对应的python版本为python 3.8。所选Anaconda版本符合作业要求。
b)安装。选择All Users,安装路径我选择了D盘。接下来的Add Anaconda3 to the system PATH environment variable 选项不要勾选,以免后续会出现问题。在安装结束后,手动添加环境变量。
c)添加环境变量。按照如下步骤:此电脑----->属性----->高级系统设置----->环境变量----->系统变量中的path----->编辑----->新建,添加如下环境变量。
D:\software_anzhuang\anaconda3
D:\software_anzhuang\anaconda3\Scripts
D:\software_anzhuang\anaconda3\Library\mingw-w64\bin
D:\software_anzhuang\anaconda3\Library\usr\bin
D:\software_anzhuang\anaconda3\Library\bin
d)测试是否配置成功。
进入cmd,输入 python,看是否有python环境。
然后在cmd中输入 conda --version ,如图就是有conda环境。
e)打开Anaconda进入界面,安装jupyter notebook。
2) OpenCV-Python安装。
进入清华大学镜像中心下载地址,下载opencv_python-4.5.4.60-cp38-cp38-win_amd64(对应python3.8,win 64)。将下载好的whl文件移动到D:\software_anzhuang\anaconda3\Lib\site-packages这个文件夹下,然后进入cmd命令行cd到whl文件所在目录,然后输入pip install opencv_python-4.5.4.60-cp38-cp38-win_amd64.whl,然后系统会自动安装成功。
5. Choose a pair of parameters (u,
σ
2
\sigma^2
σ2) to generate N random numbers that follow the Gaussian distribution, then calculate the mean and variance of the random numbers and compare with the ground-truth (µ,
σ
2
\sigma^2
σ2). Set N to 100, 1000, 10000, 100000, …, to observe the change of results.
取 u=100,
σ
\sigma
σ=50,
σ
2
\sigma^2
σ2=2500。如下编写的gauss_N函数,可以生成N个服从(mu, sigma^2)高斯分布的随机数,并且计算输出N个随机数的均值和方差。(mu=100,sigma = 50, sigma^2 = 2500)
import matplotlib.pyplot as plt
import random
import numpy as np
def gauss_N(Nf, muf, sigmaf):
X = []
for i in range(Nf):
temp = random.gauss(muf, sigmaf)
X.append(temp)
a = np.mean(X)
b = np.var(X)
c = np.var(X, ddof = 1)
print('均值:',a)
#总体方差
print('总体方差:',b)
#样本方差
print('样本方差:',c)
return a, b, c
N = 100:
mu = 100
sigma = 50
N = 100
mu1, vara1, varb1 = gauss_N(N, mu, sigma)
均值: 102.58584066600177
总体方差: 3296.343493623705
样本方差: 3329.639892549197
N = 1000:
mu = 100
sigma = 50
N = 1000
mu2, vara2, varb2 = gauss_N(N, mu, sigma)
均值: 98.26718854594877
总体方差: 2432.7867772642103
样本方差: 2435.2219992634737
N = 10000:
mu = 100
sigma = 50
N = 10000
mu3, vara3, varb3 = gauss_N(N, mu, sigma)
均值: 99.13580131855666
总体方差: 2495.946525853973
样本方差: 2496.1961454685197
N = 100000:
mu = 100
sigma = 50
N = 100000
mu4, vara4, varb4=gauss_N(N, mu, sigma)
均值: 99.91563040089545
总体方差: 2506.717693537597
样本方差: 2506.7427609652063
N = 1000000:
mu = 100
sigma = 50
N = 1000000
mu5, vara5, varb5=gauss_N(N, mu, sigma)
均值: 100.03564591878155
总体方差: 2497.611898108561
样本方差: 2497.614395722957
N = 10000000:
mu = 100
sigma = 50
N = 10000000
mu6, vara6, varb6=gauss_N(N, mu, sigma)
均值: 99.98937114769309
总体方差: 2497.8830545823084
样本方差: 2497.883304370639
为观察更加直观,下面将均值跟方差的变化趋势使用图形化方式表示。横坐标为lg N,纵坐标分别为均值、总体方差、样本方差。
均值:
Nt = [1,2,3,4,5,6]
mut =[mu1,mu2,mu3,mu4,mu5,mu6]
plt.scatter(Nt, mut, s=20)
plt.axhline(100,c="r",ls="--")
plt.xlabel("lg N")
plt.ylabel("mu")
plt.show()
总体方差:
Nt = [1,2,3,4,5,6]
mut =[vara1,vara2,vara3,vara4,vara5,vara6]
plt.scatter(Nt, mut, s=20)
plt.axhline(2500,c="r",ls="--")
plt.xlabel("lg N")
plt.ylabel("sigma^2")
plt.show()
样本方差:
Nt = [1,2,3,4,5,6]
mut =[varb1,varb2,varb3,varb4,varb5,varb6]
plt.scatter(Nt, mut, s=20)
plt.axhline(2500,c="r",ls="--")
plt.xlabel("lg N")
plt.ylabel("sigma^2")
plt.show()
观察得到,随着N的增大,生成的N个随机数的均值越来越接近u =100,方差σ^2越来越接近2500。
可以得出结论,当样本数目越多,统计量(均值,方差)越接近理论真实值。
6. We already know that if we use
y
^
=
∑
i
y
i
N
\hat y =\frac {\sum_{i}y_i}{N}
y^=N∑iyito estimate a variable, it corresponds to minimizing least squares
m
i
n
y
∑
i
(
y
i
−
y
)
2
min_y \sum_i{(y_i-y)}^2
miny∑i(yi−y)2.Now we use
y
^
=
∏
i
y
i
N
\hat y = \sqrt[N]{\prod_iy_i}
y^=N∏iyito estimate a variable, what can be the corresponding minimization problem?
答:对应最小化问题:
m
i
n
y
∑
i
(
l
g
y
i
−
l
g
y
)
2
min_y \sum_i(lgy_i-lgy)^2
miny∑i(lgyi−lgy)2
令
f
(
y
)
=
∑
i
(
l
g
y
i
−
l
g
y
)
2
=
∑
i
(
l
g
y
i
)
2
−
2
(
l
g
y
i
)
(
l
g
y
)
+
N
(
l
g
y
)
2
f(y) = \sum_i(lgy_i-lgy)^2 = \sum_i(lgy^i)^2-2(lgy^i)(lgy)+N(lgy)^2
f(y)=∑i(lgyi−lgy)2=∑i(lgyi)2−2(lgyi)(lgy)+N(lgy)2
故
d
f
(
y
)
d
y
=
2
N
l
g
y
y
−
2
y
∑
i
(
l
g
y
i
)
=
2
l
g
y
N
y
−
2
y
lg
(
∏
i
y
i
)
\frac{df(y)}{dy}=\frac{2Nlgy}{y}-\frac2y\sum_i(lgy_i)=\frac{2lgy^N}{y}-\frac2y\lg(\prod_iy_i)
dydf(y)=y2Nlgy−y2∑i(lgyi)=y2lgyN−y2lg(∏iyi)
令
d
f
(
y
)
d
y
=
0
\frac{df(y)}{dy}=0
dydf(y)=0,有
l
g
y
N
=
l
g
(
∏
i
y
i
)
lgy^N=lg(\prod_iy_i)
lgyN=lg(∏iyi)
即
y
N
=
∏
i
y
i
y^N=\prod_iy_i
yN=∏iyi
可得
y
^
=
∏
i
y
i
N
\hat y = \sqrt[N]{\prod_iy_i}
y^=N∏iyi
,同时恒有
f
"
>
0
f^{"}>0
f">0,所以此时取得最小值
因此,对应最小化问题为:
m
i
n
y
∑
i
(
l
g
y
i
−
l
g
y
)
2
min_y \sum_i(lgy_i-lgy)^2
miny∑i(lgyi−lgy)2