【Python實戰因果推斷】17_線性回歸的不合理效果7

目錄

Regression for Dummies

Conditionally Random Experiments

Dummy Variables


Regression for Dummies

回歸和正交化固然很好,但歸根結底,你必須做出獨立性假設。你必須假設,在考慮到某些協變量的情況下,干預看起來與隨機分配一樣好。這可能相當困難。很難知道模型中是否包含了所有的混雜因素。因此,盡可能推動隨機實驗是非常有意義的。例如,在銀行業的例子中,如果信用額度是隨機的就好了,因為這樣就可以很直接地估算出信用額度對違約率和客戶消費的影響。問題是,這個實驗的成本將高得驚人。你將會給風險極高的客戶提供隨機信用額度,而這些客戶很可能會違約并造成巨大損失。

Conditionally Random Experiments

解決這一難題的方法并不是理想的隨機對照試驗,但卻是最理想的方法:分層或有條件隨機試驗。在這種實驗中,實驗線不是完全隨機的,而是從相同的概率分布中抽取的,因此您需要創建多個局部實驗,根據客戶的協變量從不同的分布中抽取樣本。例如,您知道變量 credit_score1 是客戶風險的代理變量。因此,您可以用它來創建風險較高或較低的客戶群體,將他們劃分為信用分數 1 相似的桶。然后,對于高風險組(信用分數低),您可以從平均分較低的分布中隨機抽取信用額度對于低風險客戶(信用分數高),您可以從平均分較高的分布中隨機抽取信用額度

 risk_data_rnd = pd.read_csv("./data/risk_data_rnd.csv")risk_data_rnd.head()

繪制按credit_score1_buckets劃分的信用額度直方圖,可以看到各行的取樣分布不同。得分較高的組別--低風險客戶--的直方圖向左傾斜,線條較長。風險較高的客戶組--低分--的貸款額度分布圖向右傾斜,貸款額度較低。這種實驗探索的信貸額度與最佳額度相差不大,從而降低了測試成本,使其更易于管理:

這并不意味著條件隨機實驗比完全隨機實驗更好。出于這個原因,如果您選擇條件隨機實驗,無論出于什么原因,都要盡量使其接近完全隨機實驗。這意味著

  • - 組數越少,處理條件隨機測試就越容易。在本例中,您只有 5 個組,因為您把 credit_score1 分成了 200 個桶,分數從 0 到 1,000。將不同的組與不同的干預分布結合起來會增加復雜性,因此堅持少分組是個好主意。
  • - 各組間干預分布的重疊越大,你的實驗就越輕松。這與陽性假設有關。在這個例子中,如果高風險組獲得高線的概率為零,那么您就必須依靠危險的推斷才能知道如果他們獲得高線會發生什么。

如果把這兩條經驗法則調到最大值,就會得到一個完全隨機的實驗,這意味著這兩條經驗法則都需要權衡:組數越少,重疊度越高,實驗就越容易讀取,但成本也越高,反之亦然。

Dummy Variables

條件隨機實驗的好處在于,條件獨立性假設更加可信,因為你知道在你選擇的分類變量下,各條線是隨機分配的。其缺點是,簡單地將結果與被處理者進行回歸,會產生有偏差的估計值。例如,以下是在不包含混雜因素的情況下估計模型的結果:

default_i=\beta_0+\beta_1\text{lines}_i+e_i

 model = smf.ols("default ~ credit_limit", data=risk_data_rnd).fit()model.summary().tables[1]

如圖所示,因果參數 β1 的估計值為負值,這在這里是沒有意義的。較高的信用額度可能并不會降低客戶的風險。實際情況是,在這個數據中,由于實驗的設計方式,風險較低的客戶--credit_score1 高的客戶--平均獲得了更高的額度。

為了對此進行調整,需要在模型中加入隨機分配干預的組別。在這種情況下,需要credit_score1_buckets. 進行控制。盡管該組用數字表示,但它實際上是一個分類變量:它代表一個組。因此,控制組本身的方法是創建啞變量。虛擬變量是一個群體的二進制列。如果客戶屬于該組,則為 1,否則為 0。由于一個客戶只能來自一個組,因此最多只有一列虛擬變量為 1,其他列均為 0。如果您有機器學習背景,您可能會知道這是one-hot。它們完全是一回事。

