1. 応用編

統計言語「R」では,他のユーザーの作成したパッケージを利用することにより,新規性や特異性が高く普通の統計ソフトでは解析できないような手法も用いることができます.ここでは,一例として,楕円フーリエ記述子に基づく輪郭形状の統計解析手法について簡単に説明します.

A-1】楕円フーリエ記述子に基づく輪郭形状の定量的評価

輪郭形状の定量的評価法のひとつに楕円フーリエ記述子(elliptic Fourier descriptors: Kuhl and Giardina 1982)とよばれる手法があります.この手法は,輪郭の座標情報を周期関数として表し,そのフーリエ級数の係数によって形を記述します.具体的には,輪郭上のある点Sから出発し,輪郭上を一定の速度で周回する点Pを考えます.ここで,点Pの時刻tにおけるxy座標をそれぞれx(t), y(t)と表すと,点Pは輪郭上を1周するごとに出発点Sに戻ってくるため,x(t), y(t)は周回時間Tを周期とする周期関数となります.周期をもつ関数はフーリエ級数により記述できるので,x(t), y(t)は以下のように表すことができます.

(1)

(2)

すなわち、フーリエ級数の係数an, bn, cn, dnによって輪郭の座標情報を記述することができます.ただし,これらフーリエ係数は,輪郭の向きや大きさ,さらには出発点の位置により値が変化します.そこで,係数について輪郭の向きや大きさ,出発点の位置に対する標準化を行い,標準化された係数を形の記述子として用います.楕円フーリエ記述子に関する詳細については,KuhlGiardina (1982)RohlfArchie (1984),岩田(2000),岩田(印刷中)などを参考にして下さい.

A-2】輪郭形状の統計解析

楕円フーリエ記述子ではフーリエ係数で座標情報を記述しますが,係数の数は式(1), (2)N20のときに80個となります.しかし,このままでは係数の数が多すぎて形の変異を簡単に解釈できません.そこで,主成分分析という多変量解析の手法を用いて,係数に含まれている情報をより低い次元の情報に縮約します。具体的には,係数の分散共分散行列に基づく主成分分析を行い,その主成分得点を形の評価値として用います.なお,フーリエ係数に含まれている情報は必ずしも主成分分析で評価しなければならないわけではありません.クラスタ解析や正準判別分析など他の多変量解析手法によって,主成分分析では評価できなかった特徴を評価できることもあります.

楕円フーリエ記述子の利点のひとつとして,係数の値から逆に輪郭を構築できることが挙げられます.この性質を利用することにより,主成分として抽出された形の特徴を視覚的に表現することができます(Rohlf and Archie 1984).これにより,通常の主成分分析では難しい各主成分の意味の解釈が容易になります.

A-3Rを用いた輪郭形状の統計解析

