精华内容
下载资源
问答
  • 前言参数估计,是统计推断的一种。根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计和区间估计;从构造估计量的方法讲,有矩法估计、最小二乘估计、似然估计、贝叶斯估计等。...

    前言

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

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

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

    代码

    1、导入数据

    import pandas as pd
    import numpy as np
    from scipy import stats
    path = 'D:\数据\data\data.xlsx'
    data = pd.read_excel(path)
    age = data['Age']
    age.mean()
    be3396a32c1ff78c0dd22034a84cb845.png
    # 抽取100个样本
    age_sam = age.sample(100)
    x1 = age_sam.mean()
    age_sam.describe()
    f96bfd7ee75750577aba1c49d3ba3497.png

    2、 计算置信区间

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

    3、重复抽取数据

    scale_means = []
    for _ in range(1000):
       scale_sample = age.sample(100, replace=True)
       mean = scale_sample.mean()
       scale_means.append(mean)
       
    norm_conf(scale_means)
    791168d12cf60679c2fbe127b2c4ac73.png
    ttest_conf(scale_means)
    3d719654c9fa071ea21f7134bc5bef73.png

    4、绘制数据

    import seaborn as sns 
    from matplotlib import pyplot as plt

    sns.set_palette("hls"#设置所有图的颜色,使用hls色彩空间
    sns.distplot(scale_means,color="r",bins=10,kde=True)
    plt.title('Age')
    plt.xlim(25,35)
    plt.grid(True)

    plt.show()
    8e7d6b20e7eab5cf122719be71a948b8.png
    展开全文
  • 一、前言参数估计(parameter estimation),统计推断的一种。根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计与区间估计:从构造估计量的方法讲,有矩法估计、最小二乘估计、...

    一、前言

    参数估计(parameter estimation),统计推断的一种。根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计与区间估计:从构造估计量的方法讲,有矩法估计、最小二乘估计、似然估计、贝叶斯估计等。要处理两个问题:(1)求出未知参数的估计量;(2)在一定信度(可靠程度)下指出所求的估计量的精度。信度一般用概率表示,如可信程度为95%;精度用估计量与被估参数(或待估参数)之间的接近程度或误差来度量。

    本文主要是简单记录求置信区间所用到的python代码~

    二、代码

    1、导入数据

    import pandas as pd

    import numpy as np

    from scipy import stats

    path = 'D:\数据\data\data.xlsx'

    data = pd.read_excel(path)

    age = data['Age']

    age.mean()

    # 抽取100个样本

    age_sam = age.sample(100)

    x1 = age_sam.mean()

    age_sam.describe()

    2、计算置信区间

    ps:

    1)、pandas.std() 默认是除以n-1 的,即是无偏的,如果想和numpy.std() 一样有偏,需要加上参数ddof=0 ,即pandas.std(ddof=0) ;DataFrame的describe()中就包含有std();

    2)、 numpy.std() 求标准差的时候默认是除以 n 的,即是有偏的,np.std无偏样本标准差方式为加入参数 ddof = 1;

    # 正态分布下的置信区间

    def norm_conf (data,confidence=0.95):

    # https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html

    sample_mean = np.mean(data)

    sample_std = np.std(data,ddof=1)

    sample_size = len(data)

    conf_intveral = scipy.stats.norm.interval(confidence, loc=sample_mean, scale=sample_std)

    print(conf_intveral)

    正态分布官网

    # T分布下的置信区间

    def ttest_conf (data,confidence=0.95):

    sample_mean = np.mean(data)

    sample_std = np.std(data,ddof=1)

    sample_size = len(data)

    conf_intveral = scipy.stats.t.interval(confidence,df = (sample_size-1) , loc=sample_mean, scale=sample_std)

    print(conf_intveral)

    ttest_conf(scale_means)

    T分布官网

    3、重复抽取数据

    scale_means = []

    for _ in range(1000):

    scale_sample = age.sample(100, replace=True)

    mean = scale_sample.mean()

    scale_means.append(mean)

    norm_conf(scale_means)

    ttest_conf(scale_means)

    4、绘制数据

    import seaborn as sns

    from matplotlib import pyplot as plt

    sns.set_palette("hls") #设置所有图的颜色,使用hls色彩空间

    sns.distplot(scale_means,color="r",bins=10,kde=True)

    plt.title('Age')

    plt.xlim(25,35)

    plt.grid(True)

    plt.show()

    参考链接

    1、[python skill]利用python计算T分布下的置信区间

    展开全文
  • 参数估计参数估计(parameter estimation)统计推断的一种。根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计与区间估计:从构造估计量的方法讲,有矩法估计、最小二乘估计、...

    参数估计

    参数估计(parameter estimation)

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

    (1)求出未知参数的估计量;

    (2)在一定信度(可靠程度)下指出所求的估计量的精度。信度一般用概率表示,如可信程度为95%;精度用估计量与被估参数(或待估参数)之间的接近程度或误差来度量。

    导入数据对数据进行概览

    导入数据并数据做预览

    import pandas as pd

    import numpy as np

    #from scipy import stats

    import scipy as sc

    data1 = pd.read_csv(r'D:\univ.csv',usecols= [2],encoding='gbk')

    data=data1.sample(80)

    data.describe()

    总分 count 80.000000 mean 68.870375 std 7.078940 min 63.290000 25% 64.485000 50% 65.835000 75% 71.692500 max 100.000000

    data.mean(),data.count()

    (总分 68.69075

    dtype: float64, 总分 80

    dtype: int64)

    由此可以看到,样本中共有100个数据,均值为68.5061

    对数据做抽样

    对样本中的100个数据抽取90个样本,可以进行多次测试,均值总在68.5061的上下一定范围内波动:

    # 抽取100个样本

    data_sam = data.sample(10)

    x1 = data_sam.mean()

    data_sam.describe()

    总分 count 10.000000 mean 67.704000 std 6.024788 min 63.370000 25% 64.845000 50% 65.255000 75% 66.367500 max 82.430000

    计算计算置信区间

    关于pandas.std()与numpy.std()pandas.std() 默认是除以n-1 的,即是无偏的,如果想和numpy.std() 一样有偏,需要加上参数ddof=0 ,即pandas.std(ddof=0) ;DataFrame的describe()中就包含有std();

    numpy.std() 求标准差的时候默认是除以 n 的,即是有偏的,np.std无偏样本标准差方式为加入参数 ddof = 1;

    计算正态分布下的置信区间

    def norm_conf(data,confidence=0.95):

    sample_mean = np.mean(data)

    sample_std = np.std(data,ddof=1)

    sample_size = len(data)

    conf_intveral=np.array(sc.stats.norm.interval(confidence, loc=sample_mean,scale=sample_std))

    return(conf_intveral)

    norm_conf(data)

    array([[50.92509413],

    [90.9882392 ]])

    以上通过scipy.stats.norm_conf函数,通过输入置信度、均值、标准差来计算执行区间,并以制作了一个函数,后续可以调用。

    计算t分布下的置信区间

    def ttest_conf(data,confidence=0.95):

    sample_mean = np.mean(data)

    sample_std = np.std(data,ddof=1)

    sample_size = len(data)

    conf_intveral=np.array(sc.stats.t.interval(confidence, df = (sample_size-1),loc=sample_mean,scale=sample_std))

    return(conf_intveral)

    ttest_conf(data)

    array([[54.78009782],

    [82.96065218]])

    重复抽样

    scale_means = []

    for _ in range(1000):

    scale_sample = data.sample(100, replace=True)

    mean = scale_sample.mean()

    scale_means.append(mean)

    norm_conf(scale_means)

    array([67.4901937, 70.2341785])

    ttest_conf(scale_means)

    array([67.30511657, 70.04288823])

    data.describe()

    总分 count 80.000000 mean 68.870375 std 7.078940 min 63.290000 25% 64.485000 50% 65.835000 75% 71.692500 max 100.000000

    绘制数据的分布图

    import seaborn as sns

    from matplotlib import pyplot as plt

    sns.set_palette("hls") #设置所有图的颜色,使用hls色彩空间

    sns.distplot(scale_means,color="r",bins=10,kde=True)

    plt.title('data')

    #plt.xlim(0,100)

    plt.grid(True)

    plt.show()

    通过手动计算和绘制图形,让我们对参数估计有一个更加深刻的了解。

    展开全文
  • 如果0.010.05,说明结果更倾向于接受假定的参数取值。 两样本检验 导入数据 数据说明:本数据是一份汽车贷款数据 creditcard = pd.read_csv('creditcard_exp.csv', skipinitialspace=True) creditcard['Income']....

    本文是以完成一份数据分析报告而进行的,选择的方式可能不止一种,配合之前的理论部分

    导入需要的包

    import pandas as pd

    import os

    %matplotlib inline

    # 修改当前文件路径

    os.chdir('C:/Users/cyb/ipnb/haha/chapter2/data/')

    数据整体的浏览

    # 小区名字、增长率

    house_price_gr = pd.read_csv('house_price_gr.csv', encoding='gbk')

    house_price_gr.head()

    house_price_gr.count()

    dis_name 150

    rate 150

    dtype: int64

    house_price_gr.describe()

    描述性图表

    import seaborn as sns

    from scipy import stats

    sns.distplot(house_price_gr.rate, kde=True, fit=stats.norm)

    # 黑线是核密度曲线,正态分布, 对比蓝线和黑线,来确定是不是类似正态分布

    import matplotlib.pyplot as plt

    import statsmodels.api as sm

    fig = sm.qqplot(house_price_gr.rate, fit=True, line='45')

    fig.show()

    # 线就表示样本整体正态分布时候的样子

    house_price_gr.plot(kind='box')

    置信区间

    se = house_price_gr.rate.std() / len(house_price_gr) ** 0.5

    LB = house_price_gr.rate.mean() - 1.98 * se # 约等于两个标准差,95% 实际上对应的就是 1.98 标准差

    UB = house_price_gr.rate.mean() + 1.98 * se

    (LB, UB)

    (0.1033788285317501, 0.11674316487209627)

    做描述性统计时报告候可以这么说:

    抽取了150个小区的增长率数据,有95%的把握增长率在(0.1033788285317501, 0.11674316487209627)之间;

    增长率小于0.1033788285317501的可能性不超过2.5%

    # 如果要求任意置信度下的置信区间的话,可以自己编一个函数

    def confint(x, alpha=0.05):

    n = len(x)

    xb = x.mean()

    df = n-1

    tmp = (x.std() / n ** 0.5) * stats.t.ppf(1-alpha/2, df)

    # 根据 alpha 和 自由度,找到对应的 t 值,求出从均值到两边的距离

    return {'Mean': xb, 'Degree of Freedom':df, 'LB':xb-tmp, 'UB':xb+tmp}

    confint(house_price_gr.rate, 0.05)

    {'Mean': 0.11006099670192318,

    'Degree of Freedom': 149,

    'LB': 0.10339228338892811,

    'UB': 0.11672971001491825}

    假设检验与单样本T检验

    d1 = sm.stats.DescrStatsW(house_price_gr.rate)

    print('t_statistic=%6.4f, p_value=%6.4f, df=%s' % d1.ttest_mean(0.1)) # 0.1 指的是假设的均值

    # t值 指的是两个均值之间相差几个标准差,p 值 与显著性水平alpha比较

    # t统计量越大,说明在正态分布图中 越靠边缘, 对应假设的均值与样本的均值,也就差的更远

    # df 指的是自由度,共150行,自由度就减1

    t_statistic=2.9812, p_value=0.0034, df=149.0

    这里p值 0.34% ,150个样本一般取 alpha 为 5%,所以p值小于alpha(相当于更靠边缘),拒绝原假设

    汇报描述方式:

    根据150个样本得到的北京市的增长率均值是 11% ,根据样本增长率小于 10% 的概率是 0.17%,如果不采取措施,年底不被问责的概率是 0.17%

    如果P<0.01,说明是较强的判定结果,拒绝假定的参数取值。 如果0.010.05,说明结果更倾向于接受假定的参数取值。

    两样本检验

    导入数据

    数据说明:本数据是一份汽车贷款数据

    creditcard = pd.read_csv('creditcard_exp.csv', skipinitialspace=True)

    creditcard['Income'].groupby(creditcard['Acc']).describe()

    Suc0 = creditcard[creditcard['Acc'] == 0]['Income']

    Suc1 = creditcard[creditcard['Acc'] == 1]['Income']

    leveneTestRes = stats.levene(Suc0, Suc1, center='median')

    # 这里根据样本数首先将 alpha 定位5%,所以得到的 p 值是显著的,所以标准差不相等

    print('w-value=%6.4f, p-value=%6.4f' % leveneTestRes)

    # 这部分其实最后我们会使用方差分析来做,这里只是举例说明两样本 t 检验怎么做的

    结果:w-value=7.1829, p-value=0.0086

    stats.stats.ttest_ind(Suc0, Suc1, equal_var=False)# 标准差不相等

    结果:Ttest_indResult(statistic=-9.529516968736448, pvalue=1.3263066753296544e-15)

    stats.stats.ttest_ind(Suc0, Suc1)# 标准差是否相等其实也不需要关心,对结果影响无关紧要,都是拒绝原假设,两个变量相关

    结果:Ttest_indResult(statistic=-7.2734332066230225, pvalue=8.690094133636066e-11)

    测试一下性别对月均消费的作用

    creditcard['avg_exp'].groupby(creditcard['gender']).describe()

    female = creditcard[creditcard['gender'] == 0]['avg_exp'].dropna()

    male = creditcard[creditcard['gender'] == 1]['avg_exp'].dropna()

    lenveneTestRes = stats.levene(female, male, center='median')

    print('w_value=%6.4f, p-value=%6.4f' %lenveneTestRes)# 假设两个分组的标准差相等,假设成立

    w_value=0.0683, p-value=0.7946

    stats.stats.ttest_ind(female, male, equal_var=True)

    # p值大于0.05,两个变量不相关

    结果:Ttest_indResult(statistic=-1.742901386808629, pvalue=0.08587122878448449)

    F 检验 —多分类

    pd.set_option('display.max_columns', None) # 设置显示所有列

    creditcard.groupby('edu_class')[['avg_exp']].describe().T

    from statsmodels.formula.api import ols

    # anova 方差分析analysis of validation

    sm.stats.anova_lm(ols('avg_exp ~ C(edu_class)', data=creditcard).fit())# C(edu_class) 表示将变量作为分类变量

    字段名自由度SSMMSEFP值组间自由度组间变异组间变异/自由度FP值组内自由度组内变异组内变异/自由度nannan

    P 值很小(mean_sq = sum_sq / df , F 是 mean_sq 两个数的商)

    # 不考虑交互相

    sm.stats.anova_lm(ols('avg_exp ~ C(edu_class)+C(gender)',data=creditcard).fit())

    # 考虑交互相

    sm.stats.anova_lm(ols('avg_exp ~ C(edu_class)+C(gender)+C(edu_class)*C(gender)',data=creditcard).fit())

    # 考虑交互相,这里 gender 与 y 没有关系了

    相关分析

    creditcard.plot(x='Income', y='avg_exp', kind='scatter')

    # 从左往右,渐渐发散,说明数据是左偏的,因此取对数,经验方法

    creditcard.plot(x='Income', y='avg_exp_ln', kind='scatter')

    creditcard[['Income', 'avg_exp_ln']].corr(method='pearson')# 如果使用speraman,method 更换就好

    展开全文
  • == 1]['体温'].mean() boot_means.append(mean) 5、绘制男士体温抽样分布均值 男士体温抽样分布均值.png 6、计算抽样分布的置信区间以估计总体均值, 置信度95% np.percentile(boot_means, 2.5), np.percentile(boot...
  • 那么,我正在使用动力学模型,我的目标是估计动力学参数。为了更好地理解Pyomo,我尝试了一个“玩具模型”,然后尝试了复杂的模型。所以,我的玩具模型是一个简单的3个等式的ODE系统:dX1/dt = -k1*X1dX2/dt = k1*X1...
  • 最小二乘法曲线拟合参数估计:简单起见,这里以一元线性回归为例进行介绍:假设我们获取了一组样本点数据:利用最小二乘法用多项式曲线拟合这组样本点:1、设拟合多项式为:2、样本点到该曲线的距离平方和为:目标...
  • 参数估计简介及概念介绍(上)参数估计简介及概念介绍(上) 参数估计简介及概念介绍(上)参数绑定参数绑定是把当前请求的变量作为操作方法(也包括架构方法)的参数直接传入,参数绑定并不区分请求类型。参数绑定传入的值...
  • 一个简单的Markow链假设我们想要估计系统的参数,以便我们可以在时间步长t 1预测系统的状态,给定时间步t的状态. PyMC应该能够轻松应对这一问题.让我们的玩具系统由一维世界中的移动物体组成.状态是对象的位置.我们想...
  • python参数估计实战

    2019-12-26 17:43:08
    本次实战仅仅以总体均值的区间估计做为例子 代码 在这里插入代码import pandas as pd import numpy as np from scipy import stats import math import seaborn as sns from matplotlib import pyplot as plt plt...
  • bootstrap可以用来估计样本中任何函数(np.mean,st.genextreme.fit,等等)的置信区间,并且有一个Python库:^{}。在以下是作者相关问题question中的数据:import numpy as np, scipy.stats as st, scikits.bootstrap...
  • 参数估计简介及概念介绍(下)参数估计简介及概念介绍(下)请求缓存支持请求缓存功能,支持对GET请求设置缓存访问,并设置有效期。有两种方式可以设置请求缓存:路由设置可以在路由规则里面调用cache方法设置当前路由...
  • #coding:gbkimport mathimport copyimport numpy as npimport matplotlib.pyplot as pltisdebug = False# 指定k个高斯分布参数,这里指定k=2。注意2个高斯分布具有相同均方差Sigma,分别为Mu1,Mu2。def ini_data...
  • 前言参数估计,是统计推断的一种。根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计和区间估计;从构造估计量的方法讲,有矩法估计、最小二乘估计、似然估计、贝叶斯估计等。...
  • python简单实现最大似然估计1、scipy库的安装wim+R输入cmd,然后cd到python的pip路径,即安装:pip install scipy即可2、导入scipy库from scipy.sats import norm导入scipy.sats中的norm3、案例分析from scipy.stats...
  • I am trying to calculate the mean and confidence interval(95%) of a column "Force" in a large dataset. I need the result by using the groupby function by grouping different "Classes".When I calculate ...
  • python实现参数估计

    千次阅读 2019-12-23 00:30:47
    参数估计(parameter estimation),统计推断的一种。根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计与区间估计:从构造估计量的方法讲,有矩法估计、最小二乘估计、似然...
  • 参数估计python实现

    2019-12-30 01:30:28
    参数估计python实现 0X00 前言 根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计与区间估计。要处理两个问题:(1)求出未知参数的估计量;(2)在一定信度(可靠程度)下...
  • 参数估计参数估计(parameter estimation) 统计推断的一种。根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计与区间估计:从构造估计量的方法讲,有矩法估计、最小二乘估计...
  • python实现参数估计 import pandas as pd import numpy as np from scipy import stats path = '/Users/huangqiankun/Desktop/data.xlsx' date = pd.read_excel(path) age = date['Age'] # 抽取100个样本 age_sam = ...
  • python实现参数估计 一、介绍 参数估计(parameter estimation),统计推断的一种。根据从总体中抽取的随机样本来估计总体分布中未知参数的过程。从估计形式看,区分为点估计与区间估计;从构造估计量的方法讲,有矩...
  • Python之ML–模型评估与参数调优主要知识点如下:模型性能的无偏估计处理机器学习算法常见问题机器学习模型调优使用不同的性能指标评估预测模型一.基于流水线的工作流本节使用scikit-learn中的Pipline类.它使得我们...
  • 现在通过python来实现假设检验。主要任务如下: 1、人体体温的总体均值是否为98.6华氏度? 2、人体的温度是否服从正态分布? 3、人体体温中存在的异常数据是哪些? 4、男女体温是否存在明显差异? 5、体温与心率间的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,011
精华内容 404
关键字:

python参数估计

python 订阅