日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python统计分析 --- 1.方差分析、t检验

發布時間:2023/12/15 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python统计分析 --- 1.方差分析、t检验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 統計包與數據挖掘
    • 1.1 數據分析流
    • 1.2 數據統計包
  • 2. 方差分析
    • 2.1 T檢驗(單因素方差分析)
    • 2.2 T檢驗 (多因素方差分析)
    • 2.3 方差分析——多因素和交互

1. 統計包與數據挖掘

1.1 數據分析流

進行數據分析應該遵循一個什么樣的步驟

1.2 數據統計包

numpy
1.pandas提供basestat功能:單變量、雙變量數據分析,包括描述統計(集中和離散、圖形、交叉表)、相關分析(r、卡方)等。
2.statsmodels提供假設檢驗及統計模型功能,主要研究結構性歸因問題,并不強調預測功能,主要為推論統計小數據服務。
3.sklearn提供數據挖掘模型功能,主要研究預測性問題,主要為大數據服務,以探討速度問題為特征。
4.Deep Learning深度學習,側重數據挖掘及復雜智能方法、已非線性模型為主,擅長處理非結構數據。
5.PyMC擬合貝葉斯模型,側重于業務問題和統計算法的整合,這類技術提供業務知識對統計模型的修正。
6.Seaborn基于matplotlib的可視化功能,統計應用者最重要的可視化包。
7.opencv-python圖片視頻庫。

2. 方差分析

分析方法有多種
x有分散和連續兩種
y有連續和分散兩種

