問題
１．厚さ 100 nmの a-SiO2 の単位面積当たり静電容量 COX を求めよ。
a-SiO2 の 比誘電率は εr = 11.9 とする。
２．TransferCurve.csvのデータから、飽和移動度を求めよ
電極幅 W = 300 μm, L = 50 μm とする。
飽和移動度を求める際の Vg、Vd は各自で選ぶこと。
その値を選んだ理由も説明せよ。

最尤推定法尤度関数とは：事象 (𝑥𝑥𝑘𝑘 ) が起こる確率を、既知のパラメータ (𝑎𝑎𝑘𝑘 )の確率密度関数
1exp
2𝜋𝜋𝜎𝜎𝑖𝑖

𝑃𝑃 𝑋𝑋 = 𝑥𝑥𝑖𝑖 𝑎𝑎𝑘𝑘 = ∏𝑖𝑖𝜀𝜀− 𝑖𝑖

ak 22𝜎𝜎𝑖𝑖 2などとすると、逆に 𝑋𝑋 = (𝑥𝑥𝑖𝑖 ) がわかっているとし、

12𝜋𝜋𝜎𝜎𝑖𝑖= ∏𝑖𝑖𝜀𝜀� exp − ∑𝑖𝑖 𝑖𝑖

パラメータ (𝑎𝑎𝑘𝑘 ) がどれだけ尤もらしいか (尤度) を表す確率密度関数とみなし、上記の確率密度関数を変数 (𝑎𝑎𝑘𝑘 ) の関数として尤度関数 𝑃𝑃 𝑎𝑎𝑖𝑖 = 𝑃𝑃(𝑥𝑥𝑖𝑖 |𝑎𝑎𝑖𝑖 ) という。

ak 22𝜎𝜎𝑖𝑖 2

最尤推定法
誤差 εi = f(xi, ai) – yi が分散 σi の正規分布に従うとする。データ(xi, yi)に対するパラメータ (ai) の尤度関数は𝑷𝑷(𝒂𝒂𝒊𝒊 ) = ∏𝒊𝒊

𝟏𝟏𝟐𝟐𝝅𝝅𝝈𝝈𝒊𝒊

� 𝐞𝐞𝐞𝐞𝐞𝐞𝜺𝜺𝒊𝒊 𝟐𝟐− ∑𝒊𝒊 𝟐𝟐𝟐𝟐𝝈𝝈𝒊𝒊

尤度を最大化するパラメータを求めるのが「最尤推定法」。
𝒎𝒎𝒎𝒎𝒎𝒎 𝑷𝑷 𝒂𝒂𝒊𝒊 = 𝒎𝒎𝒎𝒎𝒎𝒎 𝐥𝐥𝐥𝐥 𝑷𝑷 𝒂𝒂𝒊𝒊 = 𝒎𝒎𝒎𝒎𝒎𝒎 ∑𝒊𝒊

𝜺𝜺𝒊𝒊 𝟐𝟐𝝈𝝈𝒊𝒊 𝟐𝟐: 最小二乗法に一致する

フィッティング範囲の妥当性

TFTiv_errorcheck.py

フィッティング範囲 2.0 ~ 10.0V
高 Vgs では Vds < Vp = Vgs – Vth となり、直線から外れる最小二乗に入れてはいけない

もっと低い Vgs 範囲でフィッティングする方が良い直線になりそう線形最小二乗法 y = a + bx の誤差
酒井英行訳、M.C.Barford著、実験精度と誤差、丸善
𝑓𝑓 𝑥𝑥𝑖𝑖 = 𝑎𝑎 + 𝑏𝑏𝑥𝑥𝑖𝑖
𝜀𝜀𝑖𝑖 = 𝑓𝑓 𝑥𝑥𝑖𝑖 − 𝑎𝑎 + 𝑏𝑏𝑥𝑥𝑖𝑖
目的関数 𝑆𝑆 = ∑ 𝜀𝜀𝑖𝑖 2 を最小化
𝑠𝑠𝑦𝑦
𝑛𝑛 𝑠𝑠𝑥𝑥 𝑎𝑎2∑∑∑=
𝑠𝑠=𝑥𝑥,
𝑠𝑠=𝑦𝑦,
𝑠𝑠=𝑥𝑥, 𝑠𝑠𝑥𝑥𝑦𝑦 = ∑ 𝑥𝑥𝑖𝑖 𝑦𝑦𝑖𝑖
𝑥𝑥
𝑖𝑖
𝑦𝑦𝑖𝑖
𝑥𝑥𝑥𝑥
𝑖𝑖
𝑠𝑠𝑥𝑥𝑦𝑦𝑠𝑠𝑥𝑥 𝑠𝑠𝑥𝑥𝑥𝑥 𝑏𝑏
𝐴𝐴 は𝐴𝐴の平均−𝑠𝑠𝑥𝑥 𝑠𝑠𝑦𝑦𝑎𝑎
1 𝑠𝑠𝑥𝑥𝑥𝑥
22∑= −𝑠𝑠∆=𝑛𝑛𝑠𝑠−
𝑠𝑠=
𝑛𝑛𝑥𝑥−𝑥𝑥𝑥𝑥𝑥𝑥
𝑥𝑥
𝑖𝑖
𝑠𝑠𝑥𝑥𝑥𝑥𝑛𝑛∆𝑏𝑏𝑥𝑥𝑏𝑏 =𝑛𝑛𝑠𝑠𝑥𝑥𝑥𝑥 −𝑠𝑠𝑥𝑥 𝑠𝑠𝑦𝑦
∆𝜎𝜎𝑦𝑦 2 = 𝑦𝑦 2 − 𝑦𝑦 2 −標準誤差： 𝑺𝑺𝒂𝒂 ==𝑥𝑥𝑥𝑥 − 𝑥𝑥 𝑦𝑦 21=𝑛𝑛2𝑥𝑥 2 − 𝑥𝑥 2𝝈𝝈𝒚𝒚

