フィールドの変換 (Transform Field) (データ管理)

サマリー

それぞれの値に数学関数を適用し、分布の形状を変更して、1 つ以上のフィールド内の連続値を変換します。このツールでの変換方法には、対数、平方根、Box-Cox、逆数、二乗、指数、および逆 Box-Cox があります。

変換を適用すると、分布に含まれる歪度を減らし、正規 (ガウス) 分布に従うようにすることができます。

[フィールドの変換 (Transform Field)] ツールの図
元の値が正規分布に近づくように変換されます。

使用法

  • このツールでは、フィーチャクラスまたはテーブル ビューを入力値として使用できます。

  • [変換方法] パラメーターで使用できる変換は 7 つあります。

    • [対数] - 自然対数関数 (log(x)) を選択したフィールド内の元の値 (x) に適用します。
      • 対数変換は正の値にしか適用できません。選択したフィールド内の値が負の値または値ゼロの場合は、デフォルトで、変換の前に、値を正の値にするために、データにシフトが加算されます (log(x+shift))。デフォルトのシフトは、フィールド内の負の絶対最大値に小さい正の値 (~10-6) を加算した値に相当します。たとえば、選択したフィールド内の負の数値の最大値が -25 の場合、すべての値を正の値にするために、すべての値が 25.000001 だけシフトされます。
    • [平方根] - 選択したフィールド内の各値の平方根を取ります。
      • 平方根変換は負の値には適用できません。選択したフィールドに負の値がある場合、値を負以外の値にするために、デフォルトで変換前にデータにシフトが加算されます。デフォルトのシフトは、フィールド内の負の絶対最大値に相当し、値を負以外の値にします。
    • [Box-Cox] - 選択したフィールド内のデータを正規分布させるために次の累乗関数を適用します。

      Box-Cox 変換
      ここで、x' は変換後の値、x は元の値、λ1 は累乗 (指数) パラメーター、λ2 はシフト パラメーターです。

      • Box-Cox 変換は正の値にしか適用できません。選択したフィールド内の値が負の値または値ゼロの場合は、デフォルトで、変換の前に、値を正の値にするために、データにシフトが加算されます。デフォルト値は、値を負以外の値にするためのフィールド内の負の絶対最大値に、値をゼロ以外の値にするためのごく小さい値 (~10-6) を加算した値に相当します。[累乗] パラメーターを使用すると、累乗の値を指定できます (-5 から 5 までの値を取る)。値を指定しないと、正規分布曲線の最良近似が使用され、ジオプロセシング メッセージに表示されます。
    • [逆数] - 選択したフィールド内の各値 (x) の逆数 (1/x) を取ります。
      • 逆数変換は値ゼロには適用できません。選択したフィールド内に値ゼロがある場合、この値は変換後のフィールドで NULL として報告されます。この方法ではシフトが適用されません。
    • [指数] - 指数関数 (ex) を選択したフィールド内の元の値 (x) に適用します。指数変換は対数変換の逆でもあり、指数変換を対数変換後のフィールドに適用すると、元のデータ値が返されます。
      • デフォルトでは、選択したフィールドにシフトが適用されません。対数変換後のフィールドから元の値を取得するには、対数フィールドの作成に使用したシフト値と同じ値を指定します。指数変換が適用された後で、シフトの分が減算されます (ex - シフト)。
    • [二乗] - 選択したフィールド内の各値に二乗関数を適用します。二乗変換は平方根変換の逆でもあり、二乗変換を平方根変換後のフィールドに適用すると、元のデータ値が返されます。
      • デフォルトでは、選択したフィールドにシフトが適用されません。平方根変換後のフィールドから元の値を取得するには、平方根フィールドの作成に使用したシフト値と同じ値を指定します。二乗変換が適用された後で、シフトの分が減算されます (x2 - シフト)。
    • [逆 Box-Cox] - Box-Cox 変換の逆の変換が適用され、逆 Box-Cox 変換を Box-Cox 変換後のフィールドに適用すると、元のデータ値が返されます。逆 Box-Cox 累乗関数の計算方法は次のとおりです。

      逆 Box-Cox 変換
      において、x' は変換後の値、x は元の値、λ1 は累乗 (指数) パラメーター、λ2 はシフト パラメーターです。

      • デフォルトでは、選択したフィールドにシフトも累乗も適用されません。Box-Cox 変換後のフィールドから元の値を取得するには、Box-Cox フィールドの作成に使用したシフト値および累乗値と同じ値を指定します。

  • デフォルトのシフトを対数、平方根、Box-Cox 変換方法に適用しない場合は、[シフト] パラメーターに値 0 を指定して、シフトが適用されないようにすることができます。

  • 複数のフィールドをこのツールの実行に使用する場合は、選択した変換方法がすべてのフィールドに適用されます。シフト値または累乗値を指定すると、選択したすべてのフィールドに同じ値が適用されます。[シフト] パラメーターと [累乗] パラメーターに値を指定しないと、選択した変換方法に基づいて、選択したフィールドごとにデフォルト値が別々に計算されます。

  • このツールを実行すると、入力データが変更され、新しく作成された変換後のフィールドが入力テーブルまたはフィーチャクラスに追加されます。

  • [変換対象フィールド] パラメーターには、入力フィールドと出力フィールドの名前を指定できます。出力フィールド名がデータ内にすでに存在する場合は、該当するフィールドがこのツールで上書きされます。

  • 変換後のフィールドごとに、ジオプロセシング メッセージ結果で変換前のフィールドと変換後のフィールドの両方の統計情報のサマリーが生成されます。この統計情報には、最大値、最小値、合計値、平均値、標準偏差、中央値、歪度、尖度が含まれています。

  • [累乗] パラメーターと [シフト] パラメーターには、このツールから推定値が提供されます。これらの値は、ジオプロセシング メッセージにも表示されます。また、これらの値は、逆の変換方法で元のデータ値を取得する場合にも使用できます。

  • このツールでは、新しく作成された変換後のフィールドごとにヒストグラム チャートを作成して、その分布を視覚化します。

