【Statsmodels和SciPy介紹與常用方法】

Statsmodels庫介紹與常用方法

Statsmodels 是一個強大的 Python 庫,專注于統計建模和數據分析,廣泛應用于經濟學、金融、生物統計等領域。它提供了豐富的統計模型、假設檢驗和數據探索工具,適合進行回歸分析、時間序列分析等任務。本文將介紹 Statsmodels 的核心功能,并通過代碼示例展示其常用方法。

Statsmodels 簡介

Statsmodels 建立在 NumPy 和 SciPy 的基礎上,提供了易于使用的接口來實現線性回歸、廣義線性模型(GLM)、時間序列分析(如 ARIMA)、假設檢驗等功能。與 Scikit-learn 不同,Statsmodels 更側重于統計推斷,提供詳細的統計結果(如 p 值、置信區間等),適合需要深入分析的場景。

安裝 Statsmodels:

pip install statsmodels

常用方法與代碼示例
以下是 Statsmodels 中常用的功能模塊及其方法,附帶代碼示例。

  1. 線性回歸(Linear Regression)
    Statsmodels 的 OLS(普通最小二乘法)是進行線性回歸的核心工具。它可以擬合模型并返回詳細的統計結果。

示例:簡單線性回歸

import numpy as np
import statsmodels.api as sm
import pandas as pd# 生成示例數據
np.random.seed(0)
X = np.random.rand(100, 1) * 10
y = 2 * X.flatten() + np.random.normal(0, 1, 100)# 添加常數項(截距)
X = sm.add_constant(X)# 擬合 OLS 模型
model = sm.OLS(y, X).fit()# 輸出模型摘要
print(model.summary())

說明:

sm.add_constant:為自變量添加常數列以擬合截距。
model.summary():輸出詳細的統計結果,包括 R2、系數、p 值等。
2. 廣義線性模型(GLM)
GLM 擴展了線性回歸,適用于非正態分布的因變量(如二項分布、泊松分布)。

示例:邏輯回歸(Logistic Regression)

import statsmodels.api as sm
import pandas as pd# 加載示例數據集
data = sm.datasets.get_rdataset("iris", "datasets").data
# 二分類:將鳶尾花數據集簡化為二分類問題
data = data[data['Species'].isin(['setosa', 'versicolor'])]
X = data[['Sepal.Length', 'Sepal.Width']]
y = (data['Species'] == 'setosa').astype(int)# 添加常數項
X = sm.add_constant(X)# 擬合邏輯回歸模型
model = sm.GLM(y, X, family=sm.families.Binomial()).fit()# 輸出結果
print(model.summary())

說明:

sm.GLM:指定 family 參數(如 Binomial)以實現邏輯回歸。
結果包括系數、標準誤、z 值等,便于假設檢驗。
3. 時間序列分析(ARIMA)
Statsmodels 提供強大的時間序列分析工具,如 ARIMA 模型,適用于預測和建模時間序列數據。

示例:ARIMA 模型

import statsmodels.api as sm
import pandas as pd# 加載示例數據集(空氣乘客數據)
data = sm.datasets.get_rdataset("AirPassengers", "datasets").data
y = data['value']# 擬合 ARIMA(1,1,1) 模型
model = sm.tsa.ARIMA(y, order=(1, 1, 1)).fit()# 預測未來 12 個時間點
forecast = model.forecast(steps=12)
print("預測值:", forecast)# 繪制結果
import matplotlib.pyplot as plt
plt.plot(y, label='實際值')
plt.plot(range(len(y), len(y) + 12), forecast, label='預測值')
plt.legend()
plt.savefig('arima_forecast.png')

說明:

sm.tsa.ARIMA:指定 (p,d,q) 參數以定義模型階數。
forecast:用于預測未來值。
使用 matplotlib 繪制結果,保存為圖片。
4. 假設檢驗
Statsmodels 提供多種統計檢驗工具,如 t 檢驗、卡方檢驗等。

示例:獨立樣本 t 檢驗

import statsmodels.stats.api as sm_stats
import numpy as np# 生成兩組樣本數據
np.random.seed(0)
group1 = np.random.normal(10, 2, 50)
group2 = np.random.normal(11, 2, 50)# 執行 t 檢驗
t_stat, p_value, df = sm_stats.ttest_ind(group1, group2)
print(f"t 統計量: {t_stat}, p 值: {p_value}")

