一個字要寫多久,今天我用真資料回答:2026 年 5 月發表的 Xu 等人研究,把 42 位大學生聽寫 1,200 個簡體字(共 50,400 次試驗)的筆跡全部公開在 OSF,我下載後重算。單次試驗(保留 1 到 10 秒、有時間值的 42,565 次)的書寫時間是 264 毫秒加上每畫 199 毫秒,R² 0.42,殘差標準差 674 毫秒;改以 1,200 個字的平均為單位,則是 239 毫秒加上每畫 204 毫秒,R² 0.847。42 個人各自配出的斜率中位數 203、範圍 159 到 258 毫秒/畫,而且斜率與個人平均書寫時間的相關是 0.86:寫得慢的人,整條曲線是按比例放大,而不是只多出一個固定的起手延遲。

另外兩件事今天的對帳要先講。第一,論文 Table 3 的筆畫係數 428.329(毫秒/標準差,換算約每畫 145 毫秒)我重現不出來:同樣 14 個預測變項,我從公開資料算出 584.3(約每畫 197 毫秒),但同一張表「書寫潛伏期」那一欄的 51.338、t = 3.69 我算得分毫不差。第二,「提筆忘字」有數字可看:自述寫不出的比例從 5 到 6 畫的 1.4% 一路升到 17 畫以上的 13.2%,但把字頻與習得年齡控制掉之後,筆畫本身的效果剩下約一半。昨天(手寫字 · 2026-10-13)的玩具模型這次全部不用,每個數字不是論文印的、就是我從公開資料算的,逐項標示。

📖 學

一、今天讀到的與沒讀到的

**讀到、也算過的:**Xu、Yu、Torrance、Nottbusch、Zhao 與 Cai,「A stroke-level large-scale database of Chinese character handwriting and the OpenHandWrite_Toolbox for handwriting research」,《Behavior Research Methods》58 卷 6 期,文章編號 162,2026 年 5 月。論文頁面是 WebFetch 對 PMC 全文的整理(Table 2 與 Table 3 我是逐列請它抄出的,不是我逐行讀的原文);資料是我自己從 OSF 專案(rn2ck,公開)下載的兩份 Excel 檔,其中 SimplifiedAdultDatabase_R1_V2.xlsx 有 42 人 × 1,200 字 = 50,400 列的逐次試驗表(欄位含字、筆畫數、書寫時間、潛伏期、是否忘字)與逐字平均表。論文描述的設計:42 位母語為華語的成人(32 位女性,平均 20.50 歲,範圍 19 到 22 歲,全為右手),用 Wacom Intuos(PTH-651)數位板與感壓筆,取樣 200 Hz,紙格(8 × 5)貼在板上;每次聽到一個字的語音聽寫,寫完後螢幕才顯示正確字讓受試者自評;三場次各 400 字。1,200 個字取自 SUBTLEX-CH,對數字頻在 1.5 到 5.0。「書寫時間」指第一次筆尖著板到最後一個非零壓力點,所以含字中筆畫之間的空中移動;「潛伏期」指語音結束到第一次著板。

**只讀到摘要或沒讀到的:**Lacquaniti、Terzuolo 與 Viviani 1983 原文,今天再搜尋一次,結果仍然只有別人的引用(Springer 與 PubMed 書目),沒有摘要,維持待驗。10-07 墨膜實驗、實測 s 與一長筆 σ、真人的鐘形階數 p,需要真人書寫與拍照,仍然沒做。這篇論文的作者怎麼設計「R1_V2」版與 Table 3 的重新分析,我沒有讀到說明,後文會碰到。

**工具資料:**筆畫數我用 Unicode 的 Unihan 資料庫(下載的版本檔頭寫 Unicode 18.0.0、日期 2026-07-31)的 kTotalStrokes 欄位;第六節要比較繁體常用字,用同一份檔的 kBigFive 欄位取 Big5 第一級字(碼位 A440 到 C67E,這個範圍是我記憶中的定義,沒有核對規格)。

二、先對帳:哪些重現、哪些沒有

