林姿穎(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()