DStDev 関数および DStDevP 関数を使用して、特定のレコード セット (ドメイン) に含まれる値セット全体に対して標準偏差を導くことができます。 Visual Basic for Applications (VBA) モジュール、マクロ、クエリ式、あるいはフォームまたはレポートの演算コントロールで、DStDev 関数および DStDevP 関数を使用します。
DStDevP 関数は母集団を評価し、DStDev 関数は母集団の標本を評価します。
たとえば、モジュールの DStDev 関数を使用して、学生の試験得点の標準偏差を計算できます。
構文
DStDev ( expr , domain [, criteria] )
DStDevP ( expr , domain [, criteria] )
DStDev 関数および DStDevP 関数には、次の引数があります。
引数 |
説明 |
expr |
必須。 標準偏差を見つける数値フィールドを識別する式。 テーブルやクエリ内のフィールドを識別する文字列式であることもあれば、対象フィールド内のデータに対して計算を実行する式である場合もあります。 expr では、テーブル内のフィールド、フォームのコントロール、定数、または関数の名前を指定することができます。 expr で関数を指定する場合、その関数は組み込みでもユーザー定義でもかまいませんが、別の定義域の集計関数または SQL 集計関数は使えません。 |
domain |
必須。 定義域を構成するレコード セットを識別する文字列式。 テーブル名の場合もあれば、パラメーターを必要としないクエリのクエリ名の場合もあります。 |
criteria |
省略可能です。 DStDev 関数または DStDevP 関数を実行するデータ範囲を制限するために使用される文字列式。 たとえば、 条件 は、多くの場合、WHERE という単語を含まない SQL 式の WHERE 句と同じです。 条件を省略すると、DStDev 関数と DStDevP 関数はドメイン全体に対して expr を評価します。 条件に含まれるフィールドは、ドメイン内のフィールドである必要もあります。それ以外の場合、DStDev 関数と DStDevP 関数は Null を返します。 |
解説
domain の参照するレコードが 2 つ未満の場合、または criteria を満たすレコードが 2 つ未満の場合、DStDev 関数および DStDevP 関数は Null を返し、標準偏差を計算することはできません。
マクロ、モジュール、クエリ式、または演算コントロールで DStDev 関数または DStDevP のどちらを使用しても、正しく評価されるように criteria 引数を慎重に構築する必要があります。
DStDev 関数および DStDevP 関数を使用して、選択クエリの [抽出条件] 行で抽出条件を指定できます。 たとえば、[受注] テーブルと [商品] テーブルを作成して、平均および運送料を足した数値が標準偏差を超える商品をすべて表示することができます。 [運送料] フィールドの下の [抽出条件] 行には、次の式が含まれます。
>(DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders"))
クエリの集計フィールド式または更新クエリの [更新] 行にある DStDev 関数および DStDevP 関数を使用できます。
注: 集計クエリの集計フィールド式では、DStDev 関数および DStDevP 関数、StDev 関数および StDevP 関数を使用できます。 DStDev 関数または DStDevP 関数を使用する場合、データをグループ化する前に値が計算がされます。 StDev 関数または StDevP 関数を使用する場合、フィールド式の値が評価される前にデータがグループ化されます。
抽出条件を特定する必要があるときには、演算コントロールの DStDev 関数および DStDevP 関数を使用して、関数が実行されるデータ範囲を制限します。 たとえば、カリフォルニアに出荷される注文の標準偏差を表示するには、テキスト ボックスの ControlSource プロパティを次の式に設定します。
=DStDev("[Freight]", "Orders", "[ShipRegion] = 'CA'")
domain 内のレコード全体に対して標準偏差を導くだけの場合は、StDev 関数または StDevP 関数を使用します。
ヒント expr が導き出すフィールドのデータ型が数字の場合、DStDev 関数および DStDevP 関数は倍精度浮動小数点データ型を返します。 演算コントロールで DStDev 関数または DStDevP 関数を使用する場合は、パフォーマンスを向上させるために、式にデータ型の変換関数を指定します。
注: これらの関数を使用する場合、domain 内のレコードに対して行った変更は、保存しないと指定されません。 変更した値に基づいて DStDev 関数または DStDevP 関数を実行する場合は、[データ] タブの [レコード] にある [レコードの保存] をクリックして、別のレコードへフォーカスを移動するか、または Update メソッドを使用して、最初に変更を保存する必要があります。
クエリの例
式 |
結果 |
SELECT DStDev("unitprice","productSales","unitprice>140") AS Expr1, DStDevP("unitprice","productSales","unitprice<140") AS Expr2 FROM productSales GROUP BY DStDev("unitprice","productSales","unitprice>140"), DStDevP("unitprice","productSales","unitprice<140"); |
"unitprice" が 140 を超えるテーブル "ProductSales" から "UnitPrice" の標準偏差 (指定されたデータをサンプルとして考慮) を計算し、その結果を Expr1 に表示します。 また、"unitprice" が 140 未満である "UnitPrice" (指定されたデータを母集団全体として考慮) の標準偏差を計算し、その結果を Expr2 に表示します。 |
SELECT DStDev("unitprice","productSales","unitprice>140") AS DstDev, DStDevP("unitprice","productSales","unitprice<140") AS DstDevP FROM productSales GROUP BY DStDev("unitprice","productSales","unitprice>140"), DStDevP("unitprice","productSales","unitprice<140"); |
"unitprice" が 140 を超えるテーブル "ProductSales" から "UnitPrice" の標準偏差 (指定されたデータをサンプルとして考慮) を計算し、その結果を DstDev に表示します。 また、"unitprice" が 140 未満である "UnitPrice" (指定されたデータを母集団全体として考慮) の標準偏差を計算し、その結果を DstDevP に表示します。 |
VBA の例
注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。
次の例では、英国に出荷される注文の母集団と母集団の標本が返されます。 domain は、[受注] テーブルです。 criteria 引数は、ShipCountryRegion 値が英国のレコードを導き出すようにレコードの結果セットを制限します。
Dim dblX As Double
Dim dblY As Double ' Sample estimate. dblX = DStDev("[Freight]", "Orders", _ "[ShipCountryRegion] = 'UK'") ' Population estimate. dblY = DStDevP("[Freight]", "Orders", _ "[ShipCountryRegion] = 'UK'")
次の例では、criteria 引数の strCountryRegion 変数を使用して、同じ数値が計算されます。 文字列式に単一引用符 (') が含まれるため、文字列が連結されると、文字リテラルの UK が単一引用符で囲まれます。
Dim strCountryRegion As String
Dim dblX As Double Dim dblY As Double strCountryRegion = "UK" dblX = DStDev("[Freight]", "Orders", _ "[ShipCountryRegion] = '" & strCountryRegion & "'") dblY = DStDevP("[Freight]", "Orders", _ "[ShipCountryRegion] = '" & strCountryRegion & "'")