用逐字平均表(1,200 列),我先核對論文 Table 2:筆畫數平均 9.72、標準差 2.96、範圍 5 到 21,與資料一致;書寫時間平均 2,222.05 毫秒、標準差 656.29,資料算得同樣的 2,222.05 與 656.29;潛伏期平均,論文 1,031.80,我算 1,031.16(論文對 0.39% 極端潛伏期有修剪,差一點合理)。

接著重做 Table 3。論文的預測變項共 14 個(音旁、聲旁位置、規則性、同音字密度、義項數、意象性、具體性、字頻、習得年齡、筆畫數、部件數、左右結構、上下結構、詞脈絡熟悉度),全部做了 z 轉換。我用同樣 14 個、對逐字平均做普通最小平方:

項目論文 Table 3我從公開資料重算
潛伏期:筆畫數 β51.338(t = 3.69)51.338(t = 3.69)
潛伏期:字頻 β−158.005−158.005
潛伏期:習得年齡 β121.499121.499
潛伏期模型 R².482.488
書寫時間:筆畫數 β428.329(t = 34.83)584.346(t = 62.57)
書寫時間:字頻 β−54.729−62.124
書寫時間:習得年齡 β35.36352.199
書寫時間模型 R².907.874

潛伏期整欄吻合到小數第三位(R² 差 .006,我沒追),書寫時間整欄不吻合。我試了幾種補救:加入筆畫層級的平均潛伏期、部件層級潛伏期、筆畫間距離等共變項,筆畫 β 在 565 到 587 之間,R² 升到 .909 到 .910(這個 R² 接近論文的 .907),但 β 仍不是 428。所以我的結論是:Table 3 的書寫時間欄用了我不知道的模型設定(可能是混合模型,或不同的資料修剪),我不能把 428.329 當成「每畫多花幾毫秒」的依據。如果直接拿它除以筆畫標準差 2.96,會得到每畫 144.7 毫秒,而資料自己算的是每畫 197 到 204 毫秒,差約三成。這一點我只能陳述,原因我沒找到。

另外一個順手的檢查:筆畫數這個預測變項與其他 13 個預測變項的共線性,我算變異數膨脹因子(VIF)是 1.90,論文說所有變項都低於 5,相容。

三、筆畫數與書寫時間:一條直線夠用嗎

逐次試驗表有 50,400 列,其中 6,336 列沒有時間值(12.6%),這個數字和「自評寫錯」的次數 6,335 幾乎重合,所以我推論:寫錯或寫不出的試驗沒有時間,下面所有時間分析都是以「寫對的字」為條件(這是我的推論,論文的處理細節我沒讀到)。再依論文的規則保留書寫時間 1 到 10 秒的試驗,剩 42,565 次(去掉 1,499 次,占有時間值者的 3.40%,論文寫 3.33%)。

資料與模型截距(ms)斜率(ms/畫)R²殘差 SD(ms)
逐字平均,1,200 字,單變項239.0203.9(標準誤 2.5)0.847256.5
逐次試驗,42,565 次,單變項264199.30.416674
逐字平均,14 變項(z 轉換後 584.3 ÷ 2.96)—約 1970.874—

按筆畫數分組的逐次試驗平均(只列樣本數 100 以上的幾組):

筆畫試驗數書寫時間(ms)每畫成本(ms)潛伏期(ms)
51,6431,360272931
85,8621,854232937
105,3282,2402241,110
124,4282,6592221,120
168383,3362091,132
201024,3812191,391

兩個觀察。第一,「平均每畫成本」(書寫時間除以筆畫數)從 5 畫的 272 毫秒降到 16 畫的 209 毫秒,這不是複雜字寫得比較順,而是一個正的截距在發揮作用:時間 ≈ 約 250 毫秒的固定成本 + 每畫約 200 毫秒,固定成本被更多畫攤平。第二,分段斜率沒有明顯的彎曲:逐字平均表中 5 到 8 畫是 181、9 到 12 畫是 208、13 到 16 畫是 157、17 到 21 畫是 250 毫秒/畫(最後一段只有 23 個字,不能當真),二次項係數 1.22(毫秒/畫²)相對於一次項 177.9 很小。我的讀法是:在 5 到 21 畫的範圍內,直線是夠用的近似;論文裡的受試者是 19 到 22 歲的年輕人,超過這個範圍(例如 25 畫以上)我沒有資料。

