DStDev、DStDevP 関数

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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 を返します。

解説

ドメインが 2 つ未満のレコードを参照している場合、または 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'")

単にドメイン内のすべてのレコードの標準偏差を見つけたい場合は、StDev 関数または StDevP 関数を使用します。

ヒント expr の派生元のフィールドのデータ型が数値の場合、DStDev 関数と DStDevP 関数は Double データ型を返します。 演算コントロールで DStDev 関数または DStDevP 関数を使用する場合は、パフォーマンスを向上させるために、式にデータ型の変換関数を指定します。

これらの関数を使用する場合、domain 内のレコードに対して行った変更は、保存しないと指定されません。 変更した値に基づいて DStDev 関数または DStDevP 関数を実行する場合は、[データ] タブの [レコード] にある [レコードの保存] をクリックして、別のレコードへフォーカスを移動するか、または Update メソッドを使用して、最初に変更を保存する必要があります。

クエリの例

Expression 結果
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" のStandard偏差 (指定されたデータをサンプルとして考慮) を計算し、その結果を Expr1 に表示します。 また、"unitprice" が 140 未満の "UnitPrice" のStandard偏差 (指定されたデータを母集団全体として考慮) を計算し、その結果を 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" のStandard偏差 (指定されたデータをサンプルとして考慮) を計算し、結果を DstDev に表示します。 また、"unitprice" が 140 未満の "UnitPrice" のStandard偏差 (指定されたデータを母集団全体として考慮) を計算し、その結果を 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 & "'")