非劣性與等效性
「未達統計顯著」不能反過來讀成「兩者相當」。要主張相當,得先在看到資料之前寫下一個你願意讓步的最大幅度——margin——再看信賴區間的上界落在它的哪一側。本頁把同一份 RCT 資料放在四道不同的 margin 前面,讓判定從「劣於」一路翻到「非劣」,並指出翻轉點就坐在信賴區間的上界上。
「未達統計顯著」不能反過來讀
優效性試驗(superiority trial)的虛無假設是「兩組沒有差異」。檢定沒過,意思是這份資料沒有把差異偵測出來, 不是「差異是零」。一個樣本數不足的試驗、一個追蹤太短的試驗、一個結果指標太粗的試驗, 都能給你一個跨過虛無值的信賴區間,而它們跟「兩種治療真的相當」在數字上長得一模一樣。
要主張相當,得換一個設計。你必須在看到任何資料之前寫下一個數字: 如果新療法比舊療法差,最多可以差多少,而你仍然願意用它? 這個數字叫 margin(非劣性界值)。 有了它,判定規則只剩一句話:
把「實驗組減參照組」的差值算出來,看它的 95% 信賴區間上界落在 margin 的哪一側。
本頁一律用正值代表比較差。所以 margin 是一個正數,坐在圖的右邊; 上界低於 margin,就是「就算最壞的情況也還在可接受範圍內」。
這一頁的方向是反過來的,而且是刻意的
本頁用的是設計章 隨機對照試驗已經用過的那份資料: medicaldata::indo_rct,602 位接受 ERCP 的病人,結果指標是 post-ERCP pancreatitis(ERCP 後胰臟炎)。 它是一個優效性試驗(Elmunzer BJ, et al. N Engl J Med 2012;366:1414-22,註冊編號 NCT00820612), 從頭到尾沒有宣告過任何 margin。
照試驗實際跑的方向,風險差是 indomethacin 減安慰劑: -7.8 個百分點,95% 信賴區間 -13.1 到 -2.5 個百分點。 整段落在零的左邊,也就是比較好的那一側。而非劣性的 margin 坐在比較差的那一側, 所以對這個區間而言,任何一個正的 margin 都落在它的右邊——每一道都會過,而且把 margin 移到哪裡判定都不會變。 用這個方向示範「換一個 margin 就換一個結論」,在算術上不可能。
所以本頁把同一份資料轉個方向問:這個藥可以不給嗎? 這是臨床上真的會問的問題 (去實施研究,de-implementation):預防性給藥要成本、要人力、有副作用,不給的代價夠小就值得省。 這樣一問,實驗策略變成「不預防性給藥」,參照變成 indomethacin, 風險差的大小完全一樣、符號相反:7.8 個百分點, 95% 信賴區間 2.5 到 13.1 個百分點。 現在 margin 落在區間附近,移動它就會移動判定。
figures/scripts/B8-06-non-inferiority.R一份資料、四道 margin、三種判定
下表的四道 margin 全部是本頁為了教學自己訂的,不是任何人事先指定的。 每一道的來源都取自這個試驗自己的設計數字,好讓它們至少是可辯護的候選值, 而不是隨手挑的。判定則是實際算出來的:拿轉向後那條區間的上界跟 margin 比一次。
| margin | 這道 margin 怎麼來的 | 上界低於 margin? | 判定 |
|---|---|---|---|
| 2 個百分點 | 幾乎不讓步的一道,比這個試驗自己觀察到的差還小 | 否 | 劣於參照 |
| 5 個百分點 | 這個試驗設計時要偵測的效果(對照組 10% 降到 5%) | 否 | 未定論 |
| 10 個百分點 | 這個試驗設計時假設的整個對照組風險 | 否 | 未定論 |
| 15 個百分點 | 刻意選得寬鬆,就是為了讓判定翻轉 | 是 | 非劣,但未達優效 |
同一批人、同一個結果、同一條區間,判定從「劣於參照」一路走到「非劣」。 中間換掉的只有一個數字,而那個數字不是從資料裡算出來的。
判定在 10 個百分點與 15 個百分點之間翻轉。 更精確地說,翻轉點是 13.118 個百分點—— 那就是信賴區間的上界本身。任何大於它的 margin 都會給出非劣,任何小於它的都不會。
最寬的那一道:非劣,而且統計上比參照差
15 個百分點那一橫列還有一個獨立的教學點。 它的判定是「非劣」,但轉向後那條區間的下界是 2.5 個百分點,仍然在零以上。 也就是說,在這道寬鬆的 margin 之下,「不給藥」同時是:
- 非劣——最壞情況(上界 13.1 個百分點)還在事先講好的可接受範圍內
- 統計上比參照差——區間完全不含零,這份資料偵測得到差異,而且方向是不利的
這兩件事不衝突,因為它們回答的是不同的問題。非劣性問的是「差得夠少嗎」,
不是「有沒有差」。stats 檔的每一橫列都帶一個 worse_than_reference 旗標,
四道 margin 全部是 true。
等效性是雙尾的,而且更難
非劣性只管一邊:實驗組不可以差太多,好太多沒關係。等效性(equivalence)兩邊都管—— 整段區間必須同時落在正負 margin 之內。生體相等性試驗、兩種檢驗方法的比對問的通常是後者。
| margin | 非劣性判定 | 等效性成立? |
|---|---|---|
| 正負 2 個百分點 | 劣於參照 | 否 |
| 正負 5 個百分點 | 未定論 | 否 |
| 正負 10 個百分點 | 未定論 | 否 |
| 正負 15 個百分點 | 非劣,但未達優效 | 是 |
同樣四道界值,等效性只有最寬的那一道成立,而它成立的方式值得注意: 下界 2.5 落在負 15 個百分點之上、 上界 13.1 落在正 15 個百分點之下, 整段被框住了——即使區間本身完全不含零。等效性框住的是幅度,不是方向。
五種可以報告的結果
下面這張圖是圖解,不是分析:五條區間是為了畫圖挑出來的示意值,不是從 medicaldata::indo_rct 或任何其他資料算出來的,不可以當成結果讀。它的用途是拿一篇非劣性論文的區間來對號入座。
figures/scripts/B8-06-non-inferiority.R| 情境 | 試驗設計 | margin 適用? | 怎麼讀 |
|---|---|---|---|
| 優效(優效性試驗,沒有宣告 margin) | 優效性 | 否 | 整段區間落在「沒有差異」比較好的那一側。這個試驗沒有宣告 margin,所以那條 margin 線根本不是它的判定規則的一部分。 |
| 非劣,而且優效 | 非劣性 | 是 | 上界低於零,當然也低於 margin:兩個宣稱同時成立。 |
| 非劣,但未達優效 | 非劣性 | 是 | 上界低於 margin,但區間仍然涵蓋零。非劣性成立;優效性不成立,而且不可以宣稱。 |
| 未定論:區間跨過 margin | 非劣性 | 是 | 上界越過了 margin。什麼都沒有建立起來——這正是論文不可以寫成「兩者相當」的那一橫列。 |
| 劣於參照:差得比 margin 還多 | 非劣性 | 是 | 整段區間都在 margin 之外:比參照差,而且差得比事先講好的還多。 |
第四橫列是最需要小心的一條。上界越過 margin,代表什麼都沒有建立起來: 既沒建立相當,也沒建立比較差。正確的寫法是「未定論」,不是「兩組相當」, 也不是「未顯示差異,故可互換」。
margin 是臨床判斷,不是統計選擇
margin 的大小決定結論,所以它的來源必須是可辯護的。慣例上要求:
- 寫進計畫書,並在收案前定案。 看過區間再訂 margin,等於自己畫靶。
- 從參照治療相對於安慰劑的歷史效果推出來。 常見做法是只允許新療法失去舊療法效果的一部分 (例如一半),確保新療法至少還是勝過不治療。
- 檢查恆定性假設(constancy assumption)。 那個歷史效果是在別的年代、族群、照護水準底下 量到的;今天的病人風險低很多的話,舊療法的效果也縮水,等於那道 margin 自己變寬了。
- 提防界值漂移(biocreep)。 每一代新藥都「不劣於」上一代,一路傳下去可能已經不劣於一個沒效的東西。
- 樣本數通常比優效性試驗大,因為 margin 常比預期差異還小,要把區間壓進去需要更窄的區間。 細節見 樣本數與檢定力。
兩種區間:Wald 與 Newcombe
本頁主要用 Wald 區間(兩個獨立比例的差,常態近似),因為那是非劣性報告實際上會印的那一個。 腳本同時算了 Newcombe 的混合分數區間(hybrid-score,把兩個 Wilson 區間組合起來, 不假設差值本身服從常態),單位都是百分點:
| 算法 | 下界 | 上界 |
|---|---|---|
| Wald(本頁主要使用) | 2.45 | 13.12 |
| Newcombe hybrid-score | 2.40 | 13.16 |
兩者相差不到十分之一個百分點,在這個事件數之下選哪一個都不會改變任何一道 margin 的判定。 這句話的範圍就到這裡為止,它不是通則:當某一組的風險很靠近 0 或 1、或者事件數少很多時, 常態近似會失準,兩種區間就會分開——而那時候差的可能剛好就是跨不跨過 margin。 非劣性設計特別容易撞到這件事,因為兩組的風險常常都很低(參照治療有效), 「事件數少 + 風險接近 0」同時成立。區間算法要事先指定,理由跟 margin 一樣: 事後兩種都算、報比較窄的那個,是在挑結果。
ITT 與 per-protocol:這個設計的方向也是反的
做不成的分析仍然可以把概念量出來。下面是建立在這個試驗自己的數字上的思想實驗: 假設實驗策略那一組裡有一定比例的人其實沒照分派的策略走、行為跟參照組一樣, 點估計就會按那個比例往零縮。標準誤固定不動,好讓唯一在動的東西是稀釋。
| 不遵從比例 | 風險差(百分點) | 95% CI | margin 10 個百分點 | margin 15 個百分點 |
|---|---|---|---|---|
| 0% | 7.8 | 2.5 到 13.1 | 未定論 | 非劣,但未達優效 |
| 10% | 7.0 | 1.7 到 12.3 | 未定論 | 非劣,但未達優效 |
| 20% | 6.2 | 0.9 到 11.6 | 未定論 | 非劣,但未達優效 |
| 30% | 5.4 | 0.1 到 10.8 | 未定論 | 非劣,但未達優效 |
| 40% | 4.7 | -0.7 到 10.0 | 未定論 | 非劣,但未達優效 |
| 50% | 3.9 | -1.4 到 9.2 | 非劣,但未達優效 | 非劣,但未達優效 |
看倒數第二欄。在 10 個百分點這道 margin 之下, 判定一路撐到 40% 不遵從都還是「未定論」, 到 50% 才翻成「非劣」。 稀釋把區間推向 margin 的安全側。
本頁能給的 ITT 那一套是完整的:307 位分到不預防性給藥、 295 位分到 indomethacin, 全部 602 筆都有觀察到的結果,沒有人因為追蹤不到而被排除。 缺的是另外一半,而那一半在這份檔案裡補不起來。
讀論文時看哪裡
- margin 是多少,寫在哪裡。 計畫書或註冊資料裡找得到嗎?如果只出現在結果段落,當作事後的。
- margin 憑什麼訂成那樣。 有沒有引用參照治療相對於安慰劑的歷史效果?保留了多少比例?
- 信賴區間的上界。 判定就是它跟 margin 比一次;把上界跟 margin 一起看,比看結論那句話有用。
- ITT 與 per-protocol 有沒有都報,結論一不一致。 只報一套的非劣性試驗要打折扣。
- 有沒有從非劣掉頭宣稱優效。 這條路徑要事先寫進檢定順序;反方向(優效沒過改宣稱非劣)不成立。
- 摘要的用字。 「未達統計顯著」「未偵測到差異」「非劣」「相當」是四個不同的宣稱, 而摘要最常見的失誤是把第一個寫成第四個。
動手跑一次
library(medicaldata)
data(indo_rct, package = "medicaldata")
d <- indo_rct
# Experimental strategy = omitting the drug; reference = indomethacin.
# A positive difference therefore means "omitting it is worse".
n1 <- sum(d$rx == "0_placebo")
e1 <- sum(d$rx == "0_placebo" & d$outcome == "1_yes")
n0 <- sum(d$rx == "1_indomethacin")
e0 <- sum(d$rx == "1_indomethacin" & d$outcome == "1_yes")
p1 <- e1 / n1
p0 <- e0 / n0
rd <- p1 - p0
se <- sqrt(p1 * (1 - p1) / n1 + p0 * (1 - p0) / n0)
ci <- rd + c(-1, 1) * qnorm(0.975) * se
round(100 * c(rd, ci), 2) # 7.79 2.45 13.12
# The entire decision rule, for a margin sitting on the worse side.
verdict <- function(lcl, ucl, margin) {
if (ucl < 0) "non-inferior and superior"
else if (ucl < margin) "non-inferior, not superior"
else if (lcl > margin) "inferior"
else "inconclusive"
}
for (m in c(0.02, 0.05, 0.10, 0.15)) {
cat(sprintf("margin %4.0f pp -> %s\n", 100 * m, verdict(ci[1], ci[2], m)))
}
# The margin at which the verdict changes IS the upper confidence limit.
100 * ci[2]
# Flip the sign and you have the trial as it was run: the interval then lies
# entirely below zero, so every positive margin is cleared and none can bite.
round(100 * (-rd + c(-1, 1) * qnorm(0.975) * se), 2)驗證環境:R 4.6.0、medicaldata 0.2.0。
import numpy as np
from scipy.stats import norm
n1, e1 = 307, 52 # experimental strategy: no prophylaxis
n0, e0 = 295, 27 # reference: indomethacin
p1, p0 = e1 / n1, e0 / n0
rd = p1 - p0
se = np.sqrt(p1 * (1 - p1) / n1 + p0 * (1 - p0) / n0)
z = norm.ppf(0.975)
lcl, ucl = rd - z * se, rd + z * se
print(round(100 * rd, 2), round(100 * lcl, 2), round(100 * ucl, 2))
def verdict(lcl, ucl, margin):
if ucl < 0: return "non-inferior and superior"
if ucl < margin: return "non-inferior, not superior"
if lcl > margin: return "inferior"
return "inconclusive"
for m in (0.02, 0.05, 0.10, 0.15):
print(f"margin {100 * m:4.0f} pp -> {verdict(lcl, ucl, m)}")
print(100 * ucl) # the margin at which the verdict changesPython 沒有 medicaldata 這個資料集,所以下面直接帶入兩組的人數與事件數(與上面 R 的輸出一致)。非劣性判定不需要特別的函式:它就是把信賴區間的上界跟 margin 比一次。
常見誤用
| 誤用 | 為什麼錯 |
|---|---|
| 優效性檢定未達顯著,改宣稱「兩者相當」 | 那是另一個設計,需要事先指定的 margin;未偵測到差異不是相當的證據 |
| 看到區間之後才訂 margin | margin 決定結論,事後訂等於自己畫靶 |
| 把「已達成非劣性」寫成「兩種做法一樣好」 | 非劣是帶界線的宣稱;刪掉界線就刪掉了這個設計唯一多出來的東西 |
| 非劣性試驗只報 ITT | ITT 的稀釋在這個方向上是反保守的,兩套分析都要報而且要一致 |
| 沿用優效性試驗的樣本數 | margin 常比預期差異小,要把區間壓進 margin 需要更窄的區間 |
| 拿非劣性結果宣稱優效,但沒有事先寫進檢定順序 | 這條路徑要事先指定;反方向(優效沒過改宣稱非劣)不成立 |
| 上界越過 margin 卻寫成「未顯示差異,故可互換」 | 那是未定論:既沒建立相當,也沒建立比較差 |
| 事後兩種區間算法都試,報比較窄的那個 | 跟事後挑 margin 是同一類問題,區間算法要事先指定 |
| 一路「不劣於上一代」傳下去 | 界值漂移;可能已經不劣於一個實際上沒效的東西 |
這一頁是那句一行守衛的指向目標
本站有許多地方用一句話擋住同一個誤讀——「未達統計顯著」被讀成「兩者相同」—— 並且都補上同樣的提醒:要主張相當,需要事先設定 margin 的非劣性或等效性設計 (各頁依它擋的是單邊還是雙邊誤讀而措辭不同,例如 t 檢定那頁寫的是等效性設計)。 它們橫跨基礎檢定、存活分析、預測模型、因果推論與統合分析五族: t 檢定與變異數分析、 Cox 比例風險模型、 Brier score、NRI 與 IDI、 因果中介分析與 網絡統合分析。
一句話只能否認錯誤的讀法。這一頁補的是正確的讀法長什麼樣子:一條信賴區間、一條事先畫好的線, 以及一個只有在兩者比較過之後才成立的宣稱。它在設計層面的位置在 隨機對照試驗——那一章的 ITT 段落已經指出非劣性設計的方向是反的,本頁把它量了出來。
重跑本頁的所有數字
/opt/homebrew/bin/Rscript figures/scripts/B8-06-non-inferiority.R讀讀看這張圖
答案取自產生本頁圖表的同一份統計輸出,不是另外打上去的。
同一條信賴區間配上四道 margin,判定從「劣於參照」一路走到「非劣」。翻轉恰好發生在哪一個數字上?
看答案與解析
正確答案: 13.118 個百分點——它不是表上任何一道 margin,而是資料自己算出來的那條區間的上界,比它寬的 margin 都會過、比它窄的都不會
13.118 就是轉向後那條信賴區間的上界。非劣性檢定的結論等價於「margin 有沒有大於上界」,所以翻轉點不是表上四道 margin 裡的任何一道,而是資料自己給的那個數字。10.000 與 15.000 是把翻轉夾在中間的那兩道,表格只能告訴你翻轉落在它們之間;把 15.000 說成翻轉點,只是因為它是被試出來的第一道,換一組更密的 margin 就會發現更早的位置。這件事的實務意義是:論文最後那句「達成非劣性」,一半的資訊在資料裡,另一半在計畫書裡——你必須回頭看那個 margin 是誰訂的、什麼時候訂的。所以非劣性論文的審閱重點是計畫書與註冊資料,不是統計方法段落。
思想實驗:假設實驗策略那一組有一定比例的人其實沒照分派的策略走、行為跟參照組一樣。在 10 個百分點那道 margin 之下,要多高的不遵從比例判定才翻成「非劣」?
看答案與解析
正確答案: 0.5。稀釋把點估計往零縮、把區間推向 margin 的安全側,所以執行得越差越容易宣稱非劣——意向治療分析在這個設計裡是反保守的
表上那一欄一路撐到 0.4 都還是未定論,到 0.5 才翻成非劣。方向才是重點:稀釋讓兩組看起來更像,而「看起來更像」正是非劣性試驗想要的結論,所以執行得越差越容易宣稱非劣。優效性試驗剛好相反,同樣的稀釋讓顯著結果更難拿到,所以意向治療分析在那裡是保守的選擇。0.1 那一列的判定並沒有翻,說「一點不遵從就會翻」把敏感度誇大了。0.4 是翻轉前的最後一列,稀釋在這一段是讓區間往 margin 的安全側靠,不是離它更遠。所以 per-protocol 在非劣性設計裡不是次要分析:兩套都要報而且要一致,只報意向治療等於用一個偏向自己結論的分析下結論。
這一頁把試驗實際跑的方向轉過來問「這個藥可以不給嗎」。為什麼不直接用試驗原本的方向示範 margin?(以下數值是絕對風險差的比例,乘一百就是頁面上的百分點。)
看答案與解析
正確答案: 因為原方向那條區間的上界是 -0.0245,整段落在零比較好的那一側,而 margin 坐在比較差的那一側——任何一個正的 margin 都會過,移到哪裡判定都不變
原方向的區間上界 -0.0245 整段都在零的左邊,也就是比較好的那一側;而非劣性的 margin 坐在比較差的那一側,所以任何一個正的 margin 都落在區間右邊,每一道都會過,移動它判定也不會變——用那個方向示範「換一個 margin 就換一個結論」,在算術上不可能。0.1312 是轉向後那條區間的上界,兩者大小一樣、符號相反,因為它們是同一件事的兩種說法。0.0272 是差值的標準誤,區間寬度確實由它決定,但問題從來不是區間夠不夠寬,是 margin 落在區間的哪一側。轉向不動資料、不動人群、不動結果定義,只換問句——這一點很重要,因為另一條路(去找一個區間比較寬的亞組)會變成在教事後亞組分析。
四道界值之下,非劣性判定從「劣於參照」走到「非劣」。等效性判定呢?
看答案與解析
正確答案: 只有正負 15 個百分點那一道成立。等效性要整段區間同時落在正負界值之內,是雙尾的,嚴格得多
只有最寬的那一道成立:下界要落在負 15 個百分點之上、上界要落在正 15 個百分點之下,整段才被框住。非劣性只管一邊——實驗組不可以差太多,好太多沒關係——所以它成立的地方等效性未必成立,這就是「非劣性成立等效性一定也成立」錯在哪裡。至於最嚴的那一道,區間完全不含零說的是「這份資料偵測得到差異」,那與「差得夠少」是兩個不同的問題;事實上在最寬的那道界值底下,不給藥同時是非劣、而且統計上比參照差。這兩件事不衝突,因為非劣性問的是差得夠少嗎,不是有沒有差。生體相等性試驗與兩種檢驗方法的比對,問的通常是雙尾的那一個。
腳本同時算了 Wald 與 Newcombe 兩種區間。轉向後 Wald 的上界是 0.1312,Newcombe 的上界是多少,這對判定有什麼影響?(數值是絕對風險差的比例。)
看答案與解析
正確答案: 0.1316。兩者差不到十分之一個百分點,在這個事件數之下選哪一個都不改變任何一道 margin 的判定——但這句話的範圍就到這裡,事件數少很多時兩種區間會分開
0.1316 與 Wald 的 0.1312 差不到十分之一個百分點,所以在這個事件數之下兩種算法給出同樣的判定。但這不是通則:某一組的風險很靠近零或一、或者事件數少很多時,常態近似會失準,兩種區間就會分開——而那時候差的可能剛好就是跨不跨過 margin。非劣性設計特別容易撞到這件事,因為參照治療有效時兩組的風險常常都很低。0.0240 是 Newcombe 的下界不是上界,把下界讀成上界會得出「Newcombe 明顯比較窄」這種相反的結論。至於 -0.0240,那是試驗原方向那條區間的上界,符號相反是因為問句被轉過來了,不是因為換了算法。實務上的規矩是區間算法要事先指定,理由跟 margin 一樣:事後兩種都算、報比較窄的那一個,是在挑結果。
非劣性試驗被要求同時報意向治療與 per-protocol 兩套分析,而這一頁只給得出前者。哪一個說法對?
看答案與解析
正確答案: 意向治療那一套是完整的:307 位分到不預防性給藥、其餘分到 indomethacin,全部都有觀察到的結果;缺的是另一半,因為這份檔案沒有記錄遵從性
307 是分到不預防性給藥那一組的人數,而這份資料的 602 列全部都有觀察到的結果,所以意向治療這一套沒有缺口。缺的是 per-protocol:這份檔案裡只有基線與術式特徵、隨機分派的組別與結果,沒有任何欄位記錄遵從性、是否真的收到試驗用藥、或有沒有計畫書偏離。用 52 這個事件數去重建遵從性是把結果當成暴露,那會直接破壞隨機化,而且沒發生事件與有遵從是兩回事。至於「沒有人失訪所以兩套會一樣」,失訪與不遵從是兩個不同的缺口——一個人可以全程被追蹤到,卻沒有照分派的策略走。產圖腳本因此沒有捏造代理變項,反而斷言這份資料沒有那類欄位:未來套件補上了,腳本會失敗,而不是繼續謊稱缺口還在。
這一頁的四道 margin 各自取自這個試驗自己的設計數字。作者說一道都不能當成「這個問題的合理 margin」。為什麼?
看答案與解析
正確答案: 因為它們是在區間算出來之後才挑的,最寬的那道 15 個百分點還是刻意挑來讓判定翻轉的——margin 必須寫進計畫書並在收案前定案,看過區間再訂等於自己畫靶
問題出在時序,不是數值:這四道都是在區間算出來之後才挑的,而 15 個百分點那道還是刻意挑來讓判定翻轉的。慣例要求 margin 寫進計畫書並在收案前定案,看過區間再訂等於自己畫靶——而事後挑的 margin 跟事先指定的,在論文裡長得一模一樣。說「margin 一律要大於觀察到的差」是把規則反過來:最嚴的那一道之所以不能用,不是因為它太嚴,是因為它是事後挑的,一道嚴格但事先寫下的 margin 完全合法。說「只能取自歷史效果」也太絕對:從參照治療相對於安慰劑的歷史效果推出來是慣例做法,只允許新療法失去舊療法效果的一部分,好確保它至少還勝過不治療,但那一道不合格同樣是因為時序。另外還要檢查恆定性假設,並提防界值漂移——每一代新藥都不劣於上一代,一路傳下去可能已經不劣於一個沒效的東西。
用到這個方法的章節
素材來源與授權
本頁為原創內容