說明:

ttest_ind:用于比較兩組獨立樣本的均值差異。
輸出 t 統計量和 p 值,用于判斷顯著性。

更多的用法請查看官方文檔,https://www.statsmodels.org/。

SciPy庫介紹與常用方法

SciPy 是一個基于 Python 的開源科學計算庫,廣泛應用于數學、科學和工程領域。它建立在 NumPy 的基礎上,提供了高效的數值計算工具,涵蓋優化、積分、插值、信號處理、線性代數等功能。本文將介紹 SciPy 的核心功能,并通過代碼示例展示其常用方法。

SciPy 簡介

SciPy 是一個模塊化的庫,包含多個子模塊,每個子模塊專注于特定領域的計算任務,例如:

  • scipy.optimize:優化算法
  • scipy.integrate:數值積分
  • scipy.interpolate:插值
  • scipy.signal:信號處理
  • scipy.linalg:線性代數
  • scipy.stats:統計分析

SciPy 與 NumPy、Matplotlib 等庫無縫集成,適合科學計算和數據分析。

安裝 SciPy:

pip install scipy

常用方法與代碼示例
以下是 SciPy 中幾個常用子模塊及其方法的介紹,附帶代碼示例。

  1. 優化(Optimization)
    scipy.optimize 提供了多種優化算法,用于尋找函數的最優解(如最小值)。

示例:最小化函數

import numpy as np
from scipy.optimize import minimize# 定義目標函數
def objective(x):return x[0]**2 + x[1]**2# 初始猜測
x0 = np.array([1.0, 1.0])# 最小化目標函數
result = minimize(objective, x0, method='BFGS')
print("最優解:", result.x)
print("最小值:", result.fun)

說明:

minimize:通過指定優化方法(如 BFGS)尋找函數最小值。
輸出包括最優參數 result.x 和目標函數值 result.fun。
2. 數值積分(Integration)
scipy.integrate 提供了數值積分工具,適用于單重積分、雙重積分等。

示例:單重積分

from scipy.integrate import quad# 定義被積函數
def f(x):return np.sin(x)# 計算 sin(x) 從 0 到 π 的積分
result, error = quad(f, 0, np.pi)
print("積分結果:", result)
print("估計誤差:", error)

說明:

quad:計算定積分,返回積分結果和誤差估計。
上述例子計算 sin(x) 從 0 到 π 的積分為 2。
3. 插值(Interpolation)
scipy.interpolate 用于在離散數據點之間進行插值,生成平滑的函數。

示例:一維插值

import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt# 生成示例數據
x = np.linspace(0, 10, 10)
y = np.sin(x)# 創建線性插值函數
f_linear = interp1d(x, y, kind='linear')# 生成密集的 x 值用于繪制插值結果
x_dense = np.linspace(0, 10, 100)
y_linear = f_linear(x_dense)# 繪制結果
plt.plot(x, y, 'o', label='數據點')
plt.plot(x_dense, y_linear, '-', label='線性插值')
plt.legend()
plt.savefig('interpolation.png')

說明:

interp1d:生成一維插值函數,支持線性、二次、三次插值等。
使用 Matplotlib 繪制原始數據點和插值曲線。
4. 線性代數(Linear Algebra)
scipy.linalg 提供了豐富的線性代數工具,如矩陣分解、求逆、特征值計算等。

示例:求解線性方程組

from scipy.linalg import solve
import numpy as np# 定義系數矩陣 A 和常數向量 b
A = np.array([[3, 1], [1, 2]])
b = np.array([9, 8])# 求解 Ax = b
x = solve(A, b)
print("解:", x)

說明:

solve:求解線性方程組 Ax = b,返回解向量 x。
上述例子解方程組 3x + y = 9, x + 2y = 8。
5. 統計分析(Statistics)
scipy.stats 提供概率分布、統計檢驗等工具。

示例:正態分布擬合

