python实现统计-描述性统计与推断性统计

描述性统计

数据的位置

#求平均数

df.mean()

#求中位数

df.median()

#求众数

df.mode()

#求上下四分位数

[df.quantile(i) for i in [0.25,0.75]]

#求极差

df.max()-df.min()

#求平均绝对偏差

df.mad()

#求方差

df.var()

#求标准差

df.std()

离散度指标

极差是指一个数据集中最大值与最小值之差,其计算公式为:极差=最大值一最小值。极差的优点在于计算简单,能够快速反映出数据的范围。但是,极差提供的信息量相对比较少,难以充分反映分布的总体情况。

平均绝对偏差(Mean Absolute Deviation)

一个数据与均值的差值越大,说明该数据值偏离均值越远。我们使用数据与均值的差值之绝对值来衡量整体的离散程度,即平均绝对偏差。

方差(Variance)

方差是根据数据与均值偏差的平方算出的用于衡量数据离散度的指标。

标准差(Standard Deviation)

标准差是方差的平方根。

推断性统计

聚类分析

K-means函数

主成分分析

sklearn.decomposition.PCA函数

相关性分析

#计算上证综指与深圳综指收益率的相关系数

df1.index.corr(df2.index)

注意:得出的值,如相关系数接近 1 表示正相关,相关系数接近 0 表示不相关(此结论不严谨,但是初学者这样记就可以),相关系数接近-1 表示负相关

概率分布估计

import matplotlib.pyplot as plt

from scipy import stats

density=stats.kde.gaussian_kde(HSRet300.iloc[:,1])

bins=np.arange(-5,5,0.02) #设定分割区间

plt.subplot(211)

plt.plot(bins,density(bins))

plt.title('HS300')

plt.subplot(212)

plt.plot(bins,density(bins).cumsum())

plt.title('HS300 Cumulative')

#随机变量生成

import numpy as np

import pandas as pd

RandomNumber=np.random.choice([1,2,3,4,5],size=100,replace=True,\

p=[0.1,0.1,0.3,0.3,0.2])

pd.Series(RandomNumber).value_counts()

pd.Series(RandomNumber).value_counts()/100

t检验

t检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n < 30),总体标准差σ未知的正态分布

t检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。它与f检验、卡方检验并列。t检验是戈斯特为了观测酿酒质量而发明的,并于1908年在Biometrika上公布。

举一个例子,比如,你要检验两独立样本均数差异是否能推论至总体,而行的t检验。

两样本(如某班男生和女生)某变量(如身高)的均数并不相同,但这差别是否能推论至总体,代表总体的情况也是存在著差异呢?

会不会总体中男女生根本没有差别,只不过是你那麼巧抽到这2样本的数值不同?

为此,我们进行t检定,算出一个t检定值。

与统计学家建立的以「总体中没差别」作基础的随机变量t分布进行比较,看看在多少%的机会(亦即显著性sig值)下会得到目前的结果。

若显著性sig值很少,比如<0.05(少於5%机率),亦即是说,「如果」总体「真的」没有差别,那麼就只有在机会很少(5%)、很罕有的情况下,才会出现目前这样本的情况。虽然还是有5%机会出错(1-0.05=5%),但我们还是可以「比较有信心」的说:目前样本中这情况(男女生出现差异的情况)不是巧合,是具统计学意义的,「总体中男女生不存差异」的虚无假设应予拒绝,简言之,总体应该存在著差异。

代码:

#输入两个变量

from scipy import stats

stats.ttest_ind(df1.index,df2.index)

置信区间估计

#求出上证综指的收益率均值

mu=Retindex.mean()

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

单因素方差分析

import statsmodels.stats.anova as anova

from statsmodels.formula.api import ols

model=ols('Return ~ C(Industry)',data=df1.dropna()).fit()

table1 = anova.anova_lm(model)

多因素方差分析

model=ols('earnings ~C(married)+C(educatn)',data=df1.dropna()).fit()

table2 = anova.anova_lm(model)

一元回归分析

#构建上证综指与深证成指收益率的回归模型

import statsmodels.api as sm

model=sm.OLS(SHRet,sm.add_constant(SZRet)).fit()

#查看回归模型结果

print(model.summary())

#查看前五个回归值

model.fittedvalues[:5]

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值