昨天(手寫字 · 2026-10-14)把 42 人聽寫資料壓成一條直線:時間約 264 毫秒加每畫 199 毫秒。今天回頭檢查這條線有沒有隨時間漂移,結果有:同一批 42 人,第一場(400 字)到第三場(400 字),書寫時間下降約 8%(42 人各自平均後再平均,2,294 到 2,099 毫秒;逐人第三場對第一場的比值平均 0.919);換算成「只和筆畫數相同的字比」的比值,第三場比第一場快 6.0%(42 人 bootstrap 95% 區間 −8.6% 到 −3.3%),42 人中 33 人變快;「聽完到下筆」的潛伏期降幅更大,1,238 到 887 毫秒(−28%),39 人變快。截距沒有動(272、277、275 毫秒),動的是斜率:每畫 206、197、191 毫秒。

這個結果有兩層但書要先講。第一,論文方法段寫明三場之間的間隔「由受試者自己選,從 2 小時到 4 天」,所以場次之間不是同一個下午連續累出來的疲勞,更像是第一場含熟悉板子與筆的暖身;但我查不到論文有沒有記錄每個人實際的場次順序,資料檔的場次是依字表(編號 1001 到 1400、2001 到 2400、3001 到 3400)劃分的,所以「第三場」嚴格說是「第三批字」,我沒辦法證明它一定是第三個被寫的。第二,方法段沒有提到練習試作、疲勞或場次效應的任何分析,以下全是我自己從公開檔算的。

📖 學

一、資料與算法

資料同昨天:Xu 等人 2026,《Behavior Research Methods》58 卷 6 期 162 號,OSF 專案 rn2ck 的 db2.xlsx(逐次試驗表 50,400 列,逐字平均表 1,200 列)。昨天用過的規則照用:保留書寫時間 1 到 10 秒的寫對試驗,42,565 次,三場分別 14,255、14,169、14,141 次。

檔案裡每位受試者的列序一模一樣(第 1 列都是字編號 1001),所以它是依字表排序的,不一定是實際呈現順序;這意味著「場內第幾題」的效應我只能當弱證據看,而「場次」的比較則被字表本身的差異攪在一起。我用兩個辦法處理字表差異:一是依筆畫數,每次試驗除以全體資料的筆畫直線預期值再取每人每場平均;二是在逐字層級用論文那 14 個預測變項建模,看殘差。兩場字表的可量化差距很小:平均筆畫 9.85、9.72、9.60,字頻 3.39、3.44、3.48,習得年齡 8.68、8.38、8.44,熟悉度 0.32、0.35、0.32。

二、場次效應有多大

量第一場第二場第三場第三場對第一場
平均書寫時間(ms,試驗層級)2,3022,1952,108−8.4%
每人平均書寫時間再平均(ms)2,2942,1862,099−8.5%(逐人比值平均 −8.1%)
對筆畫預期值的比(42 人平均)1.0310.9940.964−6.5%(逐人比值平均 −6.0%)
平均潛伏期(ms)1,235995888−28%
書寫時間加潛伏期(ms)3,5373,1902,996−15.3%
單變項直線:截距(ms)272277275持平
單變項直線:每畫斜率(ms)206.4197.2190.8−7.6%
平均壓力(感測器單位)12,36012,67112,680+2.6%
寫不出的比例4.9%4.5%4.5%略降

以人為單位時,42 人各自「第三場比第一場」的變化中位數是 −6.8%,配對 t 值 −4.40,最大進步者 −24.8%,最大退步者 +15.9%。人均書寫時間較慢的人是否進步更多?相關只有 −0.10,看不出。

斜率的下降我另外用每個人自己的兩條直線(第一場、第三場)相減檢驗:平均差 −16.6 毫秒/畫、標準誤 3.4(t = −4.91),33 人為負;截距差 +11.6、標準誤 27.8,不顯著。這個 −16.6 毫秒/畫值得和昨天的人與人差異對照:42 人的斜率標準差是 22 毫秒/畫,而同一個人的斜率從第一場到第三場平均就掉了 16.6。所以昨天「斜率中位數 203、範圍 159 到 258」混著場次效應,個人的斜率不是固定屬性。

用逐字層級的 14 變項模型看殘差,同樣的方向:第一場的字比模型預測慢 66 毫秒、第二場 −3、第三場 −63;每場 400 個字,殘差標準差約 230 毫秒,所以每場平均的誤差約 230 ÷ √400 = 11.5 毫秒,第一與第三場的 130 毫秒差距約是 8 個標準誤。這排除了「恰好字表不同的可量化屬性」,但排除不了我沒量到的字表差異。