𝒏𝒏−𝟐𝟐∑ 𝑥𝑥𝑖𝑖 − 𝑥𝑥 𝑦𝑦𝑖𝑖 − 𝑦𝑦
∑ 𝑥𝑥𝑖𝑖 − 𝑥𝑥 2𝒙𝒙𝟐𝟐

𝒙𝒙𝟐𝟐 − 𝒙𝒙 𝟐𝟐

相関係数: 𝒓𝒓 = 𝒔𝒔𝒙𝒙𝒙𝒙 / 𝒔𝒔𝒙𝒙𝒙𝒙 𝒔𝒔𝒚𝒚𝒚𝒚

𝑎𝑎 =𝑠𝑠𝑥𝑥𝑥𝑥 𝑠𝑠𝑦𝑦 −𝑠𝑠𝑥𝑥 𝑠𝑠𝑥𝑥𝑥𝑥∆𝑛𝑛𝑠𝑠𝑦𝑦𝑦𝑦 − 𝑠𝑠𝑦𝑦 2 −𝑺𝑺𝒃𝒃 == 𝑦𝑦 − 𝑏𝑏 𝑥𝑥

𝑛𝑛𝑠𝑠𝑥𝑥𝑦𝑦 −𝑠𝑠𝑥𝑥 𝑠𝑠𝑦𝑦
𝑛𝑛𝑠𝑠𝑥𝑥𝑥𝑥 −𝑠𝑠𝑥𝑥 2𝒏𝒏−𝟐𝟐𝝈𝝈𝒚𝒚

2𝒙𝒙𝟐𝟐 − 𝒙𝒙 𝟐𝟐

誤差の計算誤差の伝播則
変数 𝑎𝑎, 𝑏𝑏 の標準誤差𝜎𝜎𝑎𝑎 , 𝜎𝜎𝑏𝑏 が既知の場合、𝑓𝑓 𝑎𝑎, 𝑏𝑏 の誤差は
𝜕𝜕𝑓𝑓
𝜕𝜕𝑓𝑓
δ𝑓𝑓 𝑎𝑎, 𝑏𝑏 =𝛿𝛿𝑎𝑎 +
𝛿𝛿𝑏𝑏
𝜕𝜕𝑎𝑎 𝑏𝑏𝜕𝜕𝑏𝑏 𝑎𝑎δ𝑎𝑎, δ𝑏𝑏 が正規分布に従う場合、δ𝑓𝑓 𝑎𝑎, 𝑏𝑏 の標準偏差 𝜎𝜎𝑓𝑓 は𝜎𝜎𝑓𝑓 =𝜕𝜕𝑓𝑓
𝜎𝜎𝜕𝜕𝑎𝑎 𝑏𝑏 𝑎𝑎

2+

𝜕𝜕𝑓𝑓
𝜎𝜎
𝜕𝜕𝑏𝑏 𝑎𝑎 𝑏𝑏2

最小自乗法で y = a + bx の標準誤差 𝜎𝜎𝑎𝑎 , 𝜎𝜎𝑏𝑏 が得られたら ・・・・ 𝑉𝑉𝑡𝑡𝑡 𝑎𝑎, 𝑏𝑏 = −𝑎𝑎/𝑏𝑏
δ𝑉𝑉δ 𝑉𝑉𝑡𝑡𝑡 = −δ𝑎𝑎/𝑏𝑏 + 𝑎𝑎δ𝑏𝑏/𝑏𝑏 2
δlog 𝑉𝑉𝑡𝑡𝑡 = 𝑡𝑡𝑡 = δ𝑎𝑎/𝑎𝑎 − δ𝑏𝑏/𝑏𝑏
𝝈𝝈𝑽𝑽𝑽𝑽𝑽𝑽 =𝟏𝟏𝒃𝒃・ 𝜇𝜇 𝑎𝑎, 𝑏𝑏 = 𝑏𝑏 2 /𝛿𝛿 log 𝜇𝜇 =𝝈𝝈𝒂𝒂

