Python數(shù)學(xué)建模StatsModels統(tǒng)計回歸可視化示例詳解
1、如何認識可視化?
需要指出的是,雖然不同繪圖工具包的功能、效果會有差異,但在常用功能上相差并不是很大。與選擇哪種繪圖工具包相比,更重要的是針對不同的問題,需要思考選擇什么方式、何種圖形去展示分析過程和結(jié)果。換句話說,可視化只是手段和形式,手段要為目的服務(wù),形式要為內(nèi)容服務(wù),這個關(guān)系一定不能顛倒了。
因此,可視化是伴隨著分析問題、解決問題的過程而進行思考、設(shè)計和實現(xiàn)的,而且還會影響問題的分析和解決過程:
- 可視化工具是數(shù)據(jù)探索的常用手段
回歸分析是基于數(shù)據(jù)的建模,在導(dǎo)入數(shù)據(jù)后首先要進行數(shù)據(jù)探索,對給出的或收集的數(shù)據(jù)有個大概的了解,主要包括數(shù)據(jù)質(zhì)量探索和數(shù)據(jù)特征分析。數(shù)據(jù)準(zhǔn)備中的異常值分析,往往就需要用到箱形圖(Boxplot)。對于數(shù)據(jù)特征的分析,經(jīng)常使用頻率分布圖或頻率分布直方圖(Hist),餅圖(Pie)。
- 分析問題需要可視化工具的幫助
對于問題中變量之間的關(guān)系,有些可以通過定性分析來確定或猜想,需要進一步的驗證,有些復(fù)雜關(guān)系難以由分析得到,則要通過對數(shù)據(jù)進行初步的相關(guān)分析來尋找線索。在分析問題、嘗試求解的過程中,雖然可以得到各種統(tǒng)計量、特征值,但可視化圖形能提供更快捷、直觀、豐富的信息,對于發(fā)現(xiàn)規(guī)律、產(chǎn)生靈感很有幫助。
- 解題過程需要可視化工具的支持
在解決問題的過程中,也經(jīng)常會希望盡快獲得初步的結(jié)果、總體的評價,以便確認解決問題的思路和方法是否正確。這些情況下,我們更關(guān)心的往往是繪圖的便捷性,圖形的表現(xiàn)效果反而是次要的。
- 可視化是結(jié)果發(fā)布的重要內(nèi)容
問題解決之后需要對結(jié)果進行呈現(xiàn)或發(fā)表,這時則需要結(jié)合表達的需要,特別是表達的邏輯框架,設(shè)計可視化的方案,選擇適當(dāng)?shù)膱D形種類和形式,準(zhǔn)備圖形數(shù)據(jù)。在此基礎(chǔ)上,才談得上選擇何種繪圖工具包,如何呈現(xiàn)更好的表現(xiàn)效果。
2、StatsModels 繪圖工具包 (Graphics)
Statsmodels 本身支持繪圖功能(Graphics),包括擬合圖(Fit Plots)、箱線圖(Box Plots)、相關(guān)圖(Correlation Plots)、函數(shù)圖(Functional Plots)、回歸圖(Regression Plots)和時間序列圖(Time Series Plots)。
Statsmodels 內(nèi)置繪圖功能 Graphics 的使用似乎并不流行,網(wǎng)絡(luò)上的介紹也不多。分析其原因,一是 Graphics 做的并不太好用,文檔和例程不友好,二是學(xué)習(xí)成本高:能用通用的可視化包實現(xiàn)的功能,何必還要花時間去學(xué)習(xí)一個專用的 Graphics?
下面是 Statsmodels 官方文檔的例程,最簡單的單變量線性回歸問題,繪制樣本數(shù)據(jù)散點圖和擬合直線圖。Graphics 提供了將擬合與繪圖合二為一的函數(shù) qqline(),但是為了繪制出樣本數(shù)據(jù)則要調(diào)用 Matplotlib 的 matplotlib.pyplot.scatter(),所以…
import statsmodels.api as sm import matplotlib.pyplot as plt from statsmodels.graphics.gofplots import qqline foodexp = sm.datasets.engel.load(as_pandas=False) x = foodexp.exog y = foodexp.endog ax = plt.subplot(111) plt.scatter(x, y) qqline(ax, "r", x, y) plt.show() # = 關(guān)注 Youcans,分享原創(chuàng)系列 https://blog.csdn.net/youcans =
下圖看起來有點象 Seaborn中的 relplot,但把官方文檔研究了半天也沒搞明白,只好直接分析例程和數(shù)據(jù),最后的結(jié)論是:基本沒啥用。
這大概就是更多用戶直接選擇 Python 的可視化工具包進行繪圖的原因吧。最常用的當(dāng)屬 Matplotlib 無疑,而在統(tǒng)計回歸分析中 Seaborn 繪圖工具包則更好用更炫酷。
3、Matplotlib 繪圖工具包
Matplotlib 繪圖包就不用介紹了。Matplotlib 用于 Statsmodels 可視化,最大的優(yōu)勢在于Matplotlib 誰都會用,實現(xiàn)統(tǒng)計回歸的基本圖形的也很簡單。如果需要復(fù)雜的圖形,炫酷的效果,雖然 Matplotlib 原理上也能實現(xiàn),但往往需要比較繁瑣的數(shù)據(jù)準(zhǔn)備,并不常用的函數(shù)和參數(shù)設(shè)置。既然學(xué)習(xí)成本高,出錯概率大,就沒必要非 Matplotlib 不可了。
Matplotlib 在統(tǒng)計回歸問題中經(jīng)常用到的是折線圖、散點圖、箱線圖和直方圖。這也是 Matplotlib 最常用的繪圖形式,本系列文中也有相關(guān)例程,本文不再具體介紹相關(guān)函數(shù)的用法。
例如,在本系列《Python學(xué)習(xí)筆記-StatsModels 統(tǒng)計回歸(2)線性回歸》的例程和附圖,不僅顯示了原始檢測數(shù)據(jù)、理論模型數(shù)據(jù)、擬合模型數(shù)據(jù),而且給出了置信區(qū)間的上下限,看起來還是比較“高級”的。但是,如果把置信區(qū)間的邊界線隱藏起來,圖形馬上就顯得不那么“高級”,比較“平?!绷恕@就是選擇什么方式、何種圖形進行展示的區(qū)別。
由此所反映的問題,還是表達的邏輯和數(shù)據(jù)的準(zhǔn)備:要表達什么內(nèi)容,為什么要表達這個內(nèi)容,有沒有相應(yīng)的數(shù)據(jù)?問題的關(guān)鍵并不是什么工具包或什么函數(shù),更不是什么顏色什么線性,而是有沒有置信區(qū)間上下限的數(shù)據(jù)。
如果需要復(fù)雜的圖形,炫酷的效果,雖然 Matplotlib 原理上也能實現(xiàn),但往往需要比較繁瑣的數(shù)據(jù)準(zhǔn)備,使用并不常用的函數(shù)和參數(shù)設(shè)置。學(xué)習(xí)成本高,出錯概率大,就沒必要非 Matplotlib 不可了。
4、Seaborn 繪圖工具包
Seaborn 是在 Matplotlib 上構(gòu)建的,支持 Scipy 和 Statamodels 的統(tǒng)計模型可視化,可以實現(xiàn):
- 賞心悅目的內(nèi)置主題及顏色主題
- 展示和比較 一維變量、二維變量 各變量的分布情況
- 可視化 線性回歸模型中的獨立變量和關(guān)聯(lián)變量
- 可視化 矩陣數(shù)據(jù),通過聚類算法探究矩陣間的結(jié)構(gòu)
- 可視化 時間序列,展示不確定性
- 復(fù)雜的可視化,如在分割區(qū)域制圖
Seaborn 繪圖工具包以數(shù)據(jù)可視化為中心來挖掘與理解數(shù)據(jù),本身就帶有一定的統(tǒng)計回歸功能,而且簡單好用,特別適合進行定性分析、初步評價。
下圖給出了幾種常用的 Seaborn 圖形,分別是帶擬合線的直方圖(distplot)、箱線圖(boxplot)、散點圖(scatterplot)和回歸圖(regplot),后文給出了對應(yīng)的程序。
實際上,這些圖形用 StatsModels Graphics、Matplotlib 也可以繪制,估計任何繪圖包都可以實現(xiàn)。那么,為什么還要推薦 Seaborn 工具包,把這些圖歸入 Seaborn 的實例呢?我們來看看實現(xiàn)的例程就明白了:簡單,便捷,舒服。不需要數(shù)據(jù)準(zhǔn)備和變換處理,直接調(diào)用變量數(shù)據(jù),自帶回歸功能;不需要復(fù)雜的參數(shù)設(shè)置,直接給出舒服的圖形,自帶圖形風(fēng)格設(shè)計。
fig1, axes = plt.subplots(2, 2, figsize=(10, 8)) # 創(chuàng)建一個 2行 2列的畫布 sns.distplot(df['price'], bins=10, ax=axes[0, 0]) # axes[0,1] 左上圖 sns.boxplot(df['price'], df['sales'], data=df, ax=axes[0, 1]) # axes[0,1] 右上圖 sns.scatterplot(x=df['advertise'], y=df['sales'], ax=axes[1, 0]) # axes[1,0] 左下圖 sns.regplot(x=df['difference'], y=df['sales'], ax=axes[1, 1]) # axes[1,1] 右下圖 plt.show()
5、多元回歸案例分析(Statsmodels)
5.1 問題描述
數(shù)據(jù)文件中收集了 30個月本公司牙膏銷售量、價格、廣告費用及同期的市場均價。
?。?)分析牙膏銷售量與價格、廣告投入之間的關(guān)系,建立數(shù)學(xué)模型;
(2)估計所建立數(shù)學(xué)模型的參數(shù),進行統(tǒng)計分析;
?。?)利用擬合模型,預(yù)測在不同價格和廣告費用下的牙膏銷售量。
本問題及數(shù)據(jù)來自:姜啟源、謝金星,數(shù)學(xué)模型(第 3版),高等教育出版社。
5.2 問題分析
本案例在Python數(shù)學(xué)建模StatsModels統(tǒng)計回歸模型數(shù)據(jù)的準(zhǔn)備中就曾出現(xiàn),文中還提到該文的例程并不是最佳的求解方法和結(jié)果。
這是因為該文例程是直接將所有給出的特征變量(銷售價格、市場均價、廣告費、價格差)都作為自變量,直接進行線性回歸。謝金星老師說,這不科學(xué)??茖W(xué)的方法是先分析這些特征變量對目標(biāo)變量(銷量)的影響,然后選擇能影響目標(biāo)的特征變量,或者對特征變量進行適當(dāng)變換(如:平方、對數(shù))后,再進行線性回歸。以下參考視頻教程中的解題思路進行分析。
觀察數(shù)據(jù)分布特征
案例問題的數(shù)據(jù)量很小,數(shù)據(jù)完整規(guī)范,實際上并不需要進行數(shù)據(jù)探索和數(shù)據(jù)清洗,不過可以看一下數(shù)據(jù)的分布特性。例程和結(jié)果如下,我是沒看出什么名堂來,與正態(tài)分布的差距都不小。
# 數(shù)據(jù)探索:分布特征 fig1, axes = plt.subplots(2, 2, figsize=(10, 8)) # 創(chuàng)建一個 2行 2列的畫布 sns.distplot(dfData['price'], bins=10, ax=axes[0,0]) # axes[0,1] 左上圖 sns.distplot(dfData['average'], bins=10, ax=axes[0,1]) # axes[0,1] 右上圖 sns.distplot(dfData['advertise'], bins=10, ax=axes[1,0]) # axes[1,0] 左下圖 sns.distplot(dfData['difference'], bins=10, ax=axes[1,1]) # axes[1,1] 右下圖 plt.show()
觀察數(shù)據(jù)間的相關(guān)性
既然將所有特征變量都作為自變量直接進行線性回歸不科學(xué),就要先對每個自變量與因變量的關(guān)系進行考察。
# 數(shù)據(jù)探索:相關(guān)性 fig2, axes = plt.subplots(2, 2, figsize=(10, 8)) # 創(chuàng)建一個 2行 2列的畫布 sns.regplot(x=dfData['price'], y=dfData['sales'], ax=axes[0,0]) sns.regplot(x=dfData['average'], y=dfData['sales'], ax=axes[0,1]) sns.regplot(x=dfData['advertise'], y=dfData['sales'], ax=axes[1,0]) sns.regplot(x=dfData['difference'], y=dfData['sales'], ax=axes[1,1]) plt.show() # = 關(guān)注 Youcans,分享原創(chuàng)系列 https://blog.csdn.net/youcans =
單變量線性回歸圖還是很有價值的。首先上面兩圖(sales-price,sales-average)的數(shù)據(jù)點分散,與回歸直線差的太遠,說明與銷量的相關(guān)性小——謝金星老師講課中也是這樣分析的。其次下面兩圖(sales-advertise,sales-difference)的線性度較高,至少比上圖好多了,回歸直線和置信區(qū)間也反映出線性關(guān)系。因此,可以將廣告費(advertise)、價格差(difference)作為自變量建模進行線性回歸。
進一步地,有人觀察散點圖后認為銷量與廣告費的關(guān)系(sales-advertise)更接近二次曲線,對此也可以通過回歸圖對 sales 與 advertise 進行高階多項式回歸擬合,結(jié)果如下圖。
建模與擬合
模型1:將所有特征變量都作為自變量直接進行線性回歸,這就是《模型數(shù)據(jù)的準(zhǔn)備》中的方案。
模型 2:選擇價格差(difference)、廣告費(advertise)作為自變量建模進行線性回歸。
模型 3:選擇價格差(difference)、廣告費(advertise)及廣告費的平方項作為作為自變量建模進行線性回歸。
下段給出了使用不同模型進行線性回歸的例程和運行結(jié)果。對于這個問題的分析和結(jié)果討論,謝金星老師在視頻中講的很詳細,網(wǎng)絡(luò)上也有不少相關(guān)文章。由于本文主要講可視化,對結(jié)果就不做詳細討論了。
6、Python 例程(Statsmodels)
6.1 問題描述
數(shù)據(jù)文件中收集了 30個月本公司牙膏銷售量、價格、廣告費用及同期的市場均價。
?。?)分析牙膏銷售量與價格、廣告投入之間的關(guān)系,建立數(shù)學(xué)模型;
(2)估計所建立數(shù)學(xué)模型的參數(shù),進行統(tǒng)計分析;
?。?)利用擬合模型,預(yù)測在不同價格和廣告費用下的牙膏銷售量。
6.2 Python 程序
# LinearRegression_v4.py # v4.0: 分析和結(jié)果的可視化 # 日期:2021-05-08 # Copyright 2021 YouCans, XUPT import numpy as np import pandas as pd import statsmodels.api as sm from statsmodels.sandbox.regression.predstd import wls_prediction_std import matplotlib.pyplot as plt import seaborn as sns # 主程序 = 關(guān)注 Youcans,分享原創(chuàng)系列 https://blog.csdn.net/youcans = def main(): # 讀取數(shù)據(jù)文件 readPath = "../data/toothpaste.csv" # 數(shù)據(jù)文件的地址和文件名 dfOpenFile = pd.read_csv(readPath, header=0, sep=",") # 間隔符為逗號,首行為標(biāo)題行 # 準(zhǔn)備建模數(shù)據(jù):分析因變量 Y(sales) 與 自變量 x1~x4 的關(guān)系 dfData = dfOpenFile.dropna() # 刪除含有缺失值的數(shù)據(jù) sns.set_style('dark') # 數(shù)據(jù)探索:分布特征 fig1, axes = plt.subplots(2, 2, figsize=(10, 8)) # 創(chuàng)建一個 2行 2列的畫布 sns.distplot(dfData['price'], bins=10, ax=axes[0,0]) # axes[0,1] 左上圖 sns.distplot(dfData['average'], bins=10, ax=axes[0,1]) # axes[0,1] 右上圖 sns.distplot(dfData['advertise'], bins=10, ax=axes[1,0]) # axes[1,0] 左下圖 sns.distplot(dfData['difference'], bins=10, ax=axes[1,1]) # axes[1,1] 右下圖 plt.show() # 數(shù)據(jù)探索:相關(guān)性 fig2, axes = plt.subplots(2, 2, figsize=(10, 8)) # 創(chuàng)建一個 2行 2列的畫布 sns.regplot(x=dfData['price'], y=dfData['sales'], ax=axes[0,0]) sns.regplot(x=dfData['average'], y=dfData['sales'], ax=axes[0,1]) sns.regplot(x=dfData['advertise'], y=dfData['sales'], ax=axes[1,0]) sns.regplot(x=dfData['difference'], y=dfData['sales'], ax=axes[1,1]) plt.show() # 數(shù)據(jù)探索:考察自變量平方項的相關(guān)性 fig3, axes = plt.subplots(1, 2, figsize=(10, 4)) # 創(chuàng)建一個 2行 2列的畫布 sns.regplot(x=dfData['advertise'], y=dfData['sales'], order=2, ax=axes[0]) # order=2, 按 y=b*x**2 回歸 sns.regplot(x=dfData['difference'], y=dfData['sales'], order=2, ax=axes[1]) # YouCans, XUPT plt.show() # 線性回歸:分析因變量 Y(sales) 與 自變量 X1(Price diffrence)、X2(Advertise) 的關(guān)系 y = dfData['sales'] # 根據(jù)因變量列名 list,建立 因變量數(shù)據(jù)集 x0 = np.ones(dfData.shape[0]) # 截距列 x0=[1,...1] x1 = dfData['difference'] # 價格差,x4 = x1 - x2 x2 = dfData['advertise'] # 廣告費 x3 = dfData['price'] # 銷售價格 x4 = dfData['average'] # 市場均價 x5 = x2**2 # 廣告費的二次元 x6 = x1 * x2 # 考察兩個變量的相互作用 # Model 1:Y = b0 + b1*X1 + b2*X2 + e # # 線性回歸:分析因變量 Y(sales) 與 自變量 X1(Price diffrence)、X2(Advertise) 的關(guān)系 X = np.column_stack((x0,x1,x2)) # [x0,x1,x2] Model1 = sm.OLS(y, X) # 建立 OLS 模型: Y = b0 + b1*X1 + b2*X2 + e result1 = Model1.fit() # 返回模型擬合結(jié)果 yFit1 = result1.fittedvalues # 模型擬合的 y 值 prstd, ivLow, ivUp = wls_prediction_std(result1) # 返回標(biāo)準(zhǔn)偏差和置信區(qū)間 print(result1.summary()) # 輸出回歸分析的摘要 print("\nModel1: Y = b0 + b1*X + b2*X2") print('Parameters: ', result1.params) # 輸出:擬合模型的系數(shù) # # Model 2:Y = b0 + b1*X1 + b2*X2 + b3*X3 + b4*X4 + e # 線性回歸:分析因變量 Y(sales) 與 自變量 X1~X4 的關(guān)系 X = np.column_stack((x0,x1,x2,x3,x4)) #[x0,x1,x2,...,x4] Model2 = sm.OLS(y, X) # 建立 OLS 模型: Y = b0 + b1*X1 + b2*X2 + b3*X3 + e result2 = Model2.fit() # 返回模型擬合結(jié)果 yFit2 = result2.fittedvalues # 模型擬合的 y 值 prstd, ivLow, ivUp = wls_prediction_std(result2) # 返回標(biāo)準(zhǔn)偏差和置信區(qū)間 print(result2.summary()) # 輸出回歸分析的摘要 print("\nModel2: Y = b0 + b1*X + ... + b4*X4") print('Parameters: ', result2.params) # 輸出:擬合模型的系數(shù) # # Model 3:Y = b0 + b1*X1 + b2*X2 + b3*X2**2 + e # # 線性回歸:分析因變量 Y(sales) 與 自變量 X1、X2 及 X2平方(X5)的關(guān)系 X = np.column_stack((x0,x1,x2,x5)) # [x0,x1,x2,x2**2] Model3 = sm.OLS(y, X) # 建立 OLS 模型: Y = b0 + b1*X1 + b2*X2 + b3*X2**2 + e result3 = Model3.fit() # 返回模型擬合結(jié)果 yFit3 = result3.fittedvalues # 模型擬合的 y 值 prstd, ivLow, ivUp = wls_prediction_std(result3) # 返回標(biāo)準(zhǔn)偏差和置信區(qū)間 print(result3.summary()) # 輸出回歸分析的摘要 print("\nModel3: Y = b0 + b1*X1 + b2*X2 + b3*X2**2") print('Parameters: ', result3.params) # 輸出:擬合模型的系數(shù) # 擬合結(jié)果繪圖 fig, ax = plt.subplots(figsize=(8,6)) # YouCans, XUPT ax.plot(range(len(y)), y, 'b-.', label='Sample') # 樣本數(shù)據(jù) ax.plot(range(len(y)), yFit3, 'r-', label='Fitting') # 擬合數(shù)據(jù) # ax.plot(range(len(y)), yFit2, 'm--', label='fitting') # 擬合數(shù)據(jù) ax.plot(range(len(y)), ivUp, '--',color='pink',label="ConfR") # 95% 置信區(qū)間 上限 ax.plot(range(len(y)), ivLow, '--',color='pink') # 95% 置信區(qū)間 下限 ax.legend(loc='best') # 顯示圖例 plt.title('Regression analysis with sales of toothpaste') plt.xlabel('period') plt.ylabel('sales') plt.show() return if __name__ == '__main__': main()
6.3 程序運行結(jié)果:
OLS Regression Results ============================================================================== Dep. Variable: sales R-squared: 0.886 Model: OLS Adj. R-squared: 0.878 Method: Least Squares F-statistic: 105.0 Date: Sat, 08 May 2021 Prob (F-statistic): 1.84e-13 Time: 22:18:04 Log-Likelihood: 2.0347 No. Observations: 30 AIC: 1.931 Df Residuals: 27 BIC: 6.134 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 4.4075 0.722 6.102 0.000 2.925 5.890 x1 1.5883 0.299 5.304 0.000 0.974 2.203 x2 0.5635 0.119 4.733 0.000 0.319 0.808 ============================================================================== Omnibus: 1.445 Durbin-Watson: 1.627 Prob(Omnibus): 0.486 Jarque-Bera (JB): 0.487 Skew: 0.195 Prob(JB): 0.784 Kurtosis: 3.486 Cond. No. 115. ============================================================================== Model1: Y = b0 + b1*X + b2*X2 Parameters: const 4.407493 x1 1.588286 x2 0.563482 OLS Regression Results ============================================================================== Dep. Variable: sales R-squared: 0.895 Model: OLS Adj. R-squared: 0.883 Method: Least Squares F-statistic: 74.20 Date: Sat, 08 May 2021 Prob (F-statistic): 7.12e-13 Time: 22:18:04 Log-Likelihood: 3.3225 No. Observations: 30 AIC: 1.355 Df Residuals: 26 BIC: 6.960 Df Model: 3 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 8.0368 2.480 3.241 0.003 2.940 13.134 x1 1.3832 0.288 4.798 0.000 0.791 1.976 x2 0.4927 0.125 3.938 0.001 0.236 0.750 x3 -1.1184 0.398 -2.811 0.009 -1.936 -0.300 x4 0.2648 0.199 1.332 0.195 -0.144 0.674 ============================================================================== Omnibus: 0.141 Durbin-Watson: 1.762 Prob(Omnibus): 0.932 Jarque-Bera (JB): 0.030 Skew: 0.052 Prob(JB): 0.985 Kurtosis: 2.885 Cond. No. 2.68e+16 ============================================================================== Model2: Y = b0 + b1*X + ... + b4*X4 Parameters: const 8.036813 x1 1.383207 x2 0.492728 x3 -1.118418 x4 0.264789 OLS Regression Results ============================================================================== Dep. Variable: sales R-squared: 0.905 Model: OLS Adj. R-squared: 0.894 Method: Least Squares F-statistic: 82.94 Date: Sat, 08 May 2021 Prob (F-statistic): 1.94e-13 Time: 22:18:04 Log-Likelihood: 4.8260 No. Observations: 30 AIC: -1.652 Df Residuals: 26 BIC: 3.953 Df Model: 3 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 17.3244 5.641 3.071 0.005 5.728 28.921 x1 1.3070 0.304 4.305 0.000 0.683 1.931 x2 -3.6956 1.850 -1.997 0.056 -7.499 0.108 x3 0.3486 0.151 2.306 0.029 0.038 0.659 ============================================================================== Omnibus: 0.631 Durbin-Watson: 1.619 Prob(Omnibus): 0.729 Jarque-Bera (JB): 0.716 Skew: 0.203 Prob(JB): 0.699 Kurtosis: 2.362 Cond. No. 6.33e+03 ============================================================================== Model3: Y = b0 + b1*X1 + b2*X2 + b3*X2**2 Parameters: const 17.324369 x1 1.306989 x2 -3.695587 x3 0.348612
以上就是Python數(shù)學(xué)建模StatsModels統(tǒng)計回歸可視化的詳細內(nèi)容,更多關(guān)于數(shù)學(xué)建模StatsModels統(tǒng)計回歸的資料請關(guān)注腳本之家其它相關(guān)文章!
- Python使用latexify模塊實現(xiàn)將代碼為數(shù)學(xué)公式
- Python內(nèi)置數(shù)學(xué)函數(shù)和math模塊使用指南
- 表格梳理python內(nèi)置數(shù)學(xué)模塊math分析詳解
- Python數(shù)學(xué)建模StatsModels統(tǒng)計回歸模型數(shù)據(jù)的準(zhǔn)備
- Python數(shù)學(xué)建模StatsModels統(tǒng)計回歸之線性回歸示例詳解
- python常用模塊(math itertools functools sys shutil)使用講解
- Python中非常實用的Math模塊函數(shù)教程詳解
- Python?Math數(shù)學(xué)函數(shù)常數(shù)冪和對數(shù)基礎(chǔ)應(yīng)用實例
相關(guān)文章
Python + selenium自動化環(huán)境搭建的完整步驟
這篇文章主要給大家介紹了關(guān)于Python + selenium自動化環(huán)境搭建的相關(guān)資料,文中通過圖文將實現(xiàn)的步驟一步步介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧2018-05-05解決Shell執(zhí)行python文件,傳參空格引起的問題
今天小編就為大家分享一篇解決Shell執(zhí)行python文件,傳參空格引起的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10python如何獲得list或numpy數(shù)組中最大元素對應(yīng)的索引
這篇文章主要介紹了python如何獲得list或numpy數(shù)組中最大元素對應(yīng)的索引,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11基于python實現(xiàn)簡單網(wǎng)頁服務(wù)器代碼實例
這篇文章主要介紹了基于python實現(xiàn)簡單網(wǎng)頁服務(wù)器代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09