三、場內有沒有疲勞

把場次當固定效應、放進「場內第幾題」:書寫時間每 100 題 +1.8 毫秒(t = 0.31),潛伏期 −0.03 毫秒(t ≈ 0),壓力 +3.2、寫不出率 −0.1 個百分點(t = −0.59),全部沒有趨勢。也就是說,資料裡看到的是場與場之間的台階,不是場內逐漸變慢。若資料的列序確實等於呈現順序,這代表一場 400 字(以每字書寫加潛伏期約 3.2 秒算,約 21 分鐘,是我的算式)看不到變慢;若列序只是字表序,這個檢驗就沒有意義。我沒辦法確認是哪一種。

四、文獻怎麼說:疲勞的訊號是「變快變糙、力道加大」

這方面我讀到三項研究的摘要(全文因站方回傳 403 或 cookie 頁,沒有取得,所以只有摘要層級):

Kushki、Schwellnus、Ilyas 與 Chau,《Research in Developmental Disabilities》32 卷 1058–1064 頁,2011 年:四年級兒童(摘要寫的是「大型世代」,人數我沒讀到)寫 10 分鐘,「水平筆畫速度、握力、對紙面的法向力都隨時間上升,垂直筆畫速度下降,所有孩子皆然」,作者推測是身體與心理疲勞及動作系統的補償。

Schwellnus 等人,《Australian Occupational Therapy Journal》59 卷 180–187 頁,2012 年:120 位四年級學生在 10 分鐘抄寫前後做標準化書寫評量,結果是任務之後「字跡清晰度下降、速度上升」,而四種握筆姿勢之間在清晰度與速度上都沒有顯著差異,作者因此質疑只教動態三指握法的必要。

Parush 等人,《Work》11 卷 307–313 頁,1998 年:157 位三年級學童連續寫 10 分鐘前後,以希伯來文書寫評量工具評分,書寫差與書寫好的孩子在長文書寫後都變差,建議在課堂書寫中安排休息。

這三者合起來給的畫面,和上面資料的不一樣:疲勞研究看到的是「寫久了速度反而上升、字形變糙、力量加大」(速度與品質的取捨),我的資料看到的是「寫久了變快,而且錯誤率沒有升」(寫不出率 4.9% 到 4.5%)。兩者不矛盾,因為成人聽寫的是單字、有自我檢查,受試者 19 到 22 歲,任務與兒童 10 分鐘抄寫差很多,但也代表我不能把這份資料當成「疲勞」的證據:它更像練習或熟悉的效果。我沒有清晰度的量測,所以無法判斷第三場是不是也變糙。

五、一場短測驗測得到幾%?

用兩邊都扣掉的雙向殘差(扣掉人的平均與字的平均)估計單次試驗的隨機變動:對數書寫時間的殘差標準差 0.193,約是 19%(毫秒尺度 575 毫秒)。這包含人與字的交互作用與試驗噪音,是聽寫新字的量;若是重複抄寫同一個字,噪音很可能較小,這一點我沒有資料。

偵測「前後相差 δ」、兩邊用同樣的字、檢定力 80%、雙尾 5%,每邊要寫的字數 n = 2 × (2.8 × 0.193 ÷ δ)²:

要偵測的變化 δ每邊需要的字數
8%91
5%233
3%648

一個前後各寫 30 秒、約 12 字的小測驗,能偵測的最小變化是 2.8 × 0.193 × √(2 ÷ 12) ≈ 22%;換句話說,用它去看一個幾%的練習或疲勞效應是沒有解析度的。要看幾%的漂移,要靠整段連續記錄每一列的時間,而不是前後各測一次。

六、這對昨天的實驗有什麼影響

昨天的實驗是 7 個字、每字寫 6 遍、做 2 輪共 14 列。若輪與輪之間有類似的台階(我假設每輪 −3.6%,取資料第一到第二場的降幅),我用真斜率 0.20 秒/畫、截距 0.5 秒的玩具算式比較幾種排法(下面都是我的模擬,不是實測):

排法估出的斜率相對真值
兩輪都寫全部 7 個字(順序隨機)−1.8%(只是兩輪斜率的平均)
第一輪只寫短字(5、8、10 畫)、第二輪寫長字−6.3%
單輪由少畫到多畫,整輪線性變快 3.6%−5.4%
同上,整輪變快 8.1%−12.1%
同上,但由多畫到少畫+4.0%(方向相反)

結論是設計規則,而不是新發現:每輪必須包含同樣的 7 個字、順序隨機,台階才會抵消而不是變成斜率的偏差;依筆畫數由少到多排,漂移會被算進斜率。把「輪次」與「實際書寫順序」兩欄加進資料,漂移就變成可估的係數而不是隱形偏差。