パラメーター

ラベル説明データ タイプ
入力テーブル

変換されるフィールドを含む入力テーブルまたはフィーチャクラス。新しい変換後のフィールドが入力テーブルに追加されます。

Table View; Raster Layer; Mosaic Layer
変換対象フィールド

変換される値を含むフィールド。フィールドごとに、出力フィールド名を指定できます。出力フィールド名を指定しないと、このツールによって、フィールド名と変換方法から出力フィールド名が生成されます。

Value Table
変換方法
(オプション)

指定したフィールドに含まれている値の変換に使用する方法を指定します。

  • 逆数選択したフィールド内の元の値 (x) に逆数変換方法 (1/x) が適用されます。
  • 平方根選択したフィールド内の元の値 (x) に平方根変換方法が適用されます。
  • 対数選択したフィールド内の元の値 (x) に自然対数関数 (log(x)) が適用されます。
  • Box-Cox選択したフィールド内の元の値を正規分布させるために Box-Cox 累乗関数が適用されます。これがデフォルトです。
  • 逆 Box-Cox選択したフィールド内の元の値に逆 Box-Cox 変換方法が適用されます。
  • 二乗 (平方根の逆)選択したフィールド内の元の値に二乗変換方法が適用されます。この変換方法は、平方根変換方法の逆の変換になります。
  • 指数 (対数の逆)選択したフィールド内の元の値 (x) に指数関数 (exp(x)) が適用されます。この変換方法は、対数変換方法の逆の変換になります。
String
累乗
(オプション)

Box-Cox 変換の累乗パラメーター (λ1)。値を指定しないと、最尤推定 (MLE) を使用して最適な値が求められます。

Double
シフト
(オプション)

すべてのデータがその分だけシフトされる値 (定数値を加算する)。0 を指定すると、シフトが適用されません。