from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt# 生成正態分布的樣本數據
np.random.seed(0)
data = np.random.normal(loc=0, scale=1, size=1000)# 擬合正態分布
mu, sigma = norm.fit(data)
print("均值:", mu, "標準差:", sigma)# 繪制數據直方圖和擬合曲線
plt.hist(data, bins=30, density=True, alpha=0.5, label='數據')
x = np.linspace(-3, 3, 100)
plt.plot(x, norm.pdf(x, mu, sigma), 'r-', label='擬合正態分布')
plt.legend()
plt.savefig('normal_fit.png')

說明:

norm.fit:擬合正態分布,估計均值和標準差。
使用 norm.pdf 繪制概率密度函數。

更多詳細信息請查閱官方文檔,https://docs.scipy.org/doc/scipy/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80806.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80806.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80806.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Rust通用集合類型】Rust向量Vector、String、HashMap原理解析與應用實戰

?? 歡迎大家來到景天科技苑?? 🎈🎈 養成好習慣,先贊后看哦~🎈🎈 🏆 作者簡介:景天科技苑 🏆《頭銜》:大廠架構師,華為云開發者社區專家博主,…

SoapUi測試1——REST(WebAPi、Json協議/HTTP、Post通訊方式)接口測試

文章目錄 1背景1.1接口測試工具SoapUi產生背景1.2常見接口類型1.3接口包含內容1.4請求格式 2軟件使用3http、webservice、webapi如何測試3.1REST(WebAPi、JSON/HTTP、POST)3.2SOAP(Webserver、XML/HTTP、POST) 1背景 1.1接口測試…

Linux按鍵驅動測試

文章目錄 一、設備節點添加 二、創建驅動文件代碼 2.1 核心數據結構 2.2 按鍵值定義 2.3 關鍵函數實現 三、創建測試文件 四、測試 一、設備節點添加 首先在設備樹文件中添加pinctrl以及在根目錄下添加設備節點。如下: //創建按鍵輸入的pinctrlpinctrl_key: keygrp…

5000元可以運行32B大模型的筆記本

5000元可以運行32B 大模型的筆記本 榮耀筆記本 X14 Plus 銳龍版 R7-8845HS -32G -1T 模型名稱 模型大小 tokens/s qwq-32b-q4 19GB 2.4 Qwen2.5-Coder-14B- Q8 16GB 4 DeepSeek-R1-Distill-Qwen-7B-Q8 8GB 8.1 DeepSeek-R1-Distill-Llama-8B-Q4 5GB 11.7

arm設備樹基礎知識

文章目錄 前言dts片段通用屬性介紹地址大小中斷phandlecompatible mmc節點介紹 前言 arm開發&#xff0c;早晚要了解設備樹 dts片段 interrupt-parent <0x8005>; model "linux,dummy-virt"; #size-cells <0x02>; #address-cells <0x02>; co…

【C++ 核心知識點面試攻略:從基礎到實戰(上位機開發視角)】

一、命名空間&#xff08;Namespace&#xff09;相關問題 問題1&#xff1a;C引入命名空間的核心目的是什么&#xff1f;如何通過命名空間解決命名沖突&#xff1f; 答案&#xff1a; C引入命名空間的核心目的是 避免全局作用域中的命名沖突&#xff0c;通過將變量、函數、類…

線性代數與數據學習

The Functions of Deep Learning (essay from SIAM News, December 2018) Deep Learning and Neural Nets

phpstorm用php連接數據庫報錯

項目場景&#xff1a; phpstorm用php連接數據庫 問題描述 用php使用mysql_connect 的時候報錯了&#xff0c;沒有這個函數 原因分析&#xff1a; php解釋器問題&#xff0c;后來查資料得知mysql_connct只適用于php5.5以下解釋器。一開始用的7&#xff0c;改成5.3以后還是報…

51c大模型~合集122

我自己的原文哦~ https://blog.51cto.com/whaosoft/13877107 #PHYBench 北大物院200人合作&#xff0c;金牌得主超50人&#xff01;PHYBench&#xff1a;大模型究竟能不能真的懂物理&#xff1f; 本項目由北京大學物理學院朱華星老師、曹慶宏副院長統籌指導。基準設計、…

單片機 + 圖像處理芯片 + TFT彩屏 觸摸滑動條控件