🧠 記

  • **場次效應:**42 人 × 3 場(每場 400 字,場間隔 2 小時到 4 天,論文明說),書寫時間第一場 2,294 毫秒到第三場 2,099 毫秒(−8.1%),對筆畫預期的比 −6.0%(區間 −8.6% 到 −3.3%),33 人變快;潛伏期 1,238 到 887 毫秒(−28%)。
  • **變的是斜率不是截距:**每畫 206、197、191 毫秒(個人配對差 −16.6 ± 3.4),截距 272、277、275 毫秒不動;這個 −16.6 與 42 人斜率標準差 22 同量級,所以斜率不是個人固定屬性。
  • **沒有場內疲勞的跡象:**場內第幾題對書寫時間、潛伏期、壓力、寫不出率都沒趨勢;但列序可能只是字表序。
  • **疲勞文獻方向:**10 分鐘書寫後速度上升、字形變糙、力道加大(Kushki 2011、Schwellnus 2012、Parush 1998 皆為兒童,摘要層級)。
  • **解析度:**單次試驗對數殘差 19%,偵測 5% 的前後變化每邊要 233 字,30 秒短測驗只測得到約 22% 的變化。
  • **排法:**每輪同字、隨機順序;由少畫排到多畫會把漂移灌進斜率(整輪變快 8.1% 時 −12.1%)。

**邊界:**場次是依字表劃分,沒有每人實際的場次順序,「第三場」可能含字表差異,故這是「相容於練習/暖身」而不是「證明練習」;場內檢驗只在列序等於呈現順序時有意義;壓力單位與 char_len 單位我沒讀到定義;三篇疲勞文獻只讀摘要,受試者是兒童,兒童的疲勞徵象不能直接搬到成人;對數殘差 19% 是聽寫新字的估計,抄寫同字的噪音沒有資料;第六節的 −3.6%、真斜率 0.20 與截距 0.5 秒是我設的模擬參數;Lacquaniti、Terzuolo 與 Viviani 1983 原文今天沒有再試,仍未取得;昨天的 7 字抄寫實驗與 10-07 墨膜實驗還是沒有真人資料。

✍️ 實踐

用 30 分鐘做昨天的實驗,並加「輪次」與「順序」兩欄,多做一輪。需要紙、平常用的筆、秒表或手機、Python 3 與 numpy。

**第一步,字表與紙。**同昨天:白 5、明 8、時 10、場 12、影 15、職 18、護 21(筆畫數昨天已用 Unihan 核對)。畫 3 張紙,每張 7 列、每列 6 格。每一輪的 7 個字都要寫全,每輪的順序用抽籤重排,不可由少畫排到多畫。

**第二步,計時。**每列把同一字連寫 6 遍(字放旁邊看著抄),從第一遍落筆到第六遍離紙計一次秒數。三輪之間休息約 5 分鐘。先寫一列不計的暖身。依實際書寫的先後記下「輪次」(1、2、3)與「列序」(1 到 21)。

第三步,存成 strokes3.csv(三輪共 21 列,reps 都是 6):

char,strokes,reps,seconds,round,row
職,18,6,23.0,1,1
護,21,6,26.7,1,2

**第四步,存成 fit2.py 並執行 python3 fit2.py strokes3.csv。**我用合成資料(每字 0.55 秒 + 每畫 0.19 秒,每輪再快 3.6%,三輪)測過,回收斜率 179 毫秒/畫、每輪 −4.0%,加輪次項後殘差標準差由 0.118 降到 0.062 秒;沒有在真人資料上跑過。

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          # 每字秒數
R = np.array([float(r["round"]) for r in rows])                 # 第幾輪(1、2、3…)
K = np.array([float(r["row"]) for r in rows])                   # 實際書寫順序(1 到總列數)
def fit(X, y):
    X = np.c_[np.ones(len(y)), X]; c = np.linalg.lstsq(X, y, rcond=None)[0]; r = y - X @ c
    return c, r
c0, r0 = fit(S, T)
c1, r1 = fit(np.c_[S, R], T)
c2, r2 = fit(np.c_[S, K], T)
print("無校正:   斜率 %.0f ms/畫, 殘差 SD %.3f s" % (c0[1]*1000, r0.std(ddof=2)))
print("加輪次項: 斜率 %.0f ms/畫, 每多一輪 %+.3f s/字 (%+.1f%%), 殘差 SD %.3f s" % (c1[1]*1000, c1[2], 100*c1[2]/T[R == R.min()].mean(), r1.std(ddof=3)))
print("加順序項: 斜率 %.0f ms/畫, 每多一列 %+.4f s/字, 殘差 SD %.3f s" % (c2[1]*1000, c2[2], r2.std(ddof=3)))
rho = np.corrcoef(S, K)[0, 1]
print("筆畫數與書寫順序的相關 %.2f(接近 0 才安全;超過 0.3 表示順序和字長糾纏)" % rho)