筆畫並不是書寫的全部。論文的 Table 2 還有筆畫層級的數字:平均筆畫時間 147.93 毫秒,筆畫之間的潛伏期(上一筆離板到下一筆著板)113.11 毫秒。把兩者按 9.72 畫拼回去:9.72 × 147.93 + 8.72 × 113.11 = 2,424 毫秒,比字的平均書寫時間 2,222 高約 9%;這兩組平均的加權方式不同(逐筆畫平均對逐字平均),所以不要期待完全相等,但量級對得上:「一個字的書寫時間」約有六成是筆在紙上、四成是筆在筆畫之間移動。

四、人與人的差別:慢的人是整體放大

對 42 位受試者各自做同樣的直線回歸(每人約 1,000 次試驗):

統計量結果
斜率,中位數203 毫秒/畫
斜率,四分位188 到 212
斜率,最小到最大159 到 258
斜率,標準差22
個人平均書寫時間,最快到最慢1,778 到 2,878 毫秒(最慢是最快的 1.62 倍)
斜率 ÷ 平均書寫時間,每人0.078 到 0.099,中位數 0.093
截距,中位數與範圍201 毫秒,90 到 722
每人單次殘差 SD,中位數與範圍629 毫秒,299 到 876
斜率對平均書寫時間的相關0.86;斜率對截距的相關 0.09

最慢的人比最快的人整體慢 62%,而每個人的「每畫成本相對於整字時間」幾乎是同一個比例(0.078 到 0.099)。解讀是推論:這和 手寫字 · 2026-10-09 談的「整體速度縮放」方向一致,也就是個人速度差大致是時間軸整體的拉伸,而不是某一類動作特別慢;但這份資料沒有做時間縮放的直接檢驗(沒有速度曲線),所以只能說「相容」。截距的範圍(90 到 722)很寬,而且與斜率幾乎不相關,表示每個人用 1,000 次試驗配出的截距不穩,不該單獨解讀。

五、潛伏期與提筆忘字

潛伏期(聽完到下筆)與筆畫的關係很弱:單變項斜率只有每畫 39.4 毫秒,R² 0.058;控制其他變項之後,筆畫的效果是每個標準差 51.3 毫秒(約每畫 17 毫秒),遠不如字頻(每個標準差 −158 毫秒)與習得年齡(+121 毫秒)。也就是:決定你多快「想起來怎麼寫」的主要是這個字你多常見、多早學會,決定寫多久的主要是筆畫數。兩者加起來,一個 9.72 畫的字平均總耗時約 1,031 + 2,222 = 3,253 毫秒,潛伏期占 31.7%。

提筆忘字:資料裡有一欄 Amneisa(論文表中叫 character amnesia),我沒讀到它的定義,但數據上它全是「受試者自評寫不出」的試驗,而且這 2,329 次(占 50,400 次的 4.62%)全都沒有時間值。按筆畫分組的逐次試驗比例:

筆畫試驗數寫不出的比例自評有誤的比例
5 到 67,0561.4%5.3%
7 到 811,9702.9%9.4%
9 到 1012,8524.5%13.1%
11 到 1210,3325.7%15.8%
13 到 144,7047.6%18.8%
15 到 162,5209.3%24.0%
17 到 2196613.2%35.7%

複雜字更容易寫不出,幾乎九倍。但複雜字通常也更少見、更晚才學會,所以我在逐字層級(1,200 個字,各字的忘字率)做了一個簡單迴歸:單變項時每多一畫,忘字率高 0.93 個百分點;同時放進字頻與習得年齡(都 z 轉換)後,筆畫效果降為每畫 0.45 個百分點(t = 6.4),字頻 −2.6、習得年齡 +3.2 個百分點/標準差,R² = 0.394。所以筆畫本身仍有獨立的效果,但約有一半被字頻與習得年齡「分走」。這是相關,沒有實驗操弄;受試者是 19 到 22 歲的簡體字使用者,聽寫是在詞語脈絡中進行(資料裡有如「罢了的罢」的脈絡詞),結果不能直接換成繁體字或成人。

六、換成臺灣常用的繁體字,大約會慢多少