楕円フーリエ記述子を用いた輪郭形状解析のためのソフトウェアとして,「SHAPE」(Iwata and Ukai 2002)というフリーウェアがあります(http://cse.naro.affrc.go.jp/iwatah/shape/index.htmlよりダウンロード可能).SHAPEは、Windows上で動作し,(1) 画像解析による輪郭抽出,(2) 楕円フーリエ記述子の導出と標準化,(3) 主成分分析,(4) 主成分の意味の視覚化といった,一連の操作を実行できます.SHAPEを用いれば,画像解析や統計解析にあまり心得のない人でも,容易に解析をすすめることができます.しかし一方で,手法の一部を改変して解析したい場合には,SHAPEはあまり融通がききません.そこで,本稿の著者の一人である岩田は, SHAPEで実行される操作のうち,画像解析を除いた全ての操作をR上で行うためのパッケージ「SHAPE on R」を作成しました.ここでは,そのSHAPE on Rについて簡単に紹介します.

    1. SHAPE on RWebサイトhttp://cse.naro.affrc.go.jp/iwatah/shape_r/index_j.htmlよりshape_r.zipをダウンロードする.
    2. ダウンロードした圧縮ファイルを解凍する.解凍したフォルダ(shape_r)に以下のファイルが含まれる.
    3. shape.r SHAPE on R 本体(Rの関数群)

      sample_chc.dat サンプルデータ(チェーンコードとして保存された輪郭)

      sample_nef.dat サンプルデータ(楕円フーリエ記述子)

      chc2r.pl SHAPEからSHAPE on Rへのデータコンバータ,

      Perlプログラム,チェーンコード用.

      nef2r.pl 同上,楕円フーリエ記述子用.

      sample_chc.chc SHAPE用サンプルデータ(チェーンコード)

      sample_nef.nef SHAPE用サンプルデータ(楕円フーリエ記述子)

    4. chc2r.plおよびnef2r.plを利用するためには,Perlがインストールされている必要があります.なおPerlのインストールや利用法については
      「生物系研究者のための Perl 基礎の基礎」
      http://takenaka-akio.cool.ne.jp/doc/perl_kiso/index.html
      などを参考にして下さい.

  1. RFileメニューからChange dir...を選択し,SHAPE on Rを解凍したフォルダを指定します.
  2. Rのコンソールから以下のようにコマンドを入力します.

# SHAPE on Rを読み込む.

> source("shape.r")

# サンプルデータの読み込み.データはread.tableではなく専用の関数read.chcで読み込む.

> sample.chc <- read.chc("sample_chc.dat")

Read 138 records

# チェーンコード(Freeman 1974)として保存されている輪郭情報を標準化楕円フーリエ記述子に変換する.変換されたデータはsample.nefという名前のデータセットとして保持される.

> sample.nef <- chc2nef.chcdata(sample.chc)

1:next

2:back

3:turn

4:end

Selection:

# メニューから番号で操作を選択する.変換された記述子から再構築された輪郭が表示される.

# 標準化楕円フーリエ記述子から輪郭を構築する.

> draw.efdata(sample.nef)

1:next

2:back

3:end

Selection:

# メニューから番号で選択.

# 標準化楕円フーリエ記述子の主成分分析を行う.

> pca.res <- pca.efdata(sample.nef)

# 主成分分析結果を確認する

# 固有値

> pca.res$eval

PC 1 PC 2 PC 3 PC 4 PC 5 PC 6

1.071930e-03 3.371277e-04 1.462083e-04 7.946575e-05 ...(略)

# 寄与率

> pca.res$contr

PC 1 PC 2 PC 3 PC 4 PC 5 PC 6

5.727006e+01 1.801175e+01 7.811479e+00 4.245622e+00 ...(略)

# 累積寄与率

> pca.res$cum.contr

PC 1 PC 2 PC 3 PC 4 PC 5 PC 6 PC 7 PC 8

57.27006 75.28181 83.09329 87.33891 90.63505 ...(略)

# 14主成分得点を表示する.

> pca.res$score[,1:4]

PC 1 PC 2 PC 3 PC 4

Sample1_1 2.689132e-02 -0.0304498884 -1.861971e-02 -0.0006565109

Sample1_2 1.146167e-02 -0.0155943836 -1.308370e-03 0.0121484834

(略)

# 14主成分得点のタブ区切りテキストファイルとして保存する.

>write.table(pca.res$score[,1:4],file="score.dat",quote=F,sep="\t")

# 主成分の意味を視覚化する.

> draw.pc(pca.res)

1:next

2:back

3:minus

4:mean

5:plus

6:end

Selection:

# メニューから番号で選択する.各主成分の評価する形の特徴が表示される.

chc2r.plおよびnef2r.plは,以下のように用いればSHAPE用ファイルからSHAPE on R用ファイルに変換できます.

  1. Perlの利用環境を整えます.
  2. DOS窓でcdコマンドを使ってプログラムが存在するディレクトリに移動し,次のように入力します.
    chc2r.pl <入力ファイル> <出力ファイル>
    例えば,shape_rに含まれるSHAPE用サンプルファイルを用いる場合には
    chc2r.pl sample_chc.chc sample.dat
    と入力して実行します.すると,出力ファイルであるsample.datは,shape_rに含まれているsample_chc.datと同じ内容のファイルとなります.
  3. nef2r.plについても同様に
    nef2r.pl <入力ファイル> <出力ファイル>
    と入力すると実行できます.例えば, shape_rに含まれるSHAPE用サンプルファイルを用いて
    nef2r.pl sample_nef.nef sample.dat
    と入力して実行すると,sample.datshape_rに含まれているsample_nef.datと同じ内容のファイルとなります.なお,この楕円フーリエ記述子データファイルは,R上からread.tableコマンドを用いて読み込むことにより,楕円フーリエ記述子データとして,輪郭を表示したり,主成分分析を行ったりすることができます.

A-5】参考文献

Freeman, H. (1974) Computer processing of line drawing images. Comp. Surv. 6: 57-97.

岩田洋佳(2000)植物の形をはかる −植物形態の定量的評価ならびに統計遺伝学的解析−. 育種学最近の進歩 42. 57 - 60.

岩田洋佳(印刷中)楕円フーリエ記述子に基づく植物形態の統計遺伝学的研究. 日本計量生物学会誌.

Iwata, H. and Y. Ukai (2002) SHAPE: A computer program package for quantitative evaluation of biological shapes based on elliptic Fourier descriptors. Journal of Heredity 93: 384-385.

Kuhl, F. P. and C. R. Giardina (1982) Elliptic Fourier features of a closed contour. Comp. Graph. Image Process. 18: 236-258.

Rohlf, F. J. and J. W. Archie (1984) A comparison of Fourier methods for the description of wing shape in mosquitos (Diptera: Culicidae). Syst. Zool. 33: 302-317.