觸摸滑動條控件使用說明 一、項目概述 本項目基于單片機和RA8889/RA6809圖形處理芯片的TFT觸摸屏滑動條控件。該控件支持水平和垂直滑動條&#xff0c;可自定義外觀和行為&#xff0c;并支持回調函數進行值變化通知。 硬件平臺&#xff1a;51/ARM均可(測試時使用STC8H8K64U單…

linux離線安裝zsh

下載zsh 下載倉庫后解壓 下載地址&#xff1a;https://github.com/zsh-users/zsh 離線安裝 安裝方法見INSTALL文件 ./configure --prefix[/usr/local] make make install

機器學習中的數據轉換:關鍵步驟與最佳實踐

機器學習中的數據轉換&#xff1a;關鍵步驟與最佳實踐 摘要 &#xff1a;在機器學習領域&#xff0c;數據是模型的核心&#xff0c;而數據的轉換是構建高效、準確模型的關鍵步驟之一。本文深入探討了機器學習中數據轉換的重要性、常見的數據類型及其轉換方法&#xff0c;以及在…

TDR阻抗會爬坡? 別擔心,不是你的錯,你只是不夠了解TDR!

在背板系統或任何長走線設計里&#xff0c;你大概都碰過這畫面&#xff1a; TDR 曲線一開始乖乖在 92 Ω&#xff0c;但越往末端、阻抗越爬越高&#xff0c;來到最高 97 Ω&#xff0c;心里瞬間涼半截 &#x1f612; &#xff0c;「難不成... 板廠又翻車了嗎&#xff1f;」 然…

在另外一臺可以科學下載的電腦用ollama下載模型后,怎么導入到另外一臺服務器的ollama使用

環境&#xff1a; Win10專業版 Ubuntu20.04 問題描述&#xff1a; 在另外一臺可以科學下載的電腦用ollama下載模型后&#xff0c;怎么導入到另外一臺服務器的ollama使用&#xff0c;原電腦win10上的ollama下載的模型,復制到ubuntu20.04的ollama上推理 解決方案&#xff1a;…

Ethan獨立開發產品日報 | 2025-04-27

1. CreateWise AI 旨在提升你工作效率的AI播客編輯器 人工智能播客編輯器&#xff0c;讓你的播客制作速度提升10倍&#xff01;它可以自動去除口頭語和沉默&#xff0c;生成節目筆記和精彩片段&#xff0c;還能一鍵制作適合社交媒體分享的短視頻——所有這些功能都只需一次點…

解決 shadui組件庫Popover 點擊后會消失

react用了shadui組件庫 <Popover><PopoverTrigger><div className"text-operation-item" onClick{props.callback}><img src{props.imgSrc} width{20} height{20} /></div></PopoverTrigger><PopoverContent className"…

SVC電氣設備作用

SVC&#xff08;Static Var Compensator&#xff0c;靜止無功補償器&#xff09;是一種基于電力電子技術的動態無功補償裝置&#xff0c;屬于靈活交流輸電系統&#xff08;FACTS&#xff09;的核心設備之一。它通過快速調節電網中的無功功率&#xff0c;改善電能質量、穩定系統…

黑馬點評商戶查詢緩存--緩存更新策略

ShopTypeServiceImpl類 代碼 package com.hmdp.service.impl;import cn.hutool.json.JSONUtil; import com.hmdp.dto.Result; import com.hmdp.entity.ShopType; import com.hmdp.mapper.ShopTypeMapper; import com.hmdp.service.IShopTypeService; import com.baomidou.myba…

C 語言函數指針與指針函數詳解

一、引言 在 C 語言的編程世界中&#xff0c;函數指針和指針函數是兩個既強大又容易混淆的概念。它們為 C 語言帶來了更高的靈活性和可擴展性&#xff0c;廣泛應用于回調函數、動態鏈接庫、狀態機等多種場景。深入理解和掌握函數指針與指針函數&#xff0c;對于提升 C 語言編程…

HTML5 新特性詳解:語義化標簽、表單與音視頻嵌入

前言 HTML5作為當前Web開發的核心技術&#xff0c;為開發者提供了更強大、更語義化的工具集。本文將深入探討HTML5的三大核心特性&#xff1a;語義化標簽、增強的表單功能以及原生的音視頻支持&#xff0c;幫助開發者構建更現代化、更易維護的網頁應用。 一、HTML5語義化標簽…