林姿穎(Lin Zih Ying) 徐曉陽(Xu Xiao Yang) 唐琪縉(Tang Chi Jean) 陳莉蓁(Chen Li Chen) 闕靖軒(Chueh Chao)
我國刑事訴訟法上(下稱本法)的羈押有兩種,一為第101條的「一般性羈押」、二為第101-1條的「預防性羈押」,前者主要係為避免被告逃亡、滅證、串供等,後者係為避免被告「再犯」,意即若此時不羈押被告,被告很有可能再次犯下同種犯罪。刑法第101-1條的「預防性羈押」係以侵害憲法上所保障的被告人身自由換取社會或潛在被害人的安全,其素來有所爭議與批評,比如:違反無罪推定原則、逸脫原來羈押目的、不利被告再社會化,因此法院在裁定「預防性羈押」時必須通過「行為人嫌疑重大」、「有事實足認為有反覆實施同一犯罪之虞」及「有羈押之必要」三項實體要件審查,其中又以第二個要件「有事實足認為有反覆實施同一犯罪之虞」之判斷為關鍵。
本文觀察到在我國「預防性羈押」制度設計下,法院判斷被告是否有「反覆實施之虞」時可能有眾多的考量因素(例如:毒癮、前科……等),學者亦指出在判斷「反覆實施之虞」時,僅須由其「犯罪歷程」觀察,若被告有可能再為同一犯罪之危險,即可認定有「反覆實施之虞」。這樣的「犯罪歷程」觀察給了法院裁量的空間,故本研究試以人工智慧技術探討我國法院於裁定「預防性羈押」時會考量哪些因素,以及各該因素間存在的關聯性與對裁定結果的影響程度。為達成此一目標,本文設計利用「准予停止羈押聲請」及「駁回停止羈押聲請」兩組樣本進行對照,並在實務與學說見解的基礎之上,選取法院心證中影響准予或駁回「預防性羈押」的因素作為自變項,研究與應變項之間的關係。在成果分析上,本研究主要採用相關性分析呈現各自變項與應變項的相關程度,試圖釐清在重大影響被告人身自由、且多有批評的「預防性羈押」上,實務如何判斷其准予或駁回。
我國實務
關於判斷是否應予「預防性羈押」,我國實務見解認為刑事訴訟法第101條之1所定之預防性羈押,係因考慮該條所列各款犯罪,一般而言,對於他人生命、身體、財產有重大之侵害,對社會治安破壞甚鉅,而其犯罪性質,從實證之經驗而言,犯罪行為人大多有一而再、再而三反覆為之的傾向,故為避免此種犯罪型態之犯罪行為人,在同一社會環境條件下,再次興起犯罪之意念而再為同一之犯罪,因此透過拘束其身體自由之方式,避免其再犯(最高法院108年度台抗字第149號刑事裁定、最高法院103年度台抗字第39號刑事裁定)。
基於此制度目的,法院依該條規定決定是否應予羈押時,並不須有積極證據,足認其確實準備或預備再為同一之犯罪,亦不以被告有同一犯罪之前科紀錄為必要,而僅須由其犯罪之歷程觀察,存在使人相信被告有可能再為同一犯罪危險之條件,即可認定有反覆實施該條犯罪之虞。
至於有無羈押之必要,除有刑事訴訟法第114條各款所列情形外,應由法院依經驗法則與論理法則,按具體個案訴訟進行程度、犯罪性質與實際情狀及其他一切情事妥為審酌,以不違反比例原則之結果進行認定(最高法院109年度台抗字第1039號刑事裁定)。由實務見解可看到,法院對於應予「預防性羈押」並無特定標準,相關審酌因素的重要性仍有待研究整理。
學說見解
關於我國學說對於「預防性羈押」審酌因素之見解,學者薛智仁認為根據德國法,在認定「反覆實施之虞」時,再犯危險因素應涵蓋了行為人個人和社會兩個層面的事實。個人層面可區分為人格因素(例如:智力較低、較為衝動)及行為因素(例如:輟學、無固定工作)進行評估,這些因素皆導致被告在過去逾越社會規範,因而成為危險指標。
學者李錫棟亦指出客觀上有無足以認定被告有重覆實施同一犯罪之虞的事實係對未來的展望性判斷,具較高程度的價值判斷,故應考量被告之心理狀況、犯罪目的是否已達成、被告過去是否經常犯同類型之罪及被告是否以犯某特定之財產犯罪維生。
另外,學者蕭宏宜強調法院在應予「預防性羈押」時應謹慎使用品格證據,例如:不得以被告有前科來證明被告的品德,但前科可用在其他如被告的動機、知識、身分等證明上,以避免無區別或擴張採納品格證據。
美國聯邦最高法院於 United States v. Salerno 案亦指出是否應予「預防性羈押」應審酌被告被控犯罪的嚴重性、證明被告有再犯可能的證據強度、被告的背景及人格、被告被釋放的危險程度。本文將以上開文獻為學理基礎,挑選出法院於判斷是否應予「預防性羈押」時之審酌因素作為變項設定。
參考文獻
關鍵字、樣本範圍
「准予停止羈押聲請」之樣本,本文以「羈押、停止羈押、刑事訴訟法第101條之1」為關鍵字,搜索民國99年至108年間之案件,結果共計373則司法院公開裁定。
關於「駁回停止羈押聲請」之樣本,本文以「駁回、停止羈押、刑事訴訟法第101條之1」為關鍵字,搜索民國99年至109年間之案件,結果共計3630則司法院公開裁定。其中「駁回停止羈押聲請」樣本年份較「准予停止羈押聲請」多了109年之資料,係因前後搜索時間不同之故,於樣本分析上無顯著影響,附帶敘明。
樣本選取與剔除
本文以「准予停止羈押聲請」及「駁回停止羈押聲請」兩組樣本作為對照,為求樣本數相當,以隨機選取方式從3630則「駁回停止羈押聲請」取373則裁定,使「准予停止羈押聲請」及「駁回停止羈押聲請」之初始樣本數皆為373則以利作業。取得各373則裁定後,本文以人工篩選的方式剔除不符研究目標之案件,剔除標準包括:與刑事訴訟法第101之1條無涉、有刑事訴訟法第114條不得羈押之事由、與前案相同、已發監執行、另案羈押及當庭獲釋者。剔除不符案件後,本文另針對涉及多個被告的案件,以法院心證論述段落作為單位進行分案(例如同一裁定中,法院若分別以三種不同的論述說明A、B及C三人准予停止羈押的原因,則該案將分為三案進行分析)。最終,本文篩選出「准予停止羈押聲請」裁定340則及「駁回停止羈押聲請」裁定345則作為本研究分析樣本。
本文自上開裁定樣本中選取應變項 (y) 7 項及自變項 (x) 28 項進行研究,詳細變項及編碼設計如下所示:
法院審酌是否裁定「預防性羈押」時,若有羈押原因而無羈押必要,則應選擇替代手段,即具保、責付、限制住居等,刑事訴訟法第101條之2定有明文。由此,本文觀察前開准予「預防性羈押」樣本裁定,整理出7項具分析意義之應變項(y),分別為「准否停止羈押」、「具保」、「具保金額」、「限制住居」、「限制出境出海」、「定期報到」、「依第116-2條第二款:不得再對被害人...實施危害、恐嚇、等行為」。各項標註標準與意義如下表所示,其中「准否停止羈押」及「具保金額」為本文主要研究對象。
var_y | 研究目標 | 英文 | 代號 | 編碼 |
---|---|---|---|---|
y1 |
准否停止羈押 | grant suspension of detention or not | GS | 准1 駁0 |
y2 |
具保 | release on bail | RB | 有1 無0 |
y3 |
具保金額 | bail amount | BA | (單位:萬) |
y4 |
限制住居 | house arrest | HA | 有1 無0 |
y5 |
限制出境出海 | exit from border/island | BI | 有1 無0 |
y6 |
定期報到 | report periodically | RP | 有1 無0 |
y7 |
依第116-2條第二款:不得再對被害人...實施危害、恐嚇、等行為 | no actions against victim | AV | 有1 無0 |
本文自樣本裁定中針對「法院心證」部分挑選出28個自變項 (x),各項標註標準與意義如下表所示。
如前所述,刑事訴訟法第101條之1的「預防性羈押」有「行為人嫌疑重大」、「有反覆實施之虞」及「有羈押之必要」三項要件,又本研究觀察各該裁定著重討論者為「有反覆實施之虞」及「有羈押之必要」後兩項要件,因此本文主要標註範圍為「法院心證」論述中針對「有反覆實施之虞」及「有羈押之必要」之審酌因素。另外,針對自變項「罪名」的部分,為使標註後資料具有相關性分析之意義,就有多項罪名且各罪保護法益相同者,以法定刑最重之罪名代表該案件罪名。
x | 自變項 | 英文 | 代號 | 編碼 |
---|---|---|---|---|
x1 |
律師聲請 | laweyer | LA | 有1無0 |
x2 |
涉嫌罪名 | suspected crime | SC | 條文 |
x3 |
本質反覆實施之虞 | repeated implement | RI | 有提及1 未提及/不考慮0 非本質上-1 |
x4 |
集團型態 | fraud ring | FR | 集團1 未提及0 非集團-1 |
x5 |
多次犯行 | multiple offenses | MO | 是1 未提及0 不是-1 |
x6 |
案情角色 | criminal role | CR | 重要1 未提及0 不重要-1 |
x7 |
影響/損失 | influences | IN | 多(甚鉅)1 未提及0 少(輕微)-1 |
x8 |
通緝到案 | a wanted suspect | WS | 是1 未提及0 非通緝到案-1 |
x9 |
辯結/已宣判期日 | procedure done | PD | 終結/宣判1 未提及0 尚未-1 |
x10 |
證人訊問完畢/調查證據完畢 | evidence investigation | EI | 完畢1 未提及0 尚未-1 |
x11 |
羈押過久 | long detention | LD | 有1 未提及0 沒有-1 |
x12 |
衝動或無法控制情緒 | Unable to control | UC | 有1 未提及0 不衝動-1 |
x13 |
疾病程度 | Severity of illness | SI | 未達保外就醫但出去治療1 未提及0 未達保外就醫不須出去治療-1 |
x14 |
固定收入/工作 | Stable job | SJ | 有1 未提及0 沒有/不固定-1 |
x15 |
扶養、照顧責任 (包括父母子女) | Supporter | SU | 有1 未提及0 沒有-1 |
x16 |
經濟壓力 | Economic pressure | EP | 有1 未提及0 沒有-1 |
x17 |
家庭支持系統 | Family support | FS | 有1 未提及0 沒有/薄弱-1 |
x18 |
固定住居 | Fixed residence | FR | 有1 無-1 未提及0 |
x19 |
熟悉犯罪手段 | Criminal knowledge | CK | 熟悉1 未提及0 不熟悉-1 |
x20 |
坦承 | Confession | CF | 有1 未提及0 無-1 |
x21 |
悔意 | Remorse | RM | 有1 未提及0 無-1 |
x22 |
已經調解/和解 | Conciliation | CL | 和解1 未提及0 沒有和解-1 |
x23 |
態度良好 | Attitude | AT | 好1 未0 惡-1 |
x24 |
前科 | Criminal record | CR | 有1 未提及0 無-1 他罪前科2 |
x25 |
毒酒癮 | Addiction | AD | 有1 未提及0 沒有-1 |
x26 |
接觸被害人的機會 | Contact the victim | CV | 有1 未提及0 無-1 |
x27 |
接觸其他犯罪成員機會 (集團成員尚未緝獲) | Contact the member | CM | 有1 未提及0 無-1 |
x28 |
現行經濟狀況改善 | Economic status improved | ESI | 改善1 未提及0 未改善-1 |
#@title
#環境設置
# Commented out IPython magic to ensure Python compatibility.
# 輸入套件
import os
import pandas as pd
from sklearn.metrics import mean_squared_error, mean_absolute_error
from sklearn.model_selection import train_test_split, KFold
import numpy as np
import matplotlib.pyplot as plt
import gspread
# %matplotlib inline
from sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn import metrics
# seaborn
import seaborn as sns
# 接榫帳號
from google.colab import auth
auth.authenticate_user()
import gspread
from oauth2client.client import GoogleCredentials
gc = gspread.authorize(GoogleCredentials.get_application_default())
from IPython.display import clear_output
clear_output()
#@title
# 接榫資料
wb = gc.open_by_url('https://docs.google.com/spreadsheets/d/1wy3A7Sew7dz0yQ5s0voSps7ljdbITlYJyEIiS14pVvE/edit#gid=0')
sheet = wb.worksheet('main')
data = sheet.get_all_values()
df = pd.DataFrame(data)
df.columns = df.iloc[1] #把第2列設為標題(因為python的第一列是0,故第二列是1)
df = df.iloc[2:] #從第三列開始
#整理欄位
# df=df.drop(1,axis=0,inplace=False) 去掉第一列
df=df.drop(["JID","JFULL"],axis=1,inplace=False) #去掉某欄
#接榫准予部分資料
sheet_zy = wb.worksheet('准予部分')
data_zy = sheet_zy.get_all_values()
df_zy = pd.DataFrame(data_zy)
df_zy.columns = df_zy.iloc[1] #把第2列設為標題(因為python的第一列是0,故第二列是1)
df_zy = df_zy.iloc[2:] #從第三列開始
#看一下欄位
#df.info()
#df.describe()
#df.head()
# 定義變項類型
# 字串 str、數字 float、單純種類(str)、序列種類(int)
new_df_schema = {
'INDEX': df['INDEX'].astype(str),
'y1': df['y1'].astype(int),
'y2': df['y2'].astype(int),
'y3': df['y3'].astype(float),
'y4': df['y4'].astype(int),
'y5': df['y5'].astype(int),
'y6': df['y6'].astype(int),
'y7': df['y7'].astype(int),
'x1': df['x1'].astype(int),
'x2': df['x2'].astype(str),
'x3': df['x3'].astype(int),
'x4': df['x4'].astype(int),
'x5': df['x5'].astype(int),
'x6': df['x6'].astype(int),
'x7': df['x7'].astype(int),
'x8': df['x8'].astype(int),
'x9': df['x9'].astype(int),
'x10': df['x10'].astype(int),
'x11': df['x11'].astype(int),
'x12': df['x12'].astype(int),
'x13': df['x13'].astype(int),
'x14': df['x14'].astype(int),
'x15': df['x15'].astype(int),
'x16': df['x16'].astype(int),
'x17': df['x17'].astype(int),
'x18': df['x18'].astype(int),
'x19': df['x19'].astype(int),
'x20': df['x20'].astype(int),
'x21': df['x21'].astype(int),
'x22': df['x22'].astype(int),
'x23': df['x23'].astype(int),
'x24': df['x24'].astype(int),
'x25': df['x25'].astype(int),
'x26': df['x26'].astype(int),
'x27': df['x27'].astype(int),
'x28': df['x28'].astype(int)
}
df = pd.DataFrame(new_df_schema)
df_zy = pd.DataFrame(new_df_schema)
#show出資料
#df.info()
#df.describe()
即 y1 (准否停止羈押)與各自變項間的關係,分析法官對停止羈押聲請裁定准予或駁回的心證因素。
變項選取
在全部自變項中,有 13 個自變項,其非 0 標註值的筆數佔比低於5%,意即絕大多數案件都未提及此變項因素,因此在本文的分析中並未分析這部分自變項。 這部分的變項包括:
x3(本質反覆實施之虞)、x6(案情角色)、x8(通緝到案)、x10(證據調查完畢)、x12(衝動)、x14(固定收入/工作)、x17(家庭支持系統)、x18(固定住居)、x19(熟悉犯罪手段)、x23(態度良好)、x25(毒酒癮)、x26(接觸被害人機會)、x28(現行經濟狀況改善)
數據結果與含義
篩選存留下的有 15 個自變項,我們先對其中 14 個進行了相關性分析,結果如下圖所示。數字的正負代表正相關和負相關;數字絕對值越大,代表相關性越高。其中 x2 罪名部分,因為種類繁雜且無法用此套件計算,故而並未包括在內。
#@title
# 相關性總圖
# 變項含義見前述列表
df.columns
Correlation = pd.DataFrame(df[["y1","x1","x4","x5","x7","x9","x11","x13","x15","x16","x20","x21","x22","x24","x27"]])
colormap = plt.cm.viridis
plt.figure(figsize=(20,16))
plt.title('all corelations', y=1.05, size=20)
corr = Correlation.astype(float).corr().round(2)
sns.heatmap(corr,linewidths=0.1,vmax=1.0, square=True, cmap="YlGnBu", linecolor='white', annot=True)
# 計算 p 值
from scipy import stats
crosstable=pd.crosstab(df['y1'],df['x1']) #放入兩個進行相關性比對的變項
stat, p, dof, expected =stats.chi2_contingency(crosstable, correction=False)
#print(crosstable) #印出結果
print("p-value =" + str(p)) #印出p值的計算結果
接下來,再透過以上程式的計算,我們得到 y1 (准駁) 與各自變項間相關性的 p 值。基於上述同樣原因,其中 x2 罪名部分並未包括在內。
我們用 p 值來描述兩個變項的相關性是否顯著,當 p 值小於 0.05 時,我們認為兩變項有相關性,反之則無。結果與 y1 具有相關性(p>0.05)的自變項有 12 個,不具相關性的有 2 個,列表如下。其中正、負相關,指的是標註值與准予停止羈押呈正、負相關。
X變項 | 名稱 | 相關性 | p值 |
---|---|---|---|
x1 | 律師聲請 | -0.05 | 0.2142 |
x4 | 集團型態 | -0.27 | <0.001 |
x5 | 多次犯行 | -0.48 | <0.001 |
x7 | 影響/損失 | -0.43 | <0.001 |
x9 | 辯結/已宣判期日 | 0.36 | <0.001 |
x15 | 扶養、照顧責任 (包括父母子女) | 0.14 | <0.001 |
x16 | 經濟壓力 | -0.02 | 0.5494 |
x20 | 坦承 | 0.5 | <0.001 |
x21 | 悔意 | 0.28 | <0.001 |
x22 | 已經調解/和解 | 0.19 | <0.001 |
x23 | 態度良好 | 0.19 | <0.001 |
x24 | 前科 | -0.36 | <0.001 |
x27 | 接觸其他犯罪成員機會 (集團成員尚未緝獲) | -0.23 | <0.001 |
與 | y1_GS | 具相關性 | |||||||
---|---|---|---|---|---|---|---|---|---|
負相關 | x4 集團 | x5 多次犯行 | x7 影響損失 | x24 前科 | x27 接觸成員 | ||||
正相關 | x9 辯結 | x11 羈押過久 | x13 疾病 | x15 扶養照顧責任 | x20 坦承 | x21 悔意 | x22 已經調解/和解/賠償 | ||
不相關 | x1 律師聲請 | x16經濟壓力/需求 |
在標註中,我們發現,法官在准予和駁回的案件中,所參酌的因素顯有分歧。 正相關的因素往往多在准予案件中被考量;負相關的因素,多在駁回案件中被考量。因此我們統計了各自變項分別在准予和駁回部分的提及(及標註值非0)次數,結果如下圖所示。
法學解釋
【負相關】
【正相關】
【不相關】
律師聲請:就此而言,與本組一開始所設想-由律師聲請較易得到准予停止羈押之結果-並不同。由律師聲請不一定得到較有利被告的結果的原因可能在於以下三個原因:
(1)與民事不同,民事訴訟有較多的不確定法律概念,雙方有較多攻防上的彈性;然而刑事的判斷除了有刑法上的罪刑法定原則、訴訟法上也因為刑事法的本質較不見容於模糊不清的概念,故法院對於預防性羈押的裁定相較於民事法上的判斷應較不彈性。
(2)承上,縱或認為法院裁定是否繼續預防性羈押時,亦可有如民法上較為彈性的法庭攻防,然被告律師並不一定有機會可以向法院親自為被告發聲。
(3)就民事訴訟而言,只要起訴之一方具備形式要件,雙方即可進入法院進行實質審理;此與刑事裁判並不相同,因為刑事訴訟之當事人一方為代表國家利益之檢察官,檢察官一開始會聲請預防性羈押必是因其認為該名被告之犯行符合本法第101-1條的「嫌疑重大」、「反覆實施之虞」、「有羈押必要」,而前次法院亦裁定預防性羈押,故該被告實質上並不與檢察官(被告之對造),處於如民事訴訟般完全對等的地位;被告反而已經被初次(第一次裁定羈押時)判斷其犯行符合上述三要件了。於此,應也可推論出被告律師就聲請停止羈押的裁定之攻防空間已有先天上的限制。
樣本處理
由於相同被告於同案中可能涉嫌多個罪名,類型繁雜,因此將其做適當簡化,當涉及同一法益時,以重罪計:
數據結果與含義
但是即便經過簡化,涉案類型仍舊數量眾多,一些類別的案件量過少,因此難有分析價值。本文僅討論以下部分類型。下圖為 x2 罪名與 y1 准駁的馬賽克圖。 寬窄代表案件數量的多寡,百分比代表准駁所佔比例,粉色代表駁回,藍色代表准予。
需注意,駁回部分的案件原始數量遠比准予部分的數量多,僅為了分析之便而隨機抽取與准予部分相當數量的案件。因此從此圖示中,並不能得出準確的比例,僅能在罪名之間橫向對比。
#@title
# 圖柱越寬案件數量越多
from statsmodels.graphics.mosaicplot import mosaic
from scipy import stats
plt.rcParams["figure.figsize"]=(200,80)
plt.rcParams.update({'font.size': 100})
props={}
lab = {}
df1 = df.copy()
df1["x2"] = df1["x2"].apply(lambda x: "x2 1" if x == 1 else ("x2 0" if x == 0 else x )) #變更x數據值的標籤,需英文
df1["y1"] = df1["y1"].apply(lambda x: "y1 1" if x == 1 else ("y1 0" if x == 0 else x )) #變更y數據值的標籤,需英文
crosstable1=pd.crosstab(df1['x2'],df1['y1'])
col = ['LightPink','LightSkyBlue','red'] #顏色名稱資料庫:https://www.w3schools.com/cssref/css_colors.asp
n = 0
for i in crosstable1.columns:
color = col[n] #y2值相同的塗上相同的顏色
m = 0
for j in crosstable1.index:
#color = col[m] #x值相同的塗上相同的顏色
total = sum(crosstable1.iloc[m])
props[(j,i)]={'facecolor':color, 'edgecolor':'white'}
lab[(j,i)] = f"{crosstable1.iloc[m,n]}, {round(crosstable1.iloc[m,n]/total *100,2)}%"
m += 1
n += 1
labelizer=lambda k:lab[k]
mosaic(df1,["x2","y1"],properties=props, labelizer=labelizer)
plt.show()
法學解釋
即 y1(准予駁回)與各自變項之關係;從前述的相關統計分析後,可以得知兩兩變項間的相關性,而在此我們藉由迴歸分析統計分析,在法院對於准予或駁回停止羈押的審酌因素中,各種因素對法官心證的影響權重。
自變項挑選
從前述與 y1 具有相關性(p<0.05)的 12 個自變項進行回歸分析。
#@title
from sklearn.linear_model import LinearRegression
from sklearn.feature_selection import f_regression
from sklearn import linear_model, preprocessing
X = df[["x4","x5","x7","x9","x11","x13","x15","x20","x21","x22","x24","x27"]]
y = df['y1'] # 准駁
#lm = LinearRegression() #如果是數值y,用此行code (y3)
lm = linear_model.LogisticRegression() #如果是二元y(是/否),用此行code
lm.fit(X, y)
print("自變項項目是:" + str(X.columns)) # 印出自變項項目(之前選擇的自變項)項目和下面的係數、p值按順序一一對應
print("斜率分別是:" + str(lm.coef_)) # 印出係數(即斜率,正值正相關,負值負相關;數字越大相關性越高)
print("p值分別是:" + str(f_regression(X, y)[1])) # 印出 p-value
print("截距是:" + str(lm.intercept_) ) # 印出截距(自變項為0時依變項的值)
print() # 為了好看加個空格
mae = np.mean(abs(lm.predict(X) - y))
mse = np.mean((lm.predict(X) - y) ** 2)
r_squared = lm.score(X, y)
adj_r_squared = r_squared - (1 - r_squared) * (X.shape[1] / (X.shape[0] - X.shape[1] - 1))
print("mae:" + str(mae)) # 反映預測值誤差的實際情況,且越小越好
print("mse:" + str(mse)) # 評價數據的變化程度(與 mae 觀測目標一樣,但是更靈敏),且越小越好
print("r_squared:" +str(r_squared)) # R平方,觀察預測值和實際值的正確率,[0,1],且越大越好
print("adj_r_squared:" + str(adj_r_squared)) # 調整R平方,根據變數數量進行了調整,當變數很多時比R平方更有參考意義#
截距即當上述自變項均為 0 時,y1 的值,意味著當上述情形均未提及時,更傾向於准予停止羈押。這與標註時的觀察相符,在准予停止羈押部分,更常出現沒有任何實際心證過程的案件。
但需要注意,即便模型精度較佳,但僅以此而言,並不具有預測的意義,因為實際上駁回停止羈押聲請的案件數量,遠遠超過准予的數量。而本文的研究樣本,在駁回部分進行了抽樣處理,因此也並未再處理預測部分。
即 y3 與各自變項間的關係,分析法官裁定准予停止羈押時影響具保金額的心證因素。
樣本與自變項選取
此部分對樣本的選用有所不同,僅使用准予部分的樣本。因為法官在考量時大致上會先考量是否准予停止羈押,若准予則再考量具保金額為何,且法院僅於准予停止羈押時方能夠採取具保處分作為羈押替代手段。然有一種例外,即因具保無著而仍舊羈押,但駁回部分樣本並無此種案型。
對於自變項的選取,同樣將標註值非 0 的數量低於准予樣本 5% 的自變項捨去後再分析。此時,存留 17 個自變項,以下分為 x2 罪名部分和其餘 16 個自變項部分分別討論。
自變項處理
與 y1 相關性分析的罪名部分處理方式相同。唯注意此處樣本仍僅採准予部分。
數據結果與含義
下圖為罪名與具保金額的分佈情況,y 軸為具保金額,單位為「萬」,x 軸為罪名分類。
#@title
import altair as alt
alt.Chart(df_zy).mark_point().encode( x='x2', y='y3' ).interactive()
法學解釋
數據結果與含義
除去 x2 罪名部分, y3 與其他 16 個自變項的相關係數圖示如下,圖示中,正、負相關,指的是其標註值與具保金額正、負相關。
再計算 p 值如下列表所示。選取p值小於0.05之變項,進行分析。
X變項 | 名稱 | 相關性 | p值 |
---|---|---|---|
x1 | 律師聲請 | 0.14 | <0.001 |
x4 | 集團型態 | -0.03 | 0.9853 |
x5 | 多次犯行 | -0.05 | 0.9957 |
x6 | 案情角色 | 0.16 | 0.1098 |
x7 | 影響/損失 | 0.26 | 0.0044 |
x9 | 辯結/已宣判期日 | -0.08 | 0.4584 |
x11 | 羈押過久 | 0.16 | 0.0011 |
x15 | 扶養、照顧責任 (包括父母子女) | 0.06 | 0.0104 |
x16 | 經濟壓力 | -0.03 | 0.9939 |
x18 | 固定住居 | -0.02 | 0.9880 |
x20 | 坦承 | -0.04 | 0.2683 |
x21 | 悔意 | -0.03 | 0.0440 |
x22 | 已經調解/和解 | -0.01 | 0.0066 |
x23 | 態度良好 | -0.03 | 0.7062 |
x24 | 前科 | -0.01 | <0.001 |
由 p 值列表可知,和 y3 具有相關性(p<0.05)的自變項有 7 個:
與 | y3_BA | 具相關性 | |||||||
---|---|---|---|---|---|---|---|---|---|
負相關 | x21悔意 | x22 已經調解/和解/賠償 | x24 前科 | ||||||
正相關 | x1 律師聲請 | x7影響/損失 | x11 羈押過久 | x15 扶養照顧責任 |
法學解釋
以下 7 個自變項的各個標註值與具保金額的分佈圖,因具保金額有一些遠遠超過大部分金額的極高值,不利於在此圖中觀察其主要分佈,因此此處我們採用大多數金額區間,即 60 萬以內,進行繪圖。
#@title 1.律師聲請
df_zy = df_zy[df_zy['y3'] < 60]
plt.figure(figsize=(4,6)) # 顯示圖框架大小
plt.style.use("ggplot") # 使用ggplot主題樣式
plt.xlabel("x1_LA", fontweight = "bold") #設定x座標標題及粗體
plt.ylabel("y3_BA", fontweight = "bold") #設定y座標標題及粗體
plt.title("",
fontsize = 15, fontweight = "bold") #設定標題、字大小及粗體
plt.scatter(df_zy["x1"], # x軸資料
df_zy["y3"], # y軸資料
c = "r", # 點顏色
s = 20, # 點大小
alpha = .3, # 透明度
marker = "D")
【正相關】律師聲請(x1):本文推測,由於本文樣本是被告被羈押後聲請停止羈押的法院裁定,是以,若停止羈押聲請係在偵查階段提出,即不適用刑事訴訟法第31條之1偵查中羈押審查程序強制辯護制度;又,若是在審判中聲請停止羈押,則須為刑訴法第31條第1項之強制辯護案件,才受強制辯護制度之保障。依上開條件,在偵查或審判階段聲請停止羈押時,被告自行委任律師者,可能經濟能力相對較好,或是自評所涉犯罪類型較為重大、需要律師協助;經法院指定辯護人者,則多為強制辯護案件中的「最輕本刑為三年以上有期徒刑案件」。換言之,由律師協助聲請停押的被告有經濟狀況較好的可能性,也可能涉及較重大犯罪,則法院傾向裁定較高具保金額,方能確保對這些被告產生足夠的心理拘束效果。
#@title 2.影響/損失
df_zy = df_zy[df_zy['y3'] < 60]
plt.figure(figsize=(4,6)) # 顯示圖框架大小
plt.style.use("ggplot") # 使用ggplot主題樣式
plt.xlabel("x7_IN", fontweight = "bold") #設定x座標標題及粗體
plt.ylabel("y3_BA", fontweight = "bold") #設定y座標標題及粗體
plt.title("",
fontsize = 15, fontweight = "bold") #設定標題、字大小及粗體
plt.scatter(df_zy["x7"], # x軸資料
df_zy["y3"], # y軸資料
c = "#FF3399", # 點顏色
s = 20, # 點大小
alpha = .5, # 透明度
marker = "D")
【正相關】影響/損失(x7):此自變項與法院准駁停押聲請呈負相關,由此可推測,若法院於准許停止羈押的裁定理由中仍提及被告本案犯行對被害人或社會所造成的損失、影響,毋寧是考量此因素後,依然做出准予停押的決定,並認若裁定較高之具保金額,即可達成一定之心理拘束效果。
#@title 3.羈押過久
df_zy = df_zy[df_zy['y3'] < 60]
plt.figure(figsize=(4,6)) # 顯示圖框架大小
plt.style.use("ggplot") # 使用ggplot主題樣式
plt.xlabel("x11_LD", fontweight = "bold") #設定x座標標題及粗體
plt.ylabel("y3_BA", fontweight = "bold") #設定y座標標題及粗體
plt.title("",
fontsize = 15, fontweight = "bold") #設定標題、字大小及粗體
plt.scatter(df_zy["x11"], # x軸資料
df_zy["y3"], # y軸資料
c = "#339966", # 點顏色
s = 20, # 點大小
alpha = .5, # 透明度
marker = "D")
【正相關】羈押過久(x11):此自變項與具保金額呈正相關符合直觀推論,蓋被告若已受較長時間之羈押,說明其所涉犯罪或具體犯罪情節可能較為重大,法院繼而認為應以較高之具保金額避免被告再犯。
#@title 4.扶養、照顧責任 (包括父母子女)
df_zy = df_zy[df_zy['y3'] < 60]
plt.figure(figsize=(4,6)) # 顯示圖框架大小
plt.style.use("ggplot") # 使用ggplot主題樣式
plt.xlabel("x15_SU", fontweight = "bold") #設定x座標標題及粗體
plt.ylabel("y3_BA", fontweight = "bold") #設定y座標標題及粗體
plt.title("",
fontsize = 15, fontweight = "bold") #設定標題、字大小及粗體
plt.scatter(df_zy["x15"], # x軸資料
df_zy["y3"], # y軸資料
c = "b", # 點顏色
s = 20, # 點大小
alpha = .5, # 透明度
marker = "D")
【正相關】扶養、照顧責任(x15):在駁回停止羈押聲請的裁定中,本文經常觀察到法院雖認同被告負有扶養照顧責任,但主張許多被告都有該責任、該責任與預防性羈押或准駁停押聲請之要件無關;因此,本文推測,法院在准予停押的裁定中,對於「扶養照顧責任」事項雖採取和駁回裁定截然不同的論述模式,但或許同樣認為負有扶養照顧責任並不代表較低的再犯可能,故雖肯認被告扶養照顧家人的需求,仍裁定較高之具保金額以求約束、避免其再犯。
#@title 5.悔意
df_zy = df_zy[df_zy['y3'] < 60]
plt.figure(figsize=(4,6)) # 顯示圖框架大小
plt.style.use("ggplot") # 使用ggplot主題樣式
plt.xlabel("x21_RM", fontweight = "bold") #設定x座標標題及粗體
plt.ylabel("y3_BA", fontweight = "bold") #設定y座標標題及粗體
plt.title("",
fontsize = 15, fontweight = "bold") #設定標題、字大小及粗體
plt.scatter(df_zy["x21"], # x軸資料
df_zy["y3"], # y軸資料
c = "#33CCCC", # 點顏色
s = 20, # 點大小
alpha = .5, # 透明度
marker = "D")
【負相關】悔意(x21):此自變項與具保金額呈正相關符合直觀推測,蓋一般多認為法院若已肯認被告具有悔意,則應無以較高具保金額達成心理拘束、避免被告再犯之必要,而傾向裁定較低之具保金額。
#@title 6.已經調解/和解/賠償
df_zy = df_zy[df_zy['y3'] < 60]
plt.figure(figsize=(4,6)) # 顯示圖框架大小
plt.style.use("ggplot") # 使用ggplot主題樣式
plt.xlabel("x22_CL", fontweight = "bold") #設定x座標標題及粗體
plt.ylabel("y3_BA", fontweight = "bold") #設定y座標標題及粗體
plt.title("",
fontsize = 15, fontweight = "bold") #設定標題、字大小及粗體
plt.scatter(df_zy["x22"], # x軸資料
df_zy["y3"], # y軸資料
c = "#FF6600", # 點顏色
s = 20, # 點大小
alpha = .5, # 透明度
marker = "D")
【負相關】已經調解/和解/賠償(x22):本文推測,法院對於已與被害人進行調解、和解、賠償之被告,應係考量其可能已支出相當金額予被害人,經濟上所受影響不小,並且對被害人而言,亦已部分回復其所受損害,故認為裁定較低之具保金額即可達相應之心理拘束效果,亦可避免被告覓保無著。另外,此自變項亦可與前述「悔意」自變項合併觀察,亦即,法院考量本自變項時或亦隱含肯認被告悔意之意思,故裁定較低之具保金額。
#@title 7.前科
df_zy = df_zy[df_zy['y3'] < 60]
plt.figure(figsize=(4,6)) # 顯示圖框架大小
plt.style.use("ggplot") # 使用ggplot主題樣式
plt.xlabel("x24_CR", fontweight = "bold") #設定x座標標題及粗體
plt.ylabel("y3_BA", fontweight = "bold") #設定y座標標題及粗體
plt.title("",
fontsize = 15, fontweight = "bold") #設定標題、字大小及粗體
plt.scatter(df_zy["x24"], # x軸資料
df_zy["y3"], # y軸資料
c = "m", # 點顏色
s = 20, # 點大小
alpha = .5, # 透明度
marker = "D")
【負相關】前科(x24):前科與具保金額呈負相關似乎違反直覺和既定印象。一般來說,以刑法的累犯加重本刑規定類比,吾人傾向認為有前科者若再犯,說明其對先前刑罰的反應力薄弱,故相較於無前科者,法院可能認為需要對有前科者裁定較高額的具保金方能達至相同程度的心理拘束力;然而,本文推測,由於受預防性羈押者所涉犯罪多為財產犯罪,故若被告經常違犯財產犯罪,可能說明其經濟狀況較差、經濟壓力大,法院也因而對經濟狀況較差的被告裁定較低的具保金額。
樣本調整與樣本選取
如前所述,此處我們僅採用准予停止羈押聲請的樣本進行分析。需注意的是,本組進行樣本標註時,雖將准予停止羈押聲請裁定中法院無保停押者之具保金額標註為 0,亦將駁回停止羈押聲請裁定中的具保金額欄位標註為 0,但這兩個0的意義並不相同。
此外,再將千萬以上的極高值去除。少數准予裁定因被告所涉之不法所得極高(例如:臺灣桃園地方法院107年度聲更一字第 9、10、11 號刑事裁定,法院認為三名被告所涉詐欺取財、洗錢犯行之不法所得高達新臺幣7億7126萬元),故考量犯罪所涉惡性、不法所得流向是否不明等等因素,通常會裁定被告繳納非常高額的具保金(如前述裁定中具保金額最高者為新臺幣 3000 萬);然此等案件(多為詐欺取財、金融犯罪)在准予裁定樣本中數量僅6件,不到准予樣本的 3%,最高額者卻高達 3000 萬,嚴重影響具保金額的平均值及預測模型,故本組在此將上述案件去除以利具保金額預測的準確率。
採用上述 7 個與 y3 相關的自變項進行回歸分析。
數據結果與含義
X_zy = df_zy[['x1','x7', 'x11','x15','x21', 'x22', 'x24']]
y_zy = df_zy['y3'] # 具保金額
lm = LinearRegression() #如果是數值y,用此行code (y3)
#lm = linear_model.LogisticRegression() #如果是二元y(是/否),用此行code
lm.fit(X_zy, y_zy)
print("自變項項目是:" + str(X_zy.columns)) # 印出自變項項目(之前選擇的自變項)項目和下面的係數、p值按順序一一對應
print("斜率分別是:" + str(lm.coef_)) # 印出係數(即斜率,正值正相關,負值負相關;數字越大相關性越高)
print("p值分別是:" + str(f_regression(X_zy, y_zy)[1])) # 印出 p-value
print("截距是:" + str(lm.intercept_) ) # 印出截距(自變項為0時依變項的值)
print() # 為了好看加個空格
mae_zy = np.mean(abs(lm.predict(X_zy) - y_zy))
mse_zy = np.mean((lm.predict(X_zy) - y_zy) ** 2)
r_squared_zy = lm.score(X_zy, y_zy)
adj_r_squared_zy = r_squared_zy - (1 - r_squared_zy) * (X_zy.shape[1] / (X_zy.shape[0] - X_zy.shape[1] - 1))
print("mae:" + str(mae_zy)) # 反映預測值誤差的實際情況,且越小越好
print("mse:" + str(mse_zy)) # 評價數據的變化程度(與 mae 觀測目標一樣,但是更靈敏),且越小越好
print("r_squared:" +str(r_squared_zy)) # R平方,觀察預測值和實際值的正確率,[0,1],且越大越好
print("adj_r_squared:" + str(adj_r_squared_zy)) # 調整R平方,根據變數數量進行了調整,當變數很多時比R平方更有參考意義#
我們用准予部分的樣本來探索各變項與具保金額的關係,但是具保金額的數據離散程度非常高,即便選取金額在60萬以內的數據,且不斷調降,模型精度仍然不佳,調整變項,也始終不能達到較好的模型精度。因此放棄用回歸模型來預測具保金額。
法學解釋
本文認為,難以使用上開自變項來預測具保金額的原因在於:
本組在進行樣本標註時觀察到法院在准予和駁回裁定中所參酌的因素分歧頗大,也可能對相同事項有不同的評價,例如:許多被告會以家中有長輩或幼童需要照顧、其為家中經濟支柱等理由請求法院准予具保、停押,此等羈押要件外的考量因素多在准予裁定中被考慮,而在駁回裁定中,法官通常會認為這些理由與羈押要件無涉而不予考量。因此,法官雖然肯認被告有扶養照顧責任,但在准予、駁回裁定中卻有截然不同的評價,故從資料分析結果來看,「x15扶養照顧責任」雖與准予/駁回結果呈現正相關,但實際上並非精確的分析。
此外,會被參酌為駁回停止羈押聲請的因素,如集團犯罪、多次犯行等,在准予停止羈押的案件中,往往不被提及,此等自變項各自不平均地出現在准予、駁回裁定的情形,亦將造成分析和預測失準。 是以,本組認為,單以法院裁定進行准駁停止預防性羈押聲請的參酌因素分析,資料上尚有不足之處,而法院對相同事項亦多有分歧評價,總結而言,對於准駁停止預防性羈押聲請,以法院裁定進行參酌因素分析已屬現今法院公開裁判資料中較為接近的路徑,惟恐非最能逼近正確答案的適切方式。
#隱藏code
from IPython.display import HTML
HTML('''<script>
code_show=true;
function code_toggle() {
if (code_show){
$('div.input').hide();
} else {
$('div.input').show();
}
code_show = !code_show
}
$( document ).ready(code_toggle);
</script>''')