实践-python简单实现参数估计

作业:https://mp.weixin.qq.com/s/8egc4QE6MmME0AS4FKSlOg

下面动手实践 主要是借鉴:

https://blog.csdn.net/polarislove36/article/details/78922045?utm_source=blogxgwz4

https://blog.csdn.net/maplepiece1999/article/details/103676556

import pandasas pd

import numpyas np

import matplotlib.pyplotas plt

from scipyimport stats

import scipy

#区间估计

#区间估计能够提供有关估计精度的信息。

#我们通过点估计值加上和减去一个边际误差(margin of error)的值,可以构建出一个总体参数的区间估计

#8.1大样本估计

#假定σσ 已知的大样本情况(n>=30):

#总计均值的区间估计

#x¯¯¯±zα/2σn−−√

#x¯±zα/2σn

#其中1-αα 是置信系数,zα/2zα/2 是当标准正态分布的上侧面积为 α/2α/2 时的z的值

#这种情况需要知道总体的标准差,如果不知道的情况需要用总体标准差的样本点估计值s

#如果是小样本,并且知道总体的标准差σσ 需要假设总体满足正态分布,方法和大样本相同

# #如果是小样本,不知道总体的标准差σσ,只知道样本的标准差s需要假设总体满足正态分布,并且使用t分布

#t分布是一系列类似的概率分布,依赖于自由度,自由度越大,越接近正态分布

#小样本且假设总体满足正态分布:用s估计σσ 的小样本情况(n<30):

#x¯¯¯±tα/2sn−−√

# 总体 方差的区间估计

#df2 = df.groupby(['Embarked'])

#df2.describe()

# = pd.read_csv('rainfall.csv',header = None)

data = pd.read_excel('D:/Users/Desktop/Desktop/作业/data.xlsx', usecols=[1])

data = data.iloc[:,0]

print(data.mean())

# 抽取100个样本

data_sam = data.sample(100)

x = data_sam.mean()#求抽样平均值

data_sam.describe()

#计算置信区间

#计算标准差

#pandas.std() 默认是除以n-1,无偏;加上参数ddof=0,即为有偏;DataFrame的describe()中就包含有std();

#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)

return 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)

return conf_intveral

# T分布下的置信区间

def ttest_conf2(data, confidence=0.95):

# 先求一下 bins ,以便画图用得上.

    data2 = pd.DataFrame(data, columns=['age'])

IQR = data2.quantile(0.75) - data2.quantile(0.25)

bin_size =2 * IQR /len(data)**(1.0/3)

# 画个源数据图表.以便对源数据的一个直观了解

    plt.rcParams['font.sans-serif']=['SimHei']

n = plt.hist(data,bins =round(bin_size),rwidth=0.9)

plt.vlines(data2.mean(),0,max(n[1])+1,colors ="r", linestyles ="dashed",label="平均值%.2f" % np.mean(data))

plt.title('源数据'+str(len(data))+'个样本分布 直方图')

plt.ylabel('频数')

plt.legend()

plt.show()

# 真正开始计算

    sample_mean = np.mean(data2)

sample_std = np.std(data2)

sample_size =len(data2)

alpha =1 -0.95

    t_score = scipy.stats.t.isf(alpha /2, df = (sample_size-1) )

ME = t_score * sample_std / np.sqrt(sample_size)

lower_limit = sample_mean - ME

upper_limit = sample_mean + ME

print(str(confidence*100)+'%% Confidence Interval: ( %.2f, %.2f)' % (lower_limit, upper_limit))

return lower_limit, upper_limit

if __name__ =="__main__":

try:#重复抽取数据1000次

        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)#正态分布

        ttest_conf(scale_means)#t分布

        ttest_conf2(scale_means)#t分布

        import seabornas sns

from matplotlibimport pyplotas 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()

except:

traceback.print_exc()

截图如下:


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容