論文的字是簡體、字頻適中、5 到 21 畫,平均 9.72 畫。用 Unihan 的 kTotalStrokes 算 Big5 第一級字(5,402 個碼位,含 1 個額外):平均 12.26 畫(未依字頻加權)、標準差 4.48、中位數 12、範圍 1 到 32,其中 5 到 21 畫占 94.1%(22 畫以上 163 字、4 畫以下 156 字,各約 3%)。第二級字更繁,平均 13.83。如果把上面逐次試驗的直線(264 + 199.3 × 畫數)外推到 12.26 畫:2,707 毫秒,比 9.72 畫的 2,201 毫秒多 23%。這個外推有三個大前提:一,簡繁字形結構不同(繁體字的同畫數可能有更多細小的點畫與部件);二,我的受試者是簡體使用者,臺灣使用者的斜率沒有資料;三,Big5 第一級字是不是等同於「常用字」我是憑記憶,沒查。所以更穩妥的說法是:資料能支持的只是「每畫約 200 毫秒」這個量級,「繁體字慢 23%」是外推,不是發現。

另外我用 Unihan 核對了今天實驗要用的 7 個繁體字的筆畫數:白 5、明 8、時 10、場 12、影 15、職 18、護 21,與我預期一致。

七、自己做實驗要寫多少字才夠

用上面每人的單次殘差標準差中位數 629 毫秒當噪音(這是聽寫、包含單次試驗的所有變動,對你的抄寫測量可能是偏高的估計),7 個字的筆畫數 5、8、10、12、15、18、21(標準差 5.23),斜率的標準誤是 629 ÷ (5.23 × √N):

總字數 N斜率標準誤
14(每字 2 次)32.1 毫秒/畫
28(每字 4 次)22.7
42(每字 6 次)18.6
70(每字 10 次)14.4

42 人之間斜率的標準差是 22 毫秒/畫,所以每字寫 6 次以上(42 字),個人的斜率估計誤差已經和「人與人的差別」同量級。這個計算假設每個字的噪音獨立、同分布,而且直線正確。

若用「連寫一列、計整列時間」的方式(下面的實作),我另做了一個蒙地卡羅(假設真值 a = 0.5 秒、b = 0.20 秒/畫,每列有一個乘性對數常態噪音,是我設定的假設):每列 5 字以上時,秒表誤差 0.2 秒對 0.5 秒對斜率不確定度幾乎沒有影響,不確定度主要來自「列與列之間」的差異;2 輪(14 列)時,列間變異係數 5% 對應斜率標準差 9 到 10 毫秒/畫,10% 對應 18 到 19;只做 1 輪(7 列)則是 13 到 18 與 25 到 26。也就是說,與其每列寫得更長,不如多做一輪。

🧠 記

  • **公開資料重算:**42 人 × 1,200 字聽寫,寫對的字的書寫時間 ≈ 264 + 199 × 畫數(毫秒,單次,R² 0.42);逐字平均 239 + 204 × 畫數,R² 0.847。
  • **Table 3 對帳:**潛伏期欄(筆畫 β 51.338)完全重現;書寫時間欄的筆畫 β 論文 428.329,我算 584.3,不能重現,故不採用論文那欄換算的每畫 145 毫秒。
  • **人與人:**單人斜率 159 到 258 毫秒/畫(中位 203),個人速度與斜率相關 0.86,斜率對整字時間的比 0.078 到 0.099,慢的人是整體放大。
  • **潛伏期與忘字:**潛伏期主要由字頻與習得年齡決定(每標準差 −158、+121 毫秒),筆畫只占約每畫 17 毫秒;寫不出率由 5 到 6 畫的 1.4% 升到 17 畫以上的 13.2%,控制字頻與習得年齡後每畫 0.45 個百分點。
  • **字集差異:**Big5 第一級字平均 12.26 畫,比論文字集 9.72 畫多 2.5 畫;外推多 23% 時間,屬外推。
  • **實驗量:**7 字 × 6 次 = 42 字,斜率標準誤約 19 毫秒/畫。

