python 抽樣 python實現抽樣分布描述

2021-10-11 20:40:33 字數 3722 閱讀 1255

本次使用木東居士提供資料案例,驗證資料分布等內容,

#資料讀取

df = pd.read_excel('c://users//zxy//desktop',usecols = [1,2,3])

1.按照港口分類,計算各類港口資料 年齡、車票**的統計量。

df1 = df.groupby(['embarked'])

df1.describe()

或# 變異係數 = 標準差/平均值

def cv(data):

return data.std()/data.var()

df2 = df.groupby(['embarked']).agg(['count','min','max','median','mean','var','std',cv])

df2_age = df2['age']

df2_fare = df2['fare']

# 2、畫出**的分布影象,驗證資料服從何種分布

# 2.1 船票直方圖:

plt.hist(df['fare'],20,normed=1,alpha=0.75)

plt.title('fare')

plt.grid(true)

#分別用kstest、shapiro、normaltest來驗證分布係數

ks_test = stats.kstest(df['fare'], 'norm')

shapiro_test = stats.shapiro(df['fare'])

normaltest_test = stats.normaltest(df['fare'],axis=0)

#以上三種檢測結果表明 p<5%,因此 船票資料不符合正態分佈。

# 繪製擬合正態分佈曲線:

fare = df['fare']

plt.figure()

fare.plot(kind = 'kde') #原始資料的正態分佈

m_s = stats.norm.fit(fare) #正態分佈擬合的平均值loc,標準差 scale

normaldistribution = stats.norm(m_s[0], m_s[1]) # 繪製擬合的正態分佈圖

x = np.linspace(normaldistribution.ppf(0.01), normaldistribution.ppf(0.99), 100)

plt.plot(x, normaldistribution.pdf(x), c='orange')

plt.xlabel('fare about titanic')

plt.title('titanic[fare] on normaldistribution', size=20)

plt.legend(['origin', 'normdistribution'])

# 驗證是否符合t分布

t_s = stats.t.fit(fare)

df = t_s[0]

loc = t_s[1]

scale = t_s[2]

x2 = stats.t.rvs(df=df, loc=loc, scale=scale, size=len(fare))

d, p = stats.ks_2samp(fare, x2)

#p < alpha,拒絕原假設,**資料不符合t分布。

# 對票價資料進行t分布擬合:

plt.figure()

fare.plot(kind = 'kde')

tdistribution = stats.t(t_s[0], t_s[1],t_s[2]) # 繪製擬合的t分布圖

x = np.linspace(tdistribution.ppf(0.01), tdistribution.ppf(0.99), 100)

plt.plot(x, tdistribution.pdf(x), c='orange')

plt.xlabel('fare about titanic')

plt.title('titanic[fare] on tdistribution', size=20)

plt.legend(['origin', 'tdistribution'])

# 驗證是否符合卡方分布?

chi_s = stats.chi2.fit(fare)

df_chi = chi_s[0]

loc_chi = chi_s[1]

scale_chi = chi_s[2]

x2 = stats.chi2.rvs(df=df_chi, loc=loc_chi, scale=scale_chi, size=len(fare))

dk, pk = stats.ks_2samp(fare, x2)#不符合

#對票價資料進行卡方分布擬合

plt.figure()

fare.plot(kind = 'kde')

chidistribution = stats.chi2(chi_s[0], chi_s[1],chi_s[2]) # 繪製擬合的正態分佈圖

x = np.linspace(chidistribution.ppf(0.01), chidistribution.ppf(0.99), 100)

plt.plot(x, chidistribution.pdf(x), c='orange')

plt.xlabel('fare about titanic')

plt.title('titanic[fare] on chi-square_distribution', size=20)

plt.legend(['origin', 'chi-square_distribution'])

# 按照港口分類,驗證s與q兩個港口間的**之差是否服從某種分布

s_fare = df[df['embarked'] == 's']['fare']

q_fare = df[df['embarked'] =='q']['fare']

c_fare = df[df['embarked'] =='c']['fare']

s_fare.describe()

# 按照港口分類後,s港口樣本數<=554,q港口樣本數<=28,c港口樣本數<=130。

# 總體不服從正態分佈,所以需要當n比較大時,一般要求n>=30,兩個樣本均值之差的抽樣分布可近似為正態分佈。

# x2的總體容量為28,其樣本容量不可能超過30,故其s港和q港兩個樣本均值之差(e(x1)-e(x2))的抽樣分布不服從正態分佈。

# s港和c港兩個樣本均值之差(e(x1)-e(x3))的抽樣分布近似服從正態分佈,

# 其均值和方差分別為e(e(x1) - e(x3)) = e(e(x1)) - e(e(x3)) = μ1 - μ3;d(e(x1) + e(x3)) = d(e(x1)) + d(e(x3)) = σ1²/n1 + σ3²/n3 。

miu = np.mean(s_fare) - np.mean(c_fare)

sig = np.sqrt(np.var(s_fare, ddof=1)/len(s_fare) + np.var(c_fare, ddof=1)/len(c_fare))

x = np.arange(- 110, 50)

y = stats.norm.pdf(x, miu, sig)

plt.plot(x, y)

plt.xlabel("s_fare - c_fare")

plt.ylabel("density")

plt.title('fare difference between s and c')

plt.show()

python分層抽樣 抽樣方法 分層抽樣

接著上文說,簡單隨機抽樣法和分層抽樣法的對比有過乙個經典的例子。1936年美國 文學文摘 雜誌對結果進行了調查 他們根據當時的 號碼簿及該雜誌訂戶俱樂部會員名單,郵寄一千萬份問卷調查表,約240萬份,結論是蘭登取勝,而蓋洛普也組織了抽樣調查,進行民意測試。他的 與 文學文摘 截然相反,認為羅斯福必勝...

python 抽樣分布實踐

本次選取鐵達尼號的資料,利用python進行抽樣分布描述,主要是提供實現 具體的理論知識不會過多涉及。注 是否服從t分布不是進行t檢驗 字段說明 age 年齡,指登船者的年齡。fare 指船票 embark 登船的港口。需要驗證的是 1 驗證資料是否服從正態分佈?2 驗證資料是否服從t分布?3 驗證...

python 抽樣分布實踐

本次選取鐵達尼號的資料,利用python進行抽樣分布描述,主要是提供實現 具體的理論知識不會過多涉及。注 是否服從t分布不是進行t檢驗 字段說明 age 年齡,指登船者的年齡。fare 指船票 embark 登船的港口。需要驗證的是 1 驗證資料是否服從正態分佈?2 驗證資料是否服從t分布?3 驗證...