在 pandas 中,你可以使用 pd.get_dummies 函數來創建啞列。在這里,我傳遞了表示組的列 credit_score1_buckets,并表示我想要創建后綴為 sb(表示分數桶)的啞列。此外,我還刪除了第一個虛擬列,即 0 到 200 分桶的虛擬列。這是因為其中一列是多余的。如果我知道所有其他列都是 0,那么我放棄的那一列 一定是 1:

 risk_data_dummies = (
risk_data_rnd.join(pd.get_dummies(risk_data_rnd["credit_score1_buckets"],prefix="sb",drop_first=True))
)

一旦您有了虛擬列,您就可以將它們添加到您的模型中,并再次估計β1:default_i=\beta_0+\beta_1\text{lines}_i+\theta\mathbf{G}_i+e_i

現在,你會得到一個更合理的估計,這至少是積極的,這表明更多的信用額度會增加違約風險。

 model = smf.ols("default ~ credit_limit + sb_200+sb_400+sb_600+sb_800+sb_1000",data=risk_data_dummies).fit()model.summary().tables[1]

 model = smf.ols("default ~ credit_limit + C(credit_score1_buckets)",data=risk_data_rnd).fit()model.summary().tables[1]

最后,這里只有一個斜率參數。添加虛擬變量來控制混雜因素后,每個組都有一個截距,但所有組的斜率都是一樣的。我們很快就會討論這個問題,但這個斜率將是各組回歸的方差加權平均值。如果繪制每個組的模型預測圖,您可以清楚地看到每個組只有一條線,但所有組的斜率相同:

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

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

相關文章

k8s 常用的命令

k8s 常用的操作 查找資源 kubectl get: 獲取所有的資源,包括node、namespace、pod 、service、deployment等,可以展示一個或者多個資源。 創建資源 kubectl create :Kubernetes 的清單文件可以用 json 或 yaml 定義。 更新資源 …

SQL Error: 1054, SQLState: 42S22

SQL 錯誤 1054 通常與 SQL 查詢中的未知列有關,SQLState 42S22表示列未找到錯誤。 解決方式: 檢查列名: 確保您在SQL查詢中使用的列名實際存在于您查詢的表中。可能存在拼寫錯誤或列名錯誤。驗證表名: 確認SQL查詢中的表名是否正…

python 獲取Shopee蝦皮商家店鋪商品列表 蝦皮api數據采集

此api接口可用于獲取蝦皮平臺商家店鋪的商品列表,目前land參數支持id、vn、my、th、sg、ph、tw(印尼、越南、馬來、泰國、新加坡、菲律賓、臺灣)。 若有需要,請點擊文末鏈接聯系我們。 詳細采集頁面如下 https://shopee.tw/yue…

使用Adobe Acrobat對PDF文檔進行數字簽名

文章目錄 前言一、使用Adobe Acrobat對PDF文檔進行數字簽名1.使用Adobe Acrobat打開需要進行簽名的PDF文檔2. 點擊【查看更多】3.點擊【使用證書】4.點擊【數字簽名】5.使用鼠標選定一個區域6.選擇您需要使用的證書 → 點擊【繼續】7.點擊【簽名】8.簽名成功 前言 一、使用Ado…

嵌入式C語言中指針與鏈表的關系詳解

假定給你一塊非常小的內存,這塊內存只有8字節,這里也沒有高級語言,沒有操作系統,你操作的數據單位是單個字節,你該怎樣讀寫這塊內存呢? 注意這里的限定,再讀一遍,沒有高級語言,沒有操作系統,在這樣的限制之下,你必須直面內存讀寫的本質。 這個本質是什么呢? 本質…

C++中constexpr和#define定義常量的區別

在C中,使用 constexpr 來定義常量和使用宏 #define 有幾個關鍵區別: 類型安全:constexpr 常量有類型,宏沒有類型。作用域:constexpr 常量遵循C的作用域規則,而宏是文本替換,不遵循作用域規則。…

基于xilinx FPGA的GTX/GTH/GTY位置信息查看方式(如X0Y0在bank幾)

目錄 1 概述2 參考文檔3 查看方式4查詢總結: 1 概述 本文用于介紹如何查看xilinx fpga GTX得位置信息(如X0Y0在哪個BANK/Quad)。 2 參考文檔 《ug476_7Series_Transceivers》 《pg156-ultrascale-pcie-gen3-en-us-4.4》 3 查看方式 通過…

語音大模型引領自然交互新時代,景聯文科技推出高質量語音大模型數據庫

近期,OpenAI正式發布語音大模型GPT-4o,可以綜合利用語音、文本和視覺信息進行推理,扮演一個個人語音交互助手。 在音頻處理方面,它不僅能識別和轉錄多種口音和方言,改變語音的速度音調和振動,還能進行聲音模…

vue中數據響應式選擇ref還是reactive?

