推断统计python化(参数估计,假设检验与 t检验)(上)

简介: 推断统计python化(参数估计,假设检验与 t检验)(上)

推断统计的工作主要包含两类:参数估计(Parameter Estimation)假设检验(Hypothesis)

1.参数估计

参数估计通常有点估计(Point Estimate)区间估计(Interval Estimation) 两种形式。

1.1 点估计

点估计是用一个具体的值来估计一个总体的未知参数,也叫定值估计。能直接告诉我们未知参数的估计值是多少。但是样本毕竟只是总体的一部分,捕捉的信息终究有局限。因此我们使用样本数据估计出的结果不可避免地回有一定的偏差。
相比于其它中心指标,一般使用样本均值去估计总体均值得到的结果更为准确。
点估计的方法之一是矩估计法(Moment Estimation)
在这里插入图片描述

其中,x1,x2,…,xn是抽得的一组样本。
一般来说,样本容量n较大时才能保证矩估计结果的优良性。


1.2 区间估计

1.2.1 区间估计概述

区间估计考虑到了估计存在的误差,因而不是使用一个具体的值,而是使用两个数值所构成的区间来估计一个未知参数。这样估计结果包含真实值的概率增加了,但是缺点是没有直观的数值。


在这里插入图片描述

1.2.2 区间估计的方法

要进行区间估计,一般要先对参数进行点估计,得到点估计值,然后用该点估计的值加减 误差幅度(Margin of Error)置信系数(Confidence Coefficent) 的乘积而得到两个取值,则是置信区间的两个端点。
举个栗子:


在这里插入图片描述

1.3 进行区间估计的Python函数

Python中的stats模块中的t类的interval()函数用于在总体方差未知时进行区间估计。其函数语法为:

interval(alpha,df,loc,scale)
  • alpha为置信水平
  • df是检验量的自由度
  • loc为样本均值
  • scale为标准差
    在这里插入图片描述

假设我们要估计一批产品的重量的期望,抽样了十个进行称重得到重量为为:
10.1, 10, 9.8, 10.5, 9.7, 10.1, 9.9, 10.2, 10.3, 9.9
假设所称出物体重量服从正态分布,我们可以用interval()求置信度为0.95的置信区间:

from scipy import stats
import numpy as np

x = [10.1, 10, 9.8, 10.5, 9.7, 10.1, 9.9, 10.2, 10.3, 9.9]
# np.mean(x)  #求x均值
# stats.sem(x) # 求样本的标准误
# 样本均值服从t分布,样本均值的标准差为标准误
# 在区间估计时,用标准误来表示样本均值的标准差

stats.t.interval(0.95, len(x)-1, np.mean(x),stats.sem(x))

结果如下:
在这里插入图片描述


2. 案例分析

沪深300(399300.SZ)收益率均值的参数估计
以近一年数据为样本计算

# 调取数据
import numpy as np
import tushare as ts
import pandas as pd
token = 'Your Token'   # 输入你的接口密匙,获取方式及相关权限见Tushare官网。
pro = ts.pro_api(token)
df = pro.index_daily(ts_code='399300.SZ')  
df['trade_date'] = pd.to_datetime(df['trade_date'])  
df.set_index(['trade_date'], inplace=True)  # 将日期列作为行索引
df = df.sort_index() 

# 提取沪深300的收益率序列
Retindex=df.pct_chg['2020']

# 绘制沪深300收益率的直方图
plt.hist(Retindex)
Retindex.hist()

结果如图所示:
在这里插入图片描述

from scipy import stats
import matplotlib.pyplot as plt

# 求沪深300收益率的均值
mu = Retindex.mean()

# 求沪深300收益率的标准差
sigma = Retindex.std()

# 在直方图上添加正态分布曲线
fig = plt.figure()
ax1 = ax1 = fig.add_subplot(111)
ax1.plot(np.arange(-6, 6.02, 0.02), stats.norm.pdf(np.arange(-6, 6.02, 0.02), mu, sigma), 'r')
ax2 = ax1.twinx()
ax2.hist(Retindex)
plt.show()

结果如图:
在这里插入图片描述

stats.t.interval(0.95, len(Retindex)-1, mu, stats.sem(Retindex))

结果如下:
在这里插入图片描述
(备注:这里序列中的收益率如-0.02是以-2来表示的,0.032则以3.2表示,而不是0.032。所以得到的置信区间结果不能读错了,-0.07意思不是跌了七个点。)

目录
相关文章
|
5月前
|
开发者 Python 容器
python函数基础以及函数参数简解
python函数基础以及函数参数简解
|
3月前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1459 4
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
2月前
|
Python
SciPy 教程 之 Scipy 显著性检验 9
SciPy 教程之 Scipy 显著性检验第9部分,介绍了显著性检验的基本概念、作用及原理,通过样本信息判断假设是否成立。着重讲解了使用scipy.stats模块进行显著性检验的方法,包括正态性检验中的偏度和峰度计算,以及如何利用normaltest()函数评估数据是否符合正态分布。示例代码展示了如何计算一组随机数的偏度和峰度。
31 1
|
2月前
|
BI Python
SciPy 教程 之 Scipy 显著性检验 8
本教程介绍SciPy中显著性检验的应用,包括如何利用scipy.stats模块进行显著性检验,以判断样本与总体假设间的差异是否显著。通过示例代码展示了如何使用describe()函数获取数组的统计描述信息,如观测次数、最小最大值、均值、方差等。
30 1
|
2月前
|
Python
SciPy 教程 之 Scipy 显著性检验 7
SciPy 教程之 Scipy 显著性检验第7部分,介绍显著性检验的基本概念及其在 SciPy 中的应用。显著性检验用于评估样本数据与假设之间的差异是否由随机因素引起。SciPy 的 `scipy.stats` 模块提供了执行显著性检验的功能,包括 KS 检验等方法,用于检测数据是否符合特定分布。示例代码展示了如何使用 KS 检验验证一组数据是否符合正态分布。
29 2
|
2月前
|
Python
SciPy 教程 之 Scipy 显著性检验 3
本教程介绍Scipy显著性检验,包括其基本概念、原理及应用。显著性检验用于判断样本与总体假设间的差异是否显著,是统计学中的重要工具。Scipy通过`scipy.stats`模块提供了相关功能,支持双边检验等方法。
41 1
|
3月前
|
数据可视化 数据挖掘 Python
Seaborn 库创建吸引人的统计图表
【10月更文挑战第11天】本文介绍了如何使用 Seaborn 库创建多种统计图表,包括散点图、箱线图、直方图、线性回归图、热力图等。通过具体示例和代码,展示了 Seaborn 在数据可视化中的强大功能和灵活性,帮助读者更好地理解和应用这一工具。
|
2月前
|
Python
SciPy 教程 之 Scipy 显著性检验 1
本教程介绍Scipy显著性检验,包括统计假设、零假设和备择假设等概念,以及如何使用scipy.stats模块进行显著性检验,以判断样本与总体假设间是否存在显著差异。
36 0
|
3月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
55 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
3月前
|
Java 程序员 C++
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
37 0
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数