𝟐𝟐𝐶𝐶𝑜𝑜𝑜𝑜2𝐿𝐿+𝒂𝒂𝒃𝒃𝟐𝟐𝝈𝝈𝒃𝒃𝟐𝟐𝛿𝛿𝛿𝛿= 𝛿𝛿 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 + 2 ln 𝑏𝑏𝜇𝜇𝝈𝝈𝝁𝝁 = 𝟐𝟐𝝁𝝁𝝈𝝈𝒃𝒃 /𝒃𝒃

𝝈𝝈𝑽𝑽𝑽𝑽𝑽𝑽 = 𝑽𝑽𝒕𝒕𝒕𝒕=2𝛿𝛿𝑏𝑏𝑏𝑏

𝑉𝑉𝑡𝑡𝑡

𝟏𝟏𝒂𝒂

𝝈𝝈𝒂𝒂

𝟐𝟐+𝟏𝟏𝒃𝒃𝝈𝝈𝒃𝒃

𝟐𝟐

最小二乗法の誤差と相関係数
TFTiv_errorcheck.py• フィッティング範囲を広げると相関係数は 1.0 に近づく
x範囲が広いと相関係数は大きくなりやすい。
必ずしも良い直線範囲の指標にはなっていない• 誤差𝜺𝜺𝒊𝒊 の標準偏差 𝝈𝝈𝜺𝜺𝒊𝒊 は Vgs > 16V で明確に大きくなる:
Vgs > 16 Vのデータを入れてはいけない• 移動度、Vth は14 Vまでのデータを入れると最大値をとる
意味はない。フィッティング範囲の妥当性の検証が重要• 標準誤差 は 1σ で表示していることに注意。
3σ を見込むのが普通TFTiv_errorcheck.py

プログラム (抜粋)

# 誤差、相関係数計算付き 一次多項式線形最小二乗
def lsq1(x, y, iPrint = 0):n = len(x)# 統計量の計算# si: 変数 i の和avi: i の平均# sij: 変数 i と j の積の和 sij: i*jの平均
sx = sum(x)avx = sx / n
sy = sum(y)avy = sy / n
sxx = sum([x[i] * x[i] for i in range(n)])
avxx = sxx /n
sxy = sum([x[i] * y[i] for i in range(n)])
avxy = sxy /nsyy = sum([y[i] * y[i] for i in range(n)])
avyy = syy /ndelta = n * sxx - sx * sx
# y = a + bx
b = (n * sxy - sx * sy) / deltaa = avy - b * avx# 残差の二乗和 ∑εi2、誤差の標準偏差 σ(εi)
sum_ei2 = sum([pow(y[i] - a - b * x[i], 2) for i in range(n)])
sigma_ei = sqrt(sum_ei2 / (n - 1))
sigma_y2 = avyy - avy * avy - pow(avxy - avx * avy, 2) / (avxx avx * avx)
sigma_y = sqrt(sigma_y2)# パラメータ a, b の標準誤差と相関係数
Sa = sigma_y * sqrt(avxx) / sqrt((n - 2) * (avxx - avx * avx))
Sb = sigma_y / sqrt((n - 2) * (avxx - avx * avx))
r = sxy / sqrt(sxx * syy)

# 戻り値が多いので、統計量、標準誤差、相関係数は# 辞書変数 (ハッシュ、連想配列) で返す# 辞書変数の値は、{key:val}
res = {'sx': sx, 'sy': sy, 'sxx': sxx, 'sxy': sxy, 'syy': syy,'Sa': Sa, 'Sb': Sb, 'r': r, 'sigma_ei': sigma_ei, 'residual': sum_ei2}
return a, b, res
def main():# 最小二乗を実行
ai = lsq1(xfit, yfit, 0)# 辞書変数は ai[2] に入る
res = ai[2]# a, b の標準誤差、相関係数# 辞書変数の要素 は 変数名[key]で受け取る
Sa = res['Sa']
Sb = res['Sb']r = res['r']Vth = -ai[0] / ai[1]grad = ai[1]mu = grad * grad / (W * Cox / 2.0 / L)
# 誤差伝播則からVth と μ の標準誤差を計算
SVth = sqrt(pow(Sa / ai[1], 2) + pow(Sb * ai[0] / ai[1] / ai[1], 2))
Smu = 2.0 * mu * Sb / ai[1]# エラーバー付きグラフのプロット
ax4.errorbar(xecheck, ymu, yerr = ySmu,
capsize = 3.0, fmt = ‘o’, markersize = 3.0, ecolor = ‘b’,markeredgecolor = 'b', color = 'w')