対数変換、Box-Cox 変換、および平方根変換では、負の値または値ゼロの場合に、変換の前にデフォルトのシフト値が加算されます。

指数変換 (対数の逆)、逆 Box-Cox 変換、および二乗変換 (平方根の逆) では、デフォルトでシフトが適用されません。シフト値を指定した場合は、変換が適用された後で、その値の分だけ減算されます。これにより、変換とその逆の変換で同じシフトを使用することができます。

Double

派生した出力

ラベル説明データ タイプ
更新された入力テーブル

変換後のフィールドを含む更新済みのテーブル。

テーブル ビュー

arcpy.management.TransformField(in_table, fields, {method}, {power}, {shift})
名前説明データ タイプ
in_table

変換されるフィールドを含む入力テーブルまたはフィーチャクラス。新しい変換後のフィールドが入力テーブルに追加されます。

Table View; Raster Layer; Mosaic Layer
fields
[[input_field, output_field_name],...]

変換される値を含むフィールド。フィールドごとに、出力フィールド名を指定できます。出力フィールド名を指定しないと、このツールによって、フィールド名と変換方法から出力フィールド名が生成されます。

Value Table
method
(オプション)

指定したフィールドに含まれている値の変換に使用する方法を指定します。

  • INVX選択したフィールド内の元の値 (x) に逆数変換方法 (1/x) が適用されます。
  • SQRT選択したフィールド内の元の値 (x) に平方根変換方法が適用されます。
  • LOG選択したフィールド内の元の値 (x) に自然対数関数 (log(x)) が適用されます。
  • BOX-COX選択したフィールド内の元の値を正規分布させるために Box-Cox 累乗関数が適用されます。これがデフォルトです。
  • INV_BOX-COX選択したフィールド内の元の値に逆 Box-Cox 変換方法が適用されます。
  • INV_SQRT選択したフィールド内の元の値に二乗変換方法が適用されます。この変換方法は、平方根変換方法の逆の変換になります。
  • INV_LOG選択したフィールド内の元の値 (x) に指数関数 (exp(x)) が適用されます。この変換方法は、対数変換方法の逆の変換になります。
String
power
(オプション)

Box-Cox 変換の累乗パラメーター (λ1)。値を指定しないと、最尤推定 (MLE) を使用して最適な値が求められます。

Double
shift
(オプション)

すべてのデータがその分だけシフトされる値 (定数値を加算する)。0 を指定すると、シフトが適用されません。

対数変換、Box-Cox 変換、および平方根変換では、負の値または値ゼロの場合に、変換の前にデフォルトのシフト値が加算されます。

指数変換 (対数の逆)、逆 Box-Cox 変換、および二乗変換 (平方根の逆) では、デフォルトでシフトが適用されません。シフト値を指定した場合は、変換が適用された後で、その値の分だけ減算されます。これにより、変換とその逆の変換で同じシフトを使用することができます。

Double

派生した出力

名前説明データ タイプ
updated_table

変換後のフィールドを含む更新済みのテーブル。

テーブル ビュー

コードのサンプル

TransformField (フィールドの変換) の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、TransformField ツールの使用方法を示しています。


import arcpy
arcpy.management.TransformField("County_Data", "Income", "LOG")
TransformField (フィールドの変換) の例 2 (スタンドアロン スクリプト)

次のスタンドアロン Python スクリプトは、TransformField ツールの使用方法を示しています。


# Import system modules. 
import arcpy 
 
try: 
    # Set the workspace and input features. 
    arcpy.env.workspace = r"C:\\Transform\\MyData.gdb" 
    inputFeatures = "County_Data" 
 
    # Set the input fields that will be standardized 
    fields = "population_total;unemployment_rate;income" 
 
    # Set the standardization method. 
    method = "BOX-COX" 
 
    # Run the Transform Field tool 
    arcpy.management.TransformField(inputFeatures, fields, method) 
 
except arcpy.ExecuteError: 
    # If an error occurred when running the tool, print the error message. 
    print(arcpy.GetMessages())

環境