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

サマリー

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

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

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

使用法

    注意:

    このツールを実行すると、入力データが変更されます。 詳細と不要なデータの変更を回避するための方法については、「入力データを変更または更新するツール」をご参照ください。

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

  • [変換方法] パラメーターでは、次の変換を使用できます。

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

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

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

Double
シフト
(オプション)

データのシフトに使用する値 (定数値が追加される)。 0 を指定すると、シフトが適用されません。

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

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

Double

派生した出力

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

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

Table View

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 変換および逆 Box-Cox 変換の累乗パラメーター (λ1)。 Box-Cox 変換の場合、値を指定しないと、最尤推定 (MLE) を使用して最適な値が求められます。 逆 Box-Cox 変換の場合、値を指定する必要があります。

Double
shift
(オプション)

データのシフトに使用する値 (定数値が追加される)。 0 を指定すると、シフトが適用されません。

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

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

Double

派生した出力

名前説明データ タイプ
updated_table

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

Table View

コードのサンプル

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())

環境

関連トピック