**第五步,對照預測。**預測一:每輪變化為負(越寫越快),量級在 0 到 −4% 之間;資料是聽寫、兩場間 −3.6% 左右,抄寫與你自己的筆未必一樣,所以出現正值(越寫越慢)也不奇怪,那就更接近疲勞文獻的方向。預測二:兩輪的話,輪次係數的標準誤約 0.14 × √(4 ÷ 14) ≈ 0.075 秒,約 2.6%,看不出 3.6% 的台階;三輪的線性趨勢標準誤約 0.14 ÷ √14 ≈ 0.037 秒/輪,約 1.3%,才勉強看得見(0.14 秒是我模擬用的殘差標準差,你的實際殘差要看輸出)。預測三:加輪次項前後,斜率改變應小於 5%;若改變很大,表示你的排法讓字長和順序糾纏,先看第四行輸出的相關。預測四:可以另外記錄每輪結束時主觀的手酸程度(0 到 10)與字形工整度,對照 Schwellnus 2012 的方向,看是否「變快的同時字變糙」;這部分不計入上面的擬合。

**第六步,品質檢查。**輪次與列序兩個係數不要同時放進同一個模型(21 列放兩個趨勢會互相吃掉)。若某一列被打斷或寫錯,整列重寫並註記,不要剔除後留下空洞。連筆的字(逐畫變連寫)會使筆畫數失去意義。結論只適用於你自己、當天、這支筆。

🔗 延伸學習


💬 問 AI

我用 Xu 等人 2026(Behavior Research Methods 58(6):162)公開在 OSF 的 42 人 × 1,200 簡體字聽寫資料,檢查書寫時間在三場(每場 400 字,場間隔 2 小時到 4 天)之間的變化。請逐項回答,並嚴格區分三類:(一)原文或文獻明確寫了的、(二)你能查證或憑訓練資料確定的、(三)純屬推論的,每項標明把握程度(高/中/低);查不到或不確定就直說,不要編造文獻、數字或連結。這是學習與實驗設計。
 
【A 組:我算到的】
1. 第一到第三場,42 人平均書寫時間 2,294 到 2,099 毫秒(−8.1%),對筆畫預期的比 −6.0%(bootstrap 區間 −8.6% 到 −3.3%,33 人變快),潛伏期 −28%;截距不變(272、277、275 毫秒),每畫斜率 206 到 191。資料檔的場次是依字表編號(1001–1400、2001–2400、3001–3400)劃分,每位受試者的列序相同。這可能是練習/暖身,也可能是字表差異。要用什麼分析或哪些補充資料(例如每位受試者實際場次順序、時間戳)才能區分?
2. 場內(場次當固定效應後)的題序對書寫時間、潛伏期、壓力、寫不出率都沒有趨勢。若檔案的列序其實是字表序而不是呈現順序,這個檢驗還有什麼意義?
 
【B 組:文獻】
3. Kushki 等 2011(10 分鐘書寫,水平速度、握力、法向力上升)與 Schwellnus 等 2012(10 分鐘抄寫後速度上升、清晰度下降)都是兒童。成人、中文字、硬筆有沒有類似的疲勞研究?請只列你確定存在的,並說明是否讀過全文。
4. 我的資料看到「變快且寫不出率沒升」,疲勞研究看到「變快且字形變糙」。如何分辨「熟悉/練習」與「速度–品質取捨」?需要量什麼?
 
【C 組:實驗設計】
5. 我計畫抄寫 7 個字(5、8、10、12、15、18、21 畫)各 6 遍,做 3 輪,每輪順序隨機,擬合「每字秒數 = a + b × 筆畫數 + c × 輪次」。若假設單列殘差標準差 0.14 秒,輪次趨勢標準誤約 1.3%(0.037 秒/輪)。這樣的算法對嗎?還有什麼隱含假設(線性趨勢、殘差獨立)可能出問題?
6. 把所有存疑項目分成三堆:(一)憑訓練資料就能判斷的、(二)必須查一手文獻的(Lacquaniti、Terzuolo 與 Viviani 1983 的原始摘要是否包括在內)、(三)必須用實際書寫資料才能回答的。