vue中響應式選擇ref還是reactive合適 語法上來說,兩者都可以實現響應式,之所以有ref和reactive,是為了更加方便的將不同的數據類型分類處理。 主要區別:reactive只能聲明對象/數組,ref可以響應任意數據類型&#xff…

Vue.js 中的 v-if 和 v-show

Vue.js 中的 v-if 和 v-show:詳細解析與比較 在 Vue.js 中,v-if 和 v-show 是兩個常用的指令,用于控制元素的顯示和隱藏。盡管它們都能達到類似的效果,但它們的工作原理和適用場景有著顯著的區別。本文將深入探討這兩者之間的異同…

Codeforces Round 952 (Div. 4) G. D-Function 題解 數學 數論

D-Function 題目描述 Let D ( n ) D(n) D(n) represent the sum of digits of n n n. For how many integers n n n where 1 0 l ≤ n < 1 0 r 10^{l} \leq n < 10^{r} 10l≤n<10r satisfy D ( k ? n ) k ? D ( n ) D(k \cdot n) k \cdot D(n) D(k?n)k?D…

mybatisplus新增數據時生成的雪花id太長前端接收不準確怎么辦?

這是后端返回的&#xff1a;1807308955001573377 這是前端接收的&#xff1a;1807308955001573400 返回的long類型超過前端的最大長度了&#xff0c;渲染不了 只需要在WebMvcConfiguration配置類中重寫方法&#xff0c;如下 Overrideprotected void configureMessageConver…

深度學習:C++和Python如何對大圖進行小目標檢測

最近在醫美和工業兩條線來回穿梭&#xff0c;甚是疲倦&#xff0c;一會兒搞搞醫美的人像美容&#xff0c;一會兒搞搞工業的檢測&#xff0c;最近新接的一個項目&#xff0c;關于瑕疵檢測的&#xff0c;目標圖像也并不是很大吧&#xff0c;需要放大后&#xff0c;才能看見細小的…

基于Java的跨平臺移動應用開發

基于Java的跨平臺移動應用開發 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討基于Java的跨平臺移動應用開發&#xff0c;這是一種強大的技術方案…

使用 App Store Connect API 生成和讀取分析報告

文章目錄 前言安裝 API Swift SDK配置 API Swift SDK生成分析報告獲取所有可用的報告獲取報告的分段下載分段的數據總結 前言 Apple 最近推出了50多個新的分析報告&#xff0c;其中包含數百個新的數據點和指標&#xff0c;以幫助開發者了解他們的應用程序的表現情況。 這些報…

構建安全穩定的應用:Spring Security 實用指南

前言 在現代 Web 應用程序中&#xff0c;安全性是至關重要的一個方面。Spring Security 作為一個功能強大且廣泛使用的安全框架&#xff0c;為 Java 應用程序提供了全面的安全解決方案。本文將深入介紹 Spring Security 的基本概念、核心功能以及如何在應用程序中使用它來實現…

相比共享代理,為什么要用獨享代理IP?

隨著互聯網的廣泛普及和應用&#xff0c;涉及網絡隱私、數據安全和網絡訪問控制的問題變得越來越重要。代理服務器作為一種常見的網絡工具&#xff0c;可以在跨境電商、海外社媒、SEO投放、網頁抓取等領域發揮作用&#xff0c;實現匿名訪問并加強網絡安全。在代理服務器類別中&…

Hadoop:全面深入解析

Hadoop是一個用于大規模數據處理的開源框架&#xff0c;其設計旨在通過集群的方式進行分布式存儲和計算。本篇博文將從Hadoop的定義、架構、原理、應用場景以及常見命令等多個方面進行詳細探討&#xff0c;幫助讀者全面深入地了解Hadoop。 1. Hadoop的定義 1.1 什么是Hadoop …

CDC模型

引言 聚類是一種強大的機器學習方法&#xff0c;用于根據特征空間中元素的接近程度發現相似的模式。它廣泛用于計算機科學、生物科學、地球科學和經濟學。盡管已經開發了最先進的基于分區和基于連接的聚類方法&#xff0c;但數據中的弱連接性和異構密度阻礙了其有效性。在這項…

Linux 下的性能監控與分析技巧

在日常的服務器管理和問題診斷過程中&#xff0c;Linux 命令行工具提供了強大的支持。本文通過幾個常用的示例&#xff0c;介紹如何快速定位問題、監控服務器性能。 無論你是編程新手還是有一定經驗的開發者&#xff0c;理解和掌握這些命令&#xff0c;都將在你的工作中大放異…