前言

参数估计,是统计推断的一种。根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计和区间估计;从构造估计量的方法讲,有矩法估计、最小二乘估计、似然估计、贝叶斯估计等。
要处理两个问题:

  1. 求出未知参数的估计量;
  2. 在一定信度(可靠程度)下指出所求的估计量的精度。

信度一般用概率表示,如可信程度为95%;精度用估计量与被估参数(或待估参数)之间的接近程度或误差来度量。
本文主要是简单记录求置信区间所用到的python代码~

代码

1、导入数据

  1. import pandas as pd
  2. import numpy as np
  3. from scipy import stats
  4. path = 'D:\数据\data\data.xlsx'
  5. data = pd.read_excel(path)
  6. age = data['Age']
  7. age.mean()

Python实现参数估计 - 图1

  1. # 抽取100个样本
  2. age_sam = age.sample(100)
  3. x1 = age_sam.mean()
  4. age_sam.describe()

Python实现参数估计 - 图2

2、 计算置信区间

  1. pandas.std()默认是除以n-1,即是无偏大,如果想和numpy.std() 一样有偏,需要加上参数 doff=0,即pandas(doff-0);DataFrame的describ()中就包含有std();
  2. numpy.std() 求标准差的时候默认是除以n的,即是有偏大,np.std() 无偏样本标准差方式为加入参数 doff=1;
  1. # 正态分布下的置信区间
  2. def norm_conf (data,confidence=0.95):
  3. # https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html
  4. sample_mean = np.mean(data)
  5. sample_std = np.std(data,ddof=1)
  6. sample_size = len(data)
  7. conf_intveral = scipy.stats.norm.interval(confidence, loc=sample_mean, scale=sample_std)
  8. print(conf_intveral)
  9. norm_conf(scale_means)

Python实现参数估计 - 图3

  1. # T分布下的置信区间
  2. def ttest_conf (data,confidence=0.95):
  3. sample_mean = np.mean(data)
  4. sample_std = np.std(data,ddof=1)
  5. sample_size = len(data)
  6. conf_intveral = scipy.stats.t.interval(confidence,df = (sample_size-1) , loc=sample_mean, scale=sample_std)
  7. print(conf_intveral)
  8. ttest_conf(scale_means)

Python实现参数估计 - 图4

3、重复抽取数据

  1. scale_means = []
  2. for _ in range(1000):
  3. scale_sample = age.sample(100, replace=True)
  4. mean = scale_sample.mean()
  5. scale_means.append(mean)
  6. norm_conf(scale_means)

Python实现参数估计 - 图5

  1. ttest_conf(scale_means)

Python实现参数估计 - 图6

4、绘制数据

  1. import seaborn as sns
  2. from matplotlib import pyplot as plt
  3. sns.set_palette("hls") #设置所有图的颜色,使用hls色彩空间
  4. sns.distplot(scale_means,color="r",bins=10,kde=True)
  5. plt.title('Age')
  6. plt.xlim(25,35)
  7. plt.grid(True)
  8. plt.show()

Python实现参数估计 - 图7