2.1 T檢驗(單因素方差分析)

  • 2.1. 卷煙廠案例
  • 導入卷煙廠數據
  • #======================================================================================= #警告:原始數據的實際意義均經過脫敏,所有數據僅供數據分析案例使用,不能作為商業用途參考。 #數據集:煙草、卷煙工藝、客戶信息表、短期績效、商品材質等 #=========================================================================================#導入包 import numpy as np import pandas as pd import matplotlib.pyplot as plt import statsmodels.formula.api as smf from sklearn import linear_model %matplotlib inline #中文顯示 plt.rcParams["font.sans-serif"]=["SimHei"] plt.rcParams["axes.unicode_minus"]=False#使用pandas讀取數據支持xls和xlsx data=pd.read_excel(r"煙草.xlsx") data.head(6)#顯示數據開頭6行 # data.info()
  • 數據整理
  • # scipy這個包很容易進行數值計算、優化的問題; # scipy.stats導入py統計包 # ttest_ind導入t檢驗 from scipy.stats import ttest_ind as ttest, levene from scipy import stats #異方差檢驗-部門 bgroup1=data[data["班次"]=='早班']["總耗"] # 提取出早班的總耗為bgroup1 bgroup2=data[data["班次"]=='晚班']["總耗"] # 提取出早班的總耗為bgroup2 # levene(bgroup1,bgroup2) # #單樣本t檢驗 # stats.ttest_1samp(data["總耗"],3) #獨立樣本t檢驗-性別 ttest(bgroup1,bgroup2,equal_var=False)#equal_var=True
  • 分析過程

    計算結果是
  • Ttest_indResult(statistic=-1.0935840682920928,pvalue=0.2741819213824044)

    statistic統計值,statistic=bgroup1-bgroup2 為負數,表明bgroup1小于bgroup2,說明晚班總耗高于早班
    pvalue為顯著性,顯著性不明顯,所以早班和晚班耗能一樣,差異與統計誤差造成
    (大于0.05是不顯著,小于0.05是顯著)

    statistic=bgroup1-bgroup2 = -1.0935840682920928
    • 方差分析
      把t檢驗改為方差分析
    # scipy這個包很容易進行數值計算、優化的問題; # scipy.stats導入py統計包 # ttest_ind導入t檢驗 from scipy.stats import ttest_ind as ttest, levene from scipy import stats #異方差檢驗-部門 bgroup1=data[data["班次"]=='早班']["總耗"] # 提取出早班的總耗為bgroup1 bgroup2=data[data["班次"]=='晚班']["總耗"] # 提取出早班的總耗為bgroup2 levene(bgroup1,bgroup2) # #單樣本t檢驗 # stats.ttest_1samp(data["總耗"],3) #獨立樣本t檢驗-性別 #ttest(bgroup1,bgroup2,equal_var=False)#equal_var=True

    結果

    • pvalue大于0.05,說明方差是齊的,小于0.05是不齊的,
    LeveneResult(statistic=5.255884883173223, pvalue=0.021907559093342466)

    需要把qual_var的值改為True,改為True之后運行代碼

    # scipy這個包很容易進行數值計算、優化的問題; # scipy.stats導入py統計包 # ttest_ind導入t檢驗 from scipy.stats import ttest_ind as ttest, levene from scipy import stats #異方差檢驗-部門 bgroup1=data[data["班次"]=='早班']["總耗"] # 提取出早班的總耗為bgroup1 bgroup2=data[data["班次"]=='晚班']["總耗"] # 提取出早班的總耗為bgroup2 levene(bgroup1,bgroup2) # #單樣本t檢驗 # stats.ttest_1samp(data["總耗"],3) # 獨立樣本t檢驗-性別 ttest(bgroup1,bgroup2,equal_var=True)#equal_var=True

    pvalue還是大于0.05,表面顯著性不明顯

    Ttest_indResult(statistic=-1.0930198202034351, pvalue=0.27442953509209483)
    • 以上進行兩個數據之間的對比可以使用于大數據分析(數據量大于10w條數據),即數據量是比較大的進行分析而不適用于進行小數據分析(數據量小于10w都叫小數據分析)

    2.2 T檢驗 (多因素方差分析)

    • glm 廣義線性模型
    • lm 線性模型
    # statsmodels小數據的包 # stats 統計 # anova方差 # anova_lm方差分析 #方差分析——多因素和交互 from statsmodels.stats.anova import anova_lm from statsmodels.stats.multicomp import (pairwise_tukeyhsd,MultiComparison) # smf.ols表示調用公式的算法,類似y=ax1+bx2+cx3+... #這里y=總耗 #~表示等號= modelols=smf.ols("總耗~班次",data=data).fit() # 提取出anova_lm方差分析模型 anova=anova_lm(modelols) # 打印anova print(np.round(anova,3))# print("部門事后檢驗",pairwise_tukeyhsd(data['總耗'],data['品牌']))#y和x的位置需要固定 # print("性別事后檢驗",pairwise_tukeyhsd(data['總耗'],data['品牌']))#import seaborn as sns #fig,ax=plt.subplots(2,1,figsize=(16,12)) #sns.lineplot(x="品牌",y="總耗",hue="質量控制",data=data,ax=ax[0])#交互效應圖 #sns.violinplot(x="品牌",y="總耗",hue="質量控制",data=data,ax=ax[1])

    結果顯示如下

    • df 表示自由度
    • sum_sq 平方求和
    • mean_sq 均值平方和
    • F分布值
    • PR顯著性

    2.3 方差分析——多因素和交互

    有些因素之間的顯著關系不能通過數值的結果進行分析,需要通過分析圖形才能知道之間的相關性,這里就要進行多因素交互分析

    #方差分析——多因素和交互 from statsmodels.stats.anova import anova_lm from statsmodels.stats.multicomp import (pairwise_tukeyhsd,MultiComparison)modelols=smf.ols("總耗~品牌+質量控制+機器類型+品牌*機器類型",data=data).fit() anova=anova_lm(modelols) print(np.round(anova,3))#print("部門事后檢驗",pairwise_tukeyhsd(data['總耗'],data['品牌']))#y和x的位置需要固定 #print("性別事后檢驗",pairwise_tukeyhsd(data['總耗'],data['質量控制']))import seaborn as sns fig,ax=plt.subplots(2,1,figsize=(16,12)) sns.lineplot(x="品牌",y="總耗",hue="機器類型",data=data,ax=ax[0])#交互效應圖 sns.violinplot(x="品牌",y="總耗",hue="機器類型",data=data,ax=ax[1])


    多因素交互的結果

    • 筆記:
      y的值一般都是難以獲得的值,需要通過一些容易獲得值去求解出y的值,即獲得一些容易求解的x,然后去得到y值


    在求解y可能會存在多個x的情況,有可能幾個有可能10多個,有可能100個,所以維度太多了需要降維度,這里就得采用主次歸因了

    • 大數據分析一般采用內衍和外推的方法
    • 小數據分析一般采用主次歸因和規則歸因的方法

    總結

    以上是生活随笔為你收集整理的python统计分析 --- 1.方差分析、t检验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。