【Rietveld解析】R因子 (信頼性因子) のイメージとは –定義式付き

2020年11月9日月曜日

Materials Informatics MI

B!
こんにちは.

最近研究でRietveld解析をやる機会があり,見様見真似で解析自体を進めていくことができたのですが,$R_{\mathrm{wp}}$やら$S$値やらと言われて何がなんだかわからなかったので自分なりに調べてそれらについてまとめつつ,実際に自分も解析を行ったときの「感覚」のようなものも記しておこうと思います.

数式と一緒に説明しているので,イメージが掴みやすいかと思います.ぜひ参考にしてください.

ただ,かなり人や分野によって感覚が異なるようなので,論文等を読んでどれくらいの精度が求められるかは把握した方が良いと思います.


R因子 (信頼性因子) とは

Reliability factor.RIETANというRietveld解析用のソフトウェアのうちの一つを開発されている泉先生の言葉を借りると,

リートベルト解析の進行や観測強度と計算強度 との一致のよさを見積もるための尺度

です.

つまり,これを元にRietveld解析の進捗の程度(まだだめかー,大体できてるかも!)を判断します.

種類はいくつかあり,それらを順番に示します.

基本的には論文や学会発表資料ではすべての信頼性因子を載せますが,プレゼンで口頭で触れるのは$S$と$R_{wp}$だけにしてしまうことがあります.
したがって,まずそれらを抑えると良いでしょう.


$R_{\mathrm{wp}}$

$R$-weighted patternで$R_{\mathrm{wp}}$.最も重要なR因子です.

ほとんどのRietveld解析のソフトウェアはこれを最小化するようにプログラムが組まれています.(Z-Rietveld, RIETAN etc.)

具体的には以下の数式で表されます.
$$R_{\mathrm{wp}} = \sqrt{\frac{\displaystyle \sum_{i=1}^N w_i\{y_i - f_i(x)\}^2}{\displaystyle \sum_{i=1}^N w_i y_i^2}}$$

ここで,
  • $y_i$: 各点における強度
  • $N$: データ数 (点の数)
  • $w_i$: 重み.ここでは強度の逆数$\left(\frac{1}{y_i}\right)$
  • $f_i(x)$: 計算で求めた各点の強度
を表します.

バックグラウンドが高くなると,分子の「残差 (実際の観測値と計算値の差)」を表す部分には大きな変化が起きないにもかかわらず,分母の強度の合計の値が大きくなるので,$R_{\mathrm{wp}}$自体は小さくなる傾向があります.また,データの強度が大きい場合もバックグラウンドの残差がほとんど0になるため,$R_{\mathrm{wp}}$自体は小さくなる傾向があります.

言い換えると,バックグラウンド強度や回折強度に影響をよく受ける値であるということです.そこで$S$値というものがあるのですが,のちほど触れます.

実体験ですが,昔まあまあ重い元素を含む材料を高輝度X線回折測定にかけたのですが,波長がちょうど吸収端にあたってしまって,バックグラウンドが高くなってしまって$R_{wp}$の絶対値で解析の進捗がわからなくなってしまったことがありました.

きちんと吸収端は確認しましょう,笑

イメージとしては,「計算値とのズレを強度で "規格化" してあげたもの」って感じだと思います.(規格化という表現は正しくないかもしれないですが...)


$R_{\mathrm{p}}$

$R$-patternで$R_{\mathrm{p}}$.$R_{\mathrm{wp}}$の重み付けがないバージョンです.基本的な傾向は$R_{\mathrm{wp}}$と似ています.

具体的な数式は以下に示します.
$$R_{\mathrm{p}} = \sqrt{\frac{\displaystyle \sum_{i=1}^N \{y_i - f_i(x)\}^2}{\displaystyle \sum_{i=1}^N y_i^2}}$$

ここで,
  • $y_i$: 各点における強度
  • $N$: データ数 (点の数)
  • $f_i(x)$: 計算で求めた各点の強度
を表します.

$R_{\mathrm{B}}$

$R$-Braggで$R_{\mathrm{B}}$.$R_{\mathrm{I}}$とも呼ばれます.単結晶構造解析で広く用いられる$R$因子とよく似ています.