**邊界:**論文內容是 WebFetch 整理,逐字平均與逐次試驗資料是我自己下載重算;書寫時間以「寫對的字」為條件,可能低估困難字的耗時;Table 3 書寫時間欄不能重現,原因未知;受試者為 19 到 22 歲簡體字使用者,聽寫而非抄寫,數位板貼紙格,不是日常紙筆;「提筆忘字」欄的定義未讀到;Big5 第一級字的碼位範圍與其代表性來自我的記憶;蒙地卡羅的 a、b 與列間噪音是假設,不是實測;Lacquaniti 1983 原文仍未取得;今天沒有任何我自己的書寫資料,下面的實驗腳本只用合成資料測過。

✍️ 實踐

用 30 分鐘量自己的「每畫成本」。需要紙、你平常用的筆、手機(錄影或秒表)、Python 3 與 numpy。

**第一步,準備字表。**用下面 7 個繁體字(筆畫數已用 Unihan 核對):白 5、明 8、時 10、場 12、影 15、職 18、護 21。在紙上畫 7 列、每列 6 個格子(約 2 公分見方),每列開頭標上字。再準備一張同樣的紙做第二輪。兩輪的字序用抽籤打散,不要由少到多寫。

**第二步,計時。**每列連續把同一個字寫 6 遍(抄寫,字就放在旁邊看),用平常寫字的速度,不要刻意快或慢。手機從上方錄影,或用秒表:第一遍筆尖落紙時開始、第六遍寫完離紙時停止,記錄秒數。每列之間休息一下。先寫一列不計的暖身。

第三步,存成 strokes.csv(兩輪共 14 列,每列一行,reps 都是 6):

char,strokes,reps,seconds
白,5,6,9.1
明,8,6,12.4

**第四步,存成 fit_strokes.py 並執行 python3 fit_strokes.py strokes.csv。**輸出直線擬合的截距與斜率、R²、斜率的 bootstrap 區間、每個字的每畫成本,最後一行印出對照值。我用合成資料(每字 0.5 秒 + 每畫 0.20 秒,列間乘性噪音 4%,計時誤差 0.3 秒,2 輪共 14 列)跑過,回收截距 0.599、斜率 0.1901 秒/畫,R² 0.977,斜率區間 172 到 206 毫秒/畫;沒有在真人資料上跑過。

import csv, sys, numpy as np
rows = list(csv.DictReader(open(sys.argv[1], encoding="utf-8")))
S = np.array([float(r["strokes"]) for r in rows]); N = np.array([float(r["reps"]) for r in rows])
T = np.array([float(r["seconds"]) for r in rows]) / N            # 每字秒數(含字與字之間的移動)
def fit(x, y):
    X = np.c_[np.ones_like(x), x]; c = np.linalg.lstsq(X, y, rcond=None)[0]; r = y - X @ c
    return c, 1 - (r**2).sum() / ((y - y.mean())**2).sum(), r
c, R2, res = fit(S, T)
print("列數 %d,筆畫範圍 %d-%d,共 %d 字" % (len(rows), S.min(), S.max(), N.sum()))
print("每字秒數 = %.3f + %.4f * 筆畫   R2 = %.3f   殘差 SD = %.3f s" % (c[0], c[1], R2, res.std(ddof=2)))
print("斜率 %.0f ms/畫;各字平均每畫成本 T/筆畫 = %.0f ms" % (c[1]*1000, 1000*np.mean(T / S)))
rng = np.random.default_rng(0); bs = []
for _ in range(4000):
    i = rng.integers(0, len(S), len(S))
    if len(set(S[i])) > 2: bs.append(fit(S[i], T[i])[0][1] * 1000)
print("斜率 bootstrap 95%% 區間: %.0f 至 %.0f ms/畫" % tuple(np.percentile(bs, [2.5, 97.5])))
print("對照(Xu 等人 42 人,聽寫、數位板、僅計筆接觸到最後一個非零壓力點):單人斜率中位 203、範圍 159-258 ms/畫")
for k in sorted(set(S)):
    m = S == k; print("  %2d 畫: n=%d 列, %.2f s/字, 每畫 %.0f ms" % (k, m.sum(), T[m].mean(), 1000*T[m].mean()/k))

**第五步,對照預測。**預測一:時間隨筆畫數增加,直線 R² 超過 0.9;若低於 0.8,先看是不是有幾列被打斷或字不熟。預測二:你的斜率落在 159 到 258 毫秒/畫內,算與那 42 人一致;注意這份資料是聽寫、只計筆接觸紙面到最後一個非零壓力點,你的抄寫量法含筆畫間移動與字與字之間的移動,截距(每字固定成本)很可能比 250 毫秒大,斜率也可能略有不同,所以超出這個範圍不代表你與眾不同,只代表量法不同。預測三:「每畫成本」(每字秒數 ÷ 筆畫數)隨筆畫增加而下降(5 畫最大、21 畫最小),因為截距為正;資料裡是 272 降到約 210 毫秒。預測四:你的斜率除以你的平均每字秒數,若個人速度差確實是整體放大,應落在 0.08 到 0.10 附近,但抄寫的每字秒數含字間移動,所以會偏小一點,不要當成嚴格檢驗。

**第六步,品質檢查。**斜率的 bootstrap 區間若寬過 60 毫秒/畫,就多做一輪;計時用錄影回放比秒表穩,但每列 6 字時秒表誤差影響已經很小(上一節的模擬)。字形用你平常寫的連筆程度,如果有些字你習慣連筆而不是逐畫,那個字的「每畫成本」會偏低,筆畫數不再代表你實際的下筆次數,這時斜率不再有清楚的意義。這個實驗只有一個人、一種筆、7 個字,結論只適用於你當天的書寫方式。

🔗 延伸學習


💬 問 AI

我用 Xu 等人 2026(Behavior Research Methods 58(6):162)公開在 OSF 的 42 人 × 1,200 簡體字聽寫資料,重算筆畫數與書寫時間的關係。請逐項回答,並嚴格區分三類:(一)原文明確寫了的、(二)你能查證或憑訓練資料確定的、(三)純屬推論的,每項標明把握程度(高/中/低);查不到或不確定就直說,不要編造文獻、數字或公式。這是學習與實驗設計。
 
【A 組:對帳】
1. 我用同樣 14 個 z 轉換的預測變項、對逐字平均做普通最小平方,潛伏期欄完全重現(筆畫 β 51.338、t = 3.69),但書寫時間欄的筆畫 β 我算 584.3(t = 62.57、R² 0.874),論文 Table 3 是 428.329(t = 34.83、R² .907)。可能的原因有哪些(混合模型、不同修剪、不同依變項)?我該如何判斷哪一個?
2. 論文 Table 2 的筆畫平均時間 147.93 毫秒、筆畫間潛伏期 113.11 毫秒,按 9.72 畫拼回去得 2,424 毫秒,比字的平均書寫時間 2,222 毫秒高 9%。這個差距合理嗎?筆畫層級與字層級的平均如何加權?
 
【B 組:模型】
3. 我配出逐次試驗時間 ≈ 264 + 199 × 畫數(毫秒,R² 0.42)、42 人斜率中位 203(範圍 159 到 258)、斜率與個人平均時間相關 0.86。這是否支持「個人速度差是整體時間縮放」?要用什麼資料(例如速度曲線)才能檢驗?
4. 寫錯或寫不出的試驗沒有時間值(6,336 次,12.6%),我的時間分析因此以寫對的字為條件。這會使複雜字的斜率偏低還是偏高?有什麼標準的處理方式?
 
【C 組:提筆忘字與外推】
5. 寫不出的比例從 5 到 6 畫的 1.4% 升到 17 畫以上的 13.2%;控制字頻與習得年齡後,每畫 0.45 個百分點(t = 6.4,R² 0.394)。這個分析有什麼方法學漏洞(逐字比例的迴歸、共線性、天花板)?文獻中提筆忘字(character amnesia)有哪些已知的因素?
6. 我把簡體字的直線外推到 Big5 第一級字(平均 12.26 畫),得到慢 23%。繁體字的書寫時間研究有沒有更直接的資料(臺灣受試者、紙筆)?
 
【D 組】
7. 把所有存疑項目分成三堆:(一)憑訓練資料就能判斷的、(二)必須查一手文獻的(請列出先查哪幾篇,Lacquaniti、Terzuolo 與 Viviani 1983 的原始摘要是否包括在內)、(三)必須用實際書寫資料才能回答的(例如我自己的 7 字 × 6 次抄寫實驗)。