この章では、最もよく使用される基本的な統計プロシージャを実行するOracle R Enterpriseの関数について説明します。これらの関数は、市販の製品からOracle R Enterpriseに切り替えるユーザーの助けとなるように設計されています。
Oracle R Enterpriseは、次の一連の関数を提供します。
また、「Oracle R EnterpriseのRモデルのバージョン」に示すore.lm()
、ore.stepwise()
およびore.neural()
も重要です。
これらの関数の使用法は、例で示します。大部分の例では、「例のデータ」に示す同じデータが使用されています。
ほとんどの例では、表NARROWを使用します。
NARROWは、次のように9つの列を持つore.frame
です。
R> class(NARROW) [1] "ore.frame" attr(,"package") [1] "OREbase" R> names(NARROW) [1] "ID" "GENDER" "AGE" "MARITAL_STATUS" [5] "COUNTRY" "EDUCATION" "OCCUPATION" "YRS_RESIDENCE" [9] "CLASS"
一部の列のみが数値です。
ore.corr
には次の特徴があります。
ore.frameの複数の数値列にわたる相関分析を実行します。
制御列との部分相関をサポートします。
相関の前の集計を可能にします。
結果の後処理およびRコード・フローへの統合を可能にします。
ore.corr
の出力は、R cor()
関数の出力に適合させることができます。これにより、ore.corrの出力を、R関数またはグラフィックで後処理ができます。
構文および出力については「ore.corrのパラメータ」を、例については「ore.corrの例」を参照してください。
ore.corr
には、次のパラメータがあります。
data: ore.frameとして相関係数を計算する対象となるデータ。
var: 相関マトリクスを構築するdataの数値列
group.by: 計算する相関マトリクスを示します。ore.corr
は、group.by列の一意の値と同じ数の相関マトリクスを計算します。デフォルト値はNULLです
weight: var列の倍数因子を提供する数値を持つdataの列。デフォルト値はNULLです。
partial: 部分相関の制御変数として使用するdataの列。デフォルト値はNULLです。
stats: 相関の計算方法。pearson(デフォルト)、spearman、kendallのうちの1つです
ore.corr
は、group.byが使用されている場合を除く、すべての場合に出力としてore.frame
を返します。group.byが使用されている場合は、Oracle R Enterprise list
オブジェクトを返します。
次の例では、ore.corr
の使用方法を示します。
これらの例では、NARROWデータ・セットを使用します。詳細は、「例のデータ」を参照してください。
ore.corr
を使用する前に、数値以外のすべての値を投影しておく必要があります。
R> names(NARROW) [1] "ID" "GENDER" "AGE" "MARITAL_STATUS" "COUNTRY" "EDUCATION" "OCCUPATION" [8] "YRS_RESIDENCE" "CLASS" "AGEBINS" R> NARROW=NARROW[,c(3,8,9)]
これで、次のいくつかの方法で、相関を計算します。
R> x=ore.corr(NARROW,var='AGE,YRS_RESIDENCE,CLASS') #Calculate using Spearman R> x=ore.corr(NARROW,var='AGE,YRS_RESIDENCE,CLASS', stats='spearman') # Calculate using Kendall R> x=ore.corr(NARROW,var='AGE,YRS_RESIDENCE,CLASS', stats='kendall')
「基本的な相関計算」で作成した数値以外の値が含まれたNARROWのバージョンを使用します。
Spearmanの方法を使用した部分相関の計算:
R> x=ore.corr(NARROW,var='AGE,YRS_RESIDENCE,CLASS', stats='spearman', partial='GENDER')
「基本的な相関計算」で作成した数値以外の値が含まれたNARROWのバージョンを使用します。
いくつかの相関マトリクスを作成し、その出力をRの出力と互換性を持つように変換します。
x <- ore.corr(IRIS, var = "Sepal.Length, Sepal.Width, Petal.Length", partial = "Petal.Width", group.by = "Species") R> class(x) [1] "list"
いくつかのマトリクスを計算する場合、Rパッケージを使用してそれらを視覚化できます。
クロス集計は、値からなる2つの表の間の相互依存関係を見つける統計手法です。
ore.crosstab
は、ore.frameのクロス列分析を可能にします。この関数は、R table()
関数の高性能なバリアントです。
ore.crosstab
は、ore.freqを使用して頻度分析を実行する前に、実行する必要があります。
クロス集計は、ore.extendで説明するように様々な合計によって拡張できます。
ore.crosstab
は、Rで記述されています。この関数は、データベース・サーバーで実行されるSQLにマップされています。
構文および出力については「ore.crosstabのパラメータ」を、例については「ore.crosstabの例」を参照してください。
ore.extendを使用して、クロス集計を拡張できます。
ore.crosstab
には、次のパラメータがあります。
expr: クロス集計定義
[COLUMN_SPEC] ~ COLUMN_SPEC [*<WEIGHTING COLUMN>] [/<GROUPING COLUMN>] [^<STRATIFICATION COLUMN>] [|ORDER_SPECIFICATION] COLUMN_SPEC is <column-name>[+COLUMN_SET][+COLUMN_RANGE] COLUMN_SET is <column_name>[+COLUMN_SET] COLUMN_RANGE is <FROM COLUMN>-<TO COLUMN>
説明:
COLUMN_SPEC is <column>
[+COLUMN_SET][+COLUMN_RANGE]
COLUMN_SET is <column>[+COLUMN_SET]
COLUMN_RANGE is (<from column>-<to column>)
ORDER_SPECIFICATION is one of [-]NAME, [-]DATA, [-]FREQ, or INTERNAL
階層化列は、データのクラスタ化、つまりグループ化に使用されます。使用した場合、その値は、結果のクロス集計表のORE$STRATA列に格納されます。
data: クロス集計するデータを含むore.frame
grouping column: グループ化列の一意の値と同じ数のクロス集計を計算します。デフォルト値はNULLです。
order: 出力データのオプションのソートを定義します。集計列でソートするには[-]NAMEを、表における頻度カウントでソートするには[-]FREQを指定します。順序を指定しないと、最も効率的になります。オプションの「-」によって、順序が逆転します。
weights: 対応する行の頻度を示すdataの列。デフォルト値はNULLです。
partial: 部分相関の制御変数として使用するdataの列。デフォルト値はNULLです。
ore.crosstab
は、複数の表が作成されている場合を除く、すべての場合に出力としてore.frame
を返します。複数の表が作成されている場合、ore.crosstabは、Oracle R Enterprise list
オブジェクトを返します。
次の例は、ore.crosstab
の使用法を示しています。
これらの例では、NARROWデータ・セットを使用します。詳細は、「例のデータ」を参照してください。
最も基本的な使用例は、単一列頻度表の作成です。次のコマンドは、GENDERによってグループ化されたNARROWにフィルタを適用します。
R> ct = ore.crosstab(~AGE, data=NARROW) R> ct
次のコマンドは、GENDERによってAGEを、CLASSによってAGEを分析します。
R> ct = ore.crosstab(AGE~GENDER+CLASS, data=NARROW) R> head(ct)
行を重み付けするには、別の列に基づいたカウントを含めます。この例では、YRS_RESIDENCEの値を使用してAGEおよびGENDERの値に重み付けします。
R> ct = ore.crosstab(AGE~GENDER*YRS_RESIDENCE, data=NARROW) R> head(ct)
次のようにいくつかの方法があります。
分析対象の列によるデフォルトまたはNAMEの順序付け
頻度カウントによるFREQの順序付け
-NAMEまたは-FREQは、順序を逆転します
INTERNALは、順序付けをバイパスします
次に2つの例を示します。
R> ct = ore.crosstab(AGE~GENDER|FREQ, data=NARROW) R> head(ct) AGE GENDER ORE$FREQ ORE$STRATA ORE$GROUP R> ct = ore.crosstab(AGE~GENDER|-FREQ, data=NARROW) R> head(ct)
これは、次のようにSQL GROUPING SETS句の実行に似ています。
R> ct = ore.crosstab(AGE+COUNTRY~GENDER, NARROW)
この例に示すように、すべての列の名前を入力するかわりに、列の範囲を指定できます。
R> names(NARROW) [1] "ID" "GENDER" "AGE" "MARITAL_STATUS" [5] "COUNTRY" "EDUCATION" "OCCUPATION" "YRS_RESIDENCE" [9] "CLASS"
AGE、MARITAL_STATUSおよびCOUNTRYは連続している列であるため、単純に次のように使用できます。
ct = ore.crosstab(AGE-COUNTRY~GENDER, NARROW)
同等のバージョンは次のようになります
ct = ore.crosstab(AGE+MARITAL_STATUS+COUNTRY~GENDER, NARROW)
このコマンドは、別の列COUNTRYの一意の値ごとに1つのクロス表(AGE, GENDER)を作成します。
R> ct=ore.crosstab(~AGE/COUNTRY, data=NARROW) R> head(ct)
これを複数の列に拡張できます。たとえば、このコマンドは、(COUNTRY, GENDER)の一意の組合せごとに1つの(AGE, EDUCATION)表を作成します。
R> ct = ore.crosstab(AGE~EDUCATION/COUNTRY+GENDER, data=NARROW)
前述のクロス集計は、すべて、階層化によって拡張できます。次に例を示します。
R> ct = ore.crosstab(AGE~GENDER^CLASS, data=NARROW) R> head(ct)
この例のコマンドは、次のものと同じです。
ct = ore.crosstab(AGE~GENDER, NARROW, strata="CLASS")
最初にAGEをビニングし、次にGENDERおよびそのビンのクロス集計を計算します。
R> NARROW$AGEBINS=ifelse(NARROW$AGE<20, 1, ifelse(NARROW$AGE<30,2, ifelse(NARROW$AGE<40,3,4))) R> ore.crosstab(GENDER~AGEBINS, NARROW)
ore.crosstabを使用して作成されたクロス集計は、次の3つの統計でさらに拡張できます。
行および列の合計
crosstab = ore.extend.sum(crosstab)
表のセルごとの累積合計
crosstab = ore.extend.cumsum(crosstab)
表全体の合計
crosstab = ore.extend.total(crosstab)
次の例は、ore.extend
を示しています。
R> ct <- ore.crosstab(GENDER~CLASS, NARROW) R> ore.freq(ct) METHOD FREQ DF PVALUE DESCR GROUP 1 PCHISQ 72.4241 1 0 Pearson Chi-Square 1
ore.crosstab
は、ore.freqを使用して頻度分析を実行する前に、実行する必要があります。
ore.freq
は、ore.crosstab
の出力を分析し、ore.crosstab
の結果に関連する手法を自動的に判別します。手法は、クロス表の種類に応じて異なります。
1方向のクロス表
同等の比率または指定したNULL比率に対する適合度検定、信頼度の限度と同等性のテスト。
2方向のクロス表
クロス集計における列の間の関係を記述する様々な統計
カイ二乗検定、Cochran-Mantel-Haenzsel統計、属性相関、関連の強固性、リスクの相違、オッズ比および2x2表の相対リスク、トレンドの検定
N方向のクロス表
N 2方向のクロス表
階層内または階層にわたる統計
ore.freq
は、使用可能な場合はOracle Database SQL関数を使用します
構文および出力については「ore.freqのパラメータ」を、例については「ore.freqの例」を参照してください。
ore.freq
では、次のパラメータがサポートされています。
crosstab: ore.crosstab()
から出力されるore.frame
オブジェクト
stats: 必要な統計のリスト。次の統計がサポートされています。
カイ二乗: AJCHI、LRCHI、MHCHI、PCHISQ
カッパ: KAPPA、WTKAP
lambda: LAMCR、LAMRC、LAMDAS
相関: KENTB、PCORR、SCORR
スチュアートのタウ、ソマーズ: D|C、STUTC、SMDCR、SMDRC
フィッシャー、コクランのQ、FISHER、COCHQ
オッズ比: OR、MHOR、LGOR
相対リスク: RR、MHRR、ALRR
その他: MCNEM、PHI、CRAMV、CONTGY、TSYM、TREND、GAMMA
デフォルト値は「NULL」です。
Params: statsで指定される統計関数固有の制御パラメータ:
SCORE: TABLE|RANK|RIDIT|MODRIDIT
ALPHA: 数値
WEIGHTS: 数値
デフォルト値は「NULL」です。
skip.missing: クロス表内の値が欠落しているセルをスキップします(TRUEまたはFALSE)。デフォルト値はFALSEです。
skip.failed: クロス表に対して必要な統計検定が、その表に適用不可であるために失敗した場合、ただちに返されます(TRUEまたはFALSE)。デフォルト値はFALSEです。
ore.freq
は、すべての場合にore.frameを返します。
これらの例では、NARROWデータ・セットを使用します。詳細は、「例のデータ」を参照してください。
ore.freq
を使用する前に、クロス集計を計算する必要があります。
次に例を示します。
R> ct = ore.crosstab(~GENDER, NARROW) R> ore.freq(ct) METHOD FREQ DF PVALUE DESCR GROUP 0 PCHI 161.9377 1 0 Chi-Square 1
ore.rank
は、ore.frameの数値列の値の分布を分析します。
ore.rank
は、次のような便利な機能をサポートします。
グループ内のランキング
ランク・タイルに基づいた、グループへの行のパーティショニング
累積パーセンテージおよびパーセンタイルの計算
同順位の処理
ランクからの標準スコアの計算
ore.rank
構文は、対応するSQL問合せより単純です。
構文については「ore.rankのパラメータ」を、例については「ore.rankの例」を参照してください。
ore.rank
では、次のパラメータがサポートされています。
data: ランキングするデータを含むore.frame
var: ランキングするdata内の数値列
desc: desc=TRUE
である場合、降順にランキングします。それ以外の場合は、昇順でランキングします。(デフォルトは、昇順のランキングです。)
groups: ランクに基づいて行を#グループにパーティショニングします。パーセンタイルの場合はgroups=100
、十分位数の場合はgroups=10
、四分位数の場合はgroups=4
です。
デフォルト値は「NULL」です。
group.by: group.by
列で識別される各グループを別々にランキングします。
デフォルト値は「NULL」です。
ties: 同順位の処理方法を指定します。tiesを処理する方法は、同順位の値に、対応するランクのうちの最大、最小または中間のものを割り当てることです。
デフォルト値は「NULL」です。
fraction: 列値のランクを欠落していない列値の数で除算したもの。デフォルト値はFALSEです。
nplus1
とともに使用して、累積分布関数を見積ります
nplus1: fraction
に1を加算したもの。つまり、欠落していない列値の数で列値のランクを除算したものを1に加算したもの。デフォルト値はFALSEです。
fraction
とともに使用して、累積分布関数を見積ります。
percent: fractionをパーセント値、つまりfraction * 100に変換したもの。
ore.rank
は、すべての場合にore.frameを返します。
次のRスコアリング・メソッドをore.rank
とともに使用できます。
ランクから指数スコアを計算するには、savage
を使用します。
正規スコアを計算するには、blom
、tukey
またはvw
(ファン・デル・ヴェルデン)の1つを使用します。
次の例は、ore.rank
の使用方法を示しています。
これらの例では、NARROWデータ・セットを使用します。詳細は、「例のデータ」を参照してください。
この例では、2つの列AGEとCLASSをランキングし、派生列としてその結果をレポートします。値は、デフォルトの順序(昇順)でランキングされます。
R> x <- ore.rank(data=NARROW, var='AGE=RankOfAge, CLASS=RankOfClass')
この例では、2つの列AGEとCLASSをランキングします。同順位がある場合、同順位のすべての値に最小値が割り当てられます。
R> x <- ore.rank(data=NARROW, var='AGE=RankOfAge, CLASS=RankOfClass', ties='low')
この例では、2つの列AGEとCLASSをランキングし、COUNTRYに従ってその値をランキングします。
R> x <- ore.rank(data=NARROW, var='AGE=RankOfAge, CLASS=RankOfClass', group.by='COUNTRY')
この例では、2つの列AGEとCLASSをランキングし、その列を十分位数(10パーティション)にパーティショニングします。
R> x <- ore.rank(data=NARROW, var='AGE=RankOfAge, CLASS=RankOfClass',groups=10)
列を異なる数のパーティションにパーティショニングするには、groups
の値を変更します。たとえば、groups=4
では、四分位数にパーティショニングされます。
この例では、2つの列AGEとCLASSをランキングし、両方の列の累積分布関数を見積ります。
R> x <- ore.rank(data=NARROW, var='AGE=RankOfAge, CLASS=RankOfClass',nplus1=TRUE)
この例では、2つの列AGEとCLASSをランキングし、2つの異なる方法でそのランクをスコアリングします。最初のコマンドが、列をパーセンタイル(100グループ)にパーティショニングします。savage
が指数スコアを計算し、blom
が正規スコアを計算します。
R> x <- ore.rank(data=NARROW, var='AGE=RankOfAge, CLASS=RankOfClass',score='savage', groups=100, group.by='COUNTRY') R> x <- ore.rank(data=NARROW, var='AGE=RankOfAge, CLASS=RankOfClass',score='blom')
ore.sort
は、by句で指定した1つ以上の列に沿ったデータ・フレームの柔軟なソートを可能にします。
ore.sort
は、他のデータ事前処理関数とともに使用できます。ソートの結果を、Rの視覚化への入力に使用できます。
ore.sort
のソートは、Oracle Database内で実行されます。ore.sort
では、データベースnls.sort
オプションがサポートされます。
構文については「ore.sortのパラメータ」を、例については「ore.sortの例」を参照してください。
ore.sort
では、次のパラメータがサポートされています。
data: ソートするデータを含むore.frame。必須。
by: data内でデータをソートする基準となる列。必須。
stable: 相対順序を、ソートされたグループ内で保持します(TRUEまたはFALSE)。デフォルト値はFALSEです。
reverse: 文字変数の照合順序を逆転します(TRUEまたはFALSE)。デフォルト値はFALSEです。
unique.keys: ソート対象の列内の重複する値を持つ観測データを削除します(TRUEまたはFALSE)。デフォルト値はFALSEです。
unique.data: すべての列内の重複する値を持つ観測データを削除します(TRUEまたはFALSE)。デフォルト値はFALSEです。
dataおよびbyは必須パラメータです。その他のパラメータはすべてオプションです。
ore.sort
は、ore.frame
を返します。
次の例は、ore.sort
の使用方法を示しています。
これらの例の大部分では、NARROWデータ・セットを使用します。詳細は、「例のデータ」を参照してください。また、ONTIME_Sを使用した例もあります。
列AGEおよびGENDERを降順でソートします。
R> x=ore.sort(data=NARROW, by='AGE,GENDER', reverse=TRUE)
AGEを降順で、GENDERを昇順でソートします。
R> x=ore.sort(data=NARROW,by='-AGE,GENDER')
AGEを基準にソートし、AGEの一意の値ごとに1つの行を保持します。
R> x=ore.sort(data=NARROW,by='AGE', unique.key=TRUE)
AGEを基準にソートし、重複する行を削除します。
R> x=ore.sort(data=NARROW,by='AGE', unique.data=TRUE)
AGEを基準にソートします。また、重複する行を削除し、AGEの一意の値ごとに1つの行を返します。
R> x=ore.sort(data=NARROW,by='AGE', unique.data=TRUE, unique.key = TRUE)
ソートされた出力内で相対順序を保持します。
R> x=ore.sort(data=NARROW,by='AGE', stable=TRUE)
次の例では、Oracle R EnterpriseをインストールしたときにインストールされているONTIME_Sエアラインのデータを使用します。
ONTIME_Sをエアライン名を基準に降順で、出発の遅延を昇順でソートします。
R> sortedOnTime1 <- ore.sort(data=ONTIME_S, by='-UNIQUECARRIER,DEPDELAY')
ONTIME_Sをエアライン名および出発の遅延でソートし、各組合せの1つを選択します(つまり、一意のキーを返します)。
R> sortedOnTime1 <- ore.sort(data=ONTIME_S, by='-UNIQUECARRIER,DEPDELAY', unique.key=TRUE)
ore.summary
は、記述統計を計算し、柔軟な行の集計とともに、ore.frame内の列の広範な分析をサポートします。
ore.summary
では、次の統計がサポートされています。
平均、最小、最大、モード、欠落値の数、合計、加重和
二乗の補正および未補正合計、値の範囲、stddev、stderr、分散
母平均が0であるという仮定をテストするためのt検定
尖度、歪度、変動係数
分位: p1、p5、p10、p25、p50、p75、p90、p95、p99、qrange
平均の片側および両側信頼限界: clm、rclm、lclm
極値のタグ付け
ore.summary
は、同じ結果について、SQL問合せと比べて単純な構文を提供します。
構文については「ore.summaryのパラメータ」を、例については「ore.summaryの例」を参照してください。
ore.summary
では、次のパラメータがサポートされています。
data: ore.frame
として集計するデータ
class: 集計するdataの列(つまり、SQL GROUP BY)。デフォルト値はNULLです
var: 統計関数を適用するdataの列(SQL SELECTリスト)
stats: varの列に適用する統計関数のリスト
var列に対して要求できるmean、min、max、cnt、n、nmiss、css、uss、cv、sum、sumwgt、range、stddev、stderr、var、t、kurt、skew、p1、p5、p10、p25、p50、p75、p90、p95、p99、qrange、lclm、rclm、clm、mode
デフォルト値はn、mean、min、maxです。
weight: var列の乗数的因子を提供する数値を持つdataの列
maxid、minid: グループごとに、dataの他の列の最大または最小値をリストします。デフォルト値はNULLです
ways: 出力をclass変数の特定のグループ化レベルのみに制限します。デフォルト値はNULLです
group.by: サマリー結果を階層化する対象のdataの列。デフォルト値はNULLです
order: 出力データのオプションのソートを定義します。集計列でソートするには[-]NAMEを、表における頻度カウントでソートするには[-]FREQを指定します。順序を指定しないと、最も効率的になります。オプションの「-」によって、順序が逆転します。
_FREQ: 頻度。1つのグループ内の観測データの数
_TYPE: グループ化を識別します。バイナリ・コード・ベースです
_LEVEL: グループ化で使用される変数の数を識別します
ore.summary
は、group.by句が使用されている場合を除く、すべての場合に出力としてore.frame
を返します。group.by句が使用されている場合、ore.summary
は、階層ごとに1フレームずつore.frame
オブジェクトのリストを返します。
次の例は、ore.summary
の使用法を示しています。
これらの例では、NARROWデータ・セットを使用します。詳細は、「例のデータ」を参照してください。
この例では、列AGEおよびCLASSの平均、最小、最大を計算し、GENDERをロールアップ(集計)します。
R> ore.summary(NARROW, class='GENDER', var ='AGE,CLASS', order='freq')
この例では、列AとしてAGEの歪度と、列BとしてCLASSのt検定を計算します。
R> ore.summary(NARROW, class='GENDER', var='AGE,CLASS', stats='skew(AGE)=A, probt(CLASS)=B')
この例では、YRS_RESIDENCEを重みとしてGENDERによって集計されたAGEの重み付けされた合計を計算します。つまりsum(var*weight)
を計算します。
R> ore.summary(NARROW, class='GENDER', var='AGE', stat='sum=X', weight='YRS_RESIDENCE')
GENDERおよびMARITAL_STATUSでCLASSをグループ化します。
R> ore.summary(NARROW, class='GENDER, MARITAL_STATUS', var='CLASS', ways=1)
ore.univariate
は、ore.frameの数値変数の分布分析を提供します。
ore.univariate
は、次の統計を提供します。
ore.summaryによってレポートされるすべての統計
符号順位検定、スチューデントのt-検定
極値のレポート
構文については「ore.univariateのパラメータ」を、例については「ore.univariateの例」を参照してください。
ore.univariate
では、次のパラメータがサポートされています。
data: ore.frameとして集計するデータ
var: 分析するdata内の数値列
weight: var列の倍数因子を提供する数値を持つdataの列。デフォルト値はNULLです
stats: 計算および表示する統計のサブセットの指定(オプション)
moments: n、sumwgt、mean、sum、stddev、var、skew、kurt.、uss.css.cv、stderr
measures: mean、stddev、median、var、mode、range、iqr
quantiles: p100、p99、p95、p90、p75、p50、p25、p10、p5、p1、p0
location: studentt、studentp、signt、signp、srankt、srankp
normality
loccount: loc<、loc>、loc!
extremes
デフォルト値は「NULL」です。
ore.univariate
は、すべての場合に出力としてore.frameを返します。
次の例は、ore.univariate
の使用法を示しています。
これらの例では、NARROWデータ・セットを使用します。詳細は、「例のデータ」を参照してください。
この例では、AGE、YRS_RESIDENCEおよびCLASSのデフォルトの単変量統計を計算します。
R> ore.univariate(NARROW, var="AGE,YRS_RESIDENCE,CLASS")
この例では、YRS_RESIDENCEの位置統計を計算します。
R> ore.univariate(NARROW, var="YRS_RESIDENCE",stats="location")
この例では、AGEおよびYRS_RESIDENCEの完全な分位統計を計算します。
R> ore.univariate(NARROW, var="AGE,YRS_RESIDENCE",stats="quantiles")