具体的な数式は以下に示します.
$$R_{\mathrm{B}} = \frac{\displaystyle \sum_{k}{\left| I_i(\underline{o}) - I_i(c) \right|}}{\displaystyle \sum_{k}I_i(\underline{o})}$$

ここで,

  • $I \left(\underline{o} \right)$: ブラッグ反射$k$の積分強度の推定観測値
  • $I (c)$: ブラッグ反射$k$の積分強度の計算値
です.

$\underline{o}$としたのはこれが実際に観測された積分強度ではなく,Rietveld解析の結果から計算した推定値であるためです.実際のところ,$I(\underline{o})$は構造モデルに有利となるように偏っていて,単結晶回折データより信頼性が低いです.

その一方で他の$R$因子よりも構造パラメータの正確さを忠実に反映するため,それなりに有用です.

ただ,単結晶でよく使われる指標であるため,多結晶に対してあまりこれを当てにしている論文を見たことがありません.自分がまだ重要性を認識していないだけかもしれませんが,,,

$R_{\mathrm{F}}$

$R$-structure factorで$R_{\mathrm{F}}$.

ほとんどの性質(式も)が$R_{\mathrm{B}}$と似ているので省略します.具体的な数式は以下のとおりです.
$$R_{\mathrm{F}} = \frac{\displaystyle \sum_{k}{\left|\sqrt{I_i(\underline{o})} - \sqrt{I_i(c)}\right|}}{\displaystyle \sum_{k}\sqrt{I_i(\underline{o})}}$$

ここで,

  • $I \left(\underline{o} \right)$: ブラッグ反射$k$の積分強度の推定観測値
  • $I (c)$: ブラッグ反射$k$の積分強度の計算値
です.

$R_{\mathrm{e}}$

$R$-expectedで$R_{\mathrm{e}}$.

イメージは統計誤差がどれくらい含まれるか,についての指標です.$R_{\mathrm{wp}}$は実測値と計算値の差を計算で用いていますが,その$y_i$は測定値なので統計誤差が含まれています.その統計誤差が大きいなら$R_{\mathrm{wp}}$が合わなくても仕方ないと言えるのでその統計誤差の大きさを見積もる指標のことを$R_{\mathrm{e}}$と言います.

厳密ではないですが,雰囲気導出をしてみましょう.以下にスタート地点の$R_{\mathrm{wp}}$の式を示します.(再掲)
$$R_{\mathrm{wp}} = \sqrt{\frac{\displaystyle \sum_{i=1}^N w_i\{y_i - f_i(x)\}^2}{\displaystyle \sum_{i=1}^N w_i y_i^2}}$$

ここで,
  • $y_i$: 各点における強度
  • $N$: データ数 (点の数)
  • $w_i$: 重み.ここでは強度の逆数$\left(\frac{1}{y_i}\right)$
  • $f_i(x)$: 計算で求めた各点の強度
です.

$y_i - f_i(x)$は計算値との差であり,これを一般的にX線で言われている統計誤差 (標準偏差$\sigma_i$) $\sqrt{y_i}$で置き換えます.

すると,
$$\begin{align*}&\sqrt{\frac{\displaystyle \sum_{i=1}^N w_i\sqrt{y_i}^2}{\displaystyle \sum_{i=1}^N w_i y_i^2}}\\&= \sqrt{\frac{\displaystyle \sum_{i=1}^N \frac{1}{y_i}y_i}{\displaystyle \sum_{i=1}^N w_i y_i^2}}\ \ (\because y_i > 0)\\&= \sqrt{\frac{\displaystyle \sum_{i=1}^N 1}{\displaystyle \sum_{i=1}^N w_i y_i^2}}\\&= \sqrt{\frac{N}{\displaystyle \sum_{i=1}^N w_i y_i^2}}\end{align*}$$

ここで分子に着目します.Rietveld解析のみならず,一般的に$n$変数関数に対して$n$個データがあったらドンピシャの解が求められます.

たとえば$ax + by + cz + dw = 0$という式で観測データが表せるとしたとき,$(x, y, z, w) = (1, 1, 1, 1), (7, 2, 1, 0), (-5, -2, 1, 1), (0, 2, 4, 4)$という4点の観測データが与えられたらパラメータである$(a, b, c, d) $は,$ (-1, 2, 3, -4)$と決まります.

つまり,パラメータの数をデータの数から引いてあげることで "データ数(測定点数)の多さ" という指標になる.よって,$R_{\mathrm{e}}$の具体的な数式は以下で表されます.
$$R_{\mathrm{e}} = \sqrt{\frac{N - P}{\displaystyle \sum_{i = 1}^{N} w_i y_i}}$$

ここで,

  • $y_i$: 各点における強度
  • $N$: データ数 (点の数)
  • $w_i$: 重み.ここでは強度の逆数$\left(\frac{1}{y_i}\right)$
  • $P$: パラメータの数

です.

この値の大小が直接解析の進捗を表すのに関わってはきません.(次に述べる$S$値で重要な役割を果たすので全く意味ないわけではないですが,これ単体で議論するのは結晶構造解析という目的からすると意味ないと考えています.)


$S$値

$R$じゃないのに$R$値の一つです.最も重要な指標のうちの一つ.$R_{\mathrm{wp}}$$R_{\mathrm{e}}$の絶対値を見ただけだと良さがわからないので,それらの比をとることでどれくらい精密化がうまくいっているかの指標となります.$S=1$のとき,精密化が完全にうまくいっていることを意味します.

泉先生は1.3以下なら十分とおっしゃっていますが,自分は先輩から2が目安で,だけど$R_{\mathrm{wp}}$などほかの指標の大きさ,バックグラウンドによって状況は異なると言われました.

自分の解釈ではまあまあ普通の結果が得られていれば2を目安に解析を進めていく,という解釈をしています.

先ほど書いたとおりこの値はあくまで比なので$R_{\mathrm{wp}}$や$R_{\mathrm{e}}$と併記するのが普通です.(3変数のうち2変数書けばもう1変数はわかるのでは,という論理で省略したい場合は$S$と$R_{wp}$だけでもいいと思っています.)

具体的な数式は以下に示します.
$$\begin{align*}S &= \frac{R_{\mathrm{wp}}}{R_{\mathrm{e}}} \\&= \sqrt{\frac{\displaystyle \sum_{i=1}^N w_i \{ y_i - f_i(x) \}^2}{N - P}}\end{align*}$$

ここで,
  • $y_i$: 各点における強度
  • $N$: データ数 (点の数)
  • $w_i$: 重み.ここでは強度の逆数$\left(\frac{1}{y_i}\right)$
  • $P$: パラメータの数
です.

$d$

Durbin-Watsonの$d$統計量 (Durbin-Watson statistic) と呼ばれる値です.残差$y_i-f_i(x)$とその隣の測定点の残差$y_{i-1}-f_{i-1}$の間の連続した相関を見積もる尺度です(実際は式を見れば分かりますが,標準偏差で「規格化」のようなことをしています).理想値は2です.精密化の進行度を見ることもできます.

具体的な数式は以下です.
$$d = \frac{\displaystyle \sum_{i=2}^{N} \left\{\frac{y_i - f_i(x)}{\sigma_i} - \frac{y_{i-1} - f_{i-1}(x)}{\sigma_{i-1}}\right\}^2}{\displaystyle \sum_{i=1}^{N} \left\{\frac{y_i - f_i(x)}{\sigma_i}\right\}^2}$$

ここで,
  • $y_i$: 各点における強度
  • $N$: データ数 (点の数)
  • $w_i$: 重み.ここでは強度の逆数$\left(\frac{1}{y_i}\right)$
  • $\sigma_i$: $I$番目の回折強度の標準偏差.ここでは$\sqrt{y_i}$.

です.

正直あまりまともに考えたことがないです.自分は掲載しないこともあります.


まとめ

イメージはつかめたでしょうか.まだ私も知識不足の部分があるので間違っている部分等ありましたらご指摘お願いいたします.

参考文献

論文

泉 富士夫, 5.リートベルト法, 日本結晶学会誌, 1992, 34 巻, 2 号, p. 76-85, DOI: 10.5940/jcrsj.34.76

自己紹介

自分の写真
国立大学の大学院で応用化学を専攻している学生です.

このブログを検索

人気の投稿

注目の投稿

PythonからIgor Proにデータを渡す方法【IgorWriter】

こんにちは. 現在自分が所属している研究室ではIgor Proを使用しているため,そちらでデータを渡して欲しいと言われることが多々あります. これをどうにかできないかと考え,調べていたところ便...

QooQ