メインコンテンツに移動

XLSTAT-Rを用いてExcelでR関数をデプロイ

このチュートリアルは、XLSTAT-R エンジンを用いてExcel内で簡単なR関数を展開するためのステップを説明します。
あなたのXLSTAT環境で XLSTAT-R が動作するようにするには、*こちらのチュートリアル*をチェックしてください。

Excel - XLSTATで順位ベース回帰を利用可能にする

このチュートリアルでは、{Rfit} パッケージのrfit関数で作業します。これは、線形モデルで順位ベースの係数を計算できるようにします。それらの計算は、従来の計算アプローチよりも異常値に関してよりロバスト(頑健)であると考えられています。
データ入力として 、rfit は下記を前提とします:

  • 量的従属変数

  • 質的または量的独立(説明)変数

さらにまた、回帰係数を表現するバーチャートを表示する選択も追加できます。我々はXLSTATのチャート・エンジンも使用します。

ステップ 1: XMLテンプレートを開き、メソッド構造を記入する

XLSTAT-R 機能は、XMLコードで書かれています。XLSTAT-R XML 文法の詳細ドキュメントはこちらにあります
我々の機能の開発を開始するために、XLSTAT-R XML テンプレートを開く必要があります。R / XMLテンプレートを開くをクリックしてください。

XLSTAT オプション、XLSTAT-R タブの下に指定されたパスで、デフォルトのXMLエディタ内にテンプレートが開きます。
ただし、Sublime (Windows および Mac) または Notepad++ (Windows のみ)を用いてXMLファイルを編集することを強く推奨します。
既存の機能からあなたの機能プロジェクトを開始することを可能なことに注意してください。 開発しようとしている機能が、 すでにXLSTAT-Rで開発されたのと似た入力または出力構造を持つ場合に、それが便利かもしれません。通常、以下のアドレスに保管されている既存の機能をブラウズするだけです: %AppData%\ADDINSOFT\XLSTAT\XLSTAT-R\groups
それではこれからメソッド構造にリンクされた属性を記入して行きます。メソッド構造は、あなたのXLSTAT-R 機能プロジェクトの根本です。ここで、あなたの機能名、入力データ構造、使用するRライブラリなど、重要な属性を定義しなければなりません。
メソッド属性およびサブ・ノードに記入するには、引用符の間のテンプレート・テキストを置き換えます。
XLSTAT R XML Template
下記のように属性を記入します: - text="Rank-Based Regression". これはあなたの機能の名前です。

  • datastructure="model". この構造は、Rの数式に融合されるデータに関与します。これは、従属変数および独立変数または予測値に関与する典型的なR関数です。これは、 rfit 関数の場合です。通常のデータ構造では、単に"data"と入れてください。

  • function="rfit". これは、あなたが展開しているコアR関数、またはあなたの独自の手順の名前です。

  • group="Rfit". これは、XLSTAT-R メニューに保管されるあなたの関数の下のサブ・メニューになります。または、これはあなたのXMLプロジェクトを保存するフォルダの名前にもなります。

  • packages="Rfit". あなたの機能が動作するために読み込まれるべきパッケージのリストをここに入れてください。複数のパッケージを入れる必要がある場合は、コンマで区切ってください。たとえば、エラーバーつきのRチャートを生成できるようにするために plotrix パッケージを含めたい場合は、packages="Rfit,plotrix"と書きます。

  • family="Robust Linear Modeling". オプションの属性。

  • question="How can I obtain robust linear model estimates?". オプションの属性。

  • synonyms="Robust regression". オプションの属性。

下記のようにメソッドのサブノードを記入します: - <AuthorXML>John Smith</AuthorXML>

  • <AuthorRFunction>John Kloke</AuthorRFunction>. 著作者の名前を見つけるには、Rの中で ?rfit と入れます。

  • <CompatibilityXLSTAT>19.5</CompatibilityXLSTAT>. あなたが機能を展開しているXLSTATのバージョン。リボンの右端の XLSTAT / XLSTATについて をクリックすると見つけられます。

  • <CompatibilityR>3.4.2</CompatibilityR>. 使用している R のバージョン。Rコンソールを開くときに見つけられます。

  • <DateCreated>2017.09.29</DateCreated>

  • <DateModified>2017.09.29</DateModified>. あなたの機能に新しい修正を加えたときはいつでもこの日付を確認してください。

  • <PackageVersion>rfit 0.23.0</PackageVersion>. R コンソールでパッケージを読み込んで、 sessionInfo() コマンドを実行して見つけられます。 複数のパッケージがある場合は、それらをセミコロンで区切ってください(例. rfit 0.23.0; plotrix 3.6-6)。

  • <RDescription>Minimizes Jaeckel's dispersion function to obtain a rank-based solution for linear models.</RDescription>. R関数のヘルプ・ページの解説セクションの説明を含みます。

ステップ 2: XML テンプレートを保存

作業ディレクトリ XLSTAT-R\groups を見つけてください。これは通常、 %AppData%\ADDINSOFT\XLSTAT\XLSTAT-R\groups にあります。
Rfit フォルダを作成して、あなたのXMLテンプレートを rfit.xlmとして保存してください。フォルダは、メソッドグループ属性と一致するべきで、 XML ファイル名はメソッド関数属性と一致するべきです。
すべての開発プロセスを通して、あなたのプロジェクトがどのように XLSTAT-R インタフェース内で進展しているかを確認することを強く助言します。それをするには: 1. あなたのテンプレートを保存
2. XLSTATを開き、 Rメニューに行き、リフレッシュをクリックする。

3. R メニュー内であたなの機能を開く。​

ステップ 3: ユーザー・インタフェースに何を含むかを把握

入力を把握

ここでの最初に質問は、XLSTAT-R ユーザー・インタフェース(すなわちダイアログ・ボックス)にどんな入力を含めるか? です。できるだけシンプルなプロジェクトにするため、我々は R 関数の引数を入力として使用することにします。これらの引数を見ましょう。 R コンソールを開いて、Rfit ライブラリを読み込み、以下のコマンド・ラインをタイプして rfit 関数のヘルプを見ます:
> library(Rfit)
> ?rfit
ヘルプ・ドキュメントの Usage セクションの下に関数が見つかり、主要な関連引数と、各引数の意味の説明があります:
rfit(formula, data, subset, yhat0 = NULL, scores = Rfit::wscores, symmetric = FALSE, TAU = "F0", ...)
このチュートリアルでは、XLSTAT-Rエンジン内のモデルデータ構造のおかげで、XLSTATによりRの数式に自動的に融合されるデータを入力します。我々はユーザーが symmetric 論理引数や TAU 引数も操作できるようにします。

どのタブを含めるかを決定

ユーザー・インタフェース(すなわちダイアログ・ボックス)は、<!-- START USER INTERFACE --> セクションの下で設定されています。ユーザー・インタフェースは、タブで構成されています。ここで我々は、従来のXLSTAT のダイアログ・ボックス構造 : 一般, オプション, 欠損値, 出力 および チャートを含めることにします。

ステップ 4: 一般タブを設定

我々は一般タブの設定から始めます。このタブに、我々は主に次の項目を含めます: - 量的従属変数の入力;

  • 量的説明変数の入力;

  • 質的説明変数の入力;

  • オプションで、オブザベーション・ラベル。

データ入力フィールドを設定するために、一般の DataField ノードが使用できます。ただし、 XLSTAT-R は、Rの数式に融合されるべきデータを取り扱う特別なノードを持っています。これらのノードは、ユーザーがポイント・アンド・クリック・ダイアログ・ボックスを用いて、数式中に含む項と交互作用を設定できるようにする利点を持ちます。 我々はこれらの特別なノードを使用します。
タブは、下記のコードを用いて初期化されます:
<Tab text="#General" >
これは、XLSTAT内で文字列が複数の言語に翻訳されているGeneral を # sign に使用しています。XMLコードは、XLSTAT ディレクトリ内の文字列を見て、XLSTATの指定された言語でダイアログ・ボックスにそれを表示します。
下記のコードをタイプしてください:
<YQuantiField text="Dependent variable" controltip="Select your dependent variable" rname="data" />
<Spacer height="2" />
<XQuantiField rname="data" optional="true" optiondefault="true" />
<XQualiField rname="data" optional="true" optiondefault="false" />- YQuantiField は、量的従属変数の選択のためのフィールドを設定するXLSTAT-R の特別ノードです。text属性は、ダイアログ・ボックスに現れるキャプションを設定します。controltip属性は、ユーザーがフィールドの上にマウスを置いたときに現れるティップを設定します。rname 属性は、取り込まれたデータがストアされる R データ・フレームを設定します。

  • Spacer は、ダイアログ・ボックスの要素をお互いに分割するために使用されるノードです。height 属性は、ピクセルで設定されます。

  • XQuantiField および XQualifield は、Rの数式に含まれる量的および質的説明変数のフィールドを設定するXLSTAT-R の特別ノードです。それらは、デフォルトのtext 属性値を含みます。optional 属性は、フィールドをオプションにするためのチェック・ボックスを加えます。optiondefault 属性は、チェック・ボックスのデフォルト値を設定します。

こちらが、この時点でユーザー・インタフェースがどう見えるかです:
XLSTAT-R Rank Based Regression General tab first steps
それでは、一般タブの2番目の部分を設定して行きます。下記のコードをタイプしてください:
<NextColumn />
<VarHeaders text="Variable labels" />
<Spacer height="10" />
<ObsLabelsField rname="data" />
<Spacer height="6" />
</Tab>- NextColumn は、現在のタブ内でダイアログ・ボックスの右側に切り替えることを可能にします。

  • VarHeaders は、変数名が取り込まれているか、データ選択の途中かの状態の典型的なXLSTAT チェック・ボックスです。

  • ObsLabelsField も典型的なXLSTATデータ・フィールドで、ユーザーが行またはオブザベーション名を選択できます。ここで、取り込まれたラベルは、 R のdata オブジェクト内などで導入されます。

  • </Tab> は、一般タブの設定を閉じます。

これが、完成した一般タブです:
XLSTAT-R Rank-Based Regression Completed General Tab
それではオプションタブを設定して行きます。

ステップ 5: オプション・タブを設定

ここで我々は、 rfit モデルおよび symmetricTAU 引数を含めるために、ユーザーとの対話のコントロールを含めることにします。 - Symmetric は論理引数 (TRUE または FALSE)です。このフォームのデータを入力する最善の方法は、チェックボックスを描くことです。

  • TAU は、有限の値のリストから1つの値を取ることができます。ここでは、コンボ・ボックスが適切です。

<Tab text="#Options" >
<Interactions reportgroup="1" />
<CheckBox text="Symmetric" name="SymmetricAnalysis" rname="symmetric" default="false" reportgroup="2" />
<Spacer height="6" />
<ComboBox text="Routine" name="Routine" rname="TAU" default="0" left="55" width="100" reportgroup="3" >
<Item text="Fortran" rname="F0" />
<Item text="R" rname="R" />
<Item text="None" rname="N" />
</ComboBox>
<Spacer height="6" />
</Tab>- Interactions は、メインのダイアログ・ボックスでユーザーが交互作用の水準を選択できる特別な設定済みXLSTATノードです。OKをクリックすると、別のダイアログ・ボックスで含める交互作用を選択できます。 reportgroup オプション属性は、この入力を単純に結果のレポート内の設定要約に含めます。交互作用の水準は、設定要約リストを含めるために、第1要素 "1" になります。

  • symmetric 引数 CheckBoxノードは、複数の属性を含みます。name は、XLSTAT-Rの内部名です。rname は、入力がストアされる R オブジェクトです。 default は、チェックボックスのデフォルト値です。デフォルトでは、このチェックボックスは、symmetric と名付けられたRオブジェクトを生成して、FALSE 値を格納します。

  • TAU R 引数の値を設定するComboBoxノードは、項目メンバーを含みます。各項目は、可能な要素の引数のリストの要素を含みます。各項目内で、text 属性はコンボボックス内に表示されるテキストを設定します。rname 属性は、項目が選択されるとTAU オブジェクト内にストアされる値を含みます。ComboBox ノード内のデフォルト属性は、デフォルトで使用する項目のインデックスを含みます。このインデックスは0で始まります。この例の場合、デフォルト値は "F0"になります。 left は、コントロールが左に移動するピクセル数を設定します。 width は、コントロールの幅をピクセルで定義します。

XLSTAT-R Rank-Based Regression setting up the Options tab

ステップ 6: 欠損値タブを設定

我々はXMLテンプレート内のデフォルトの欠損値タブ設定を保持します。それらは、欠損値を取り扱うための特別なXLSTATオプションです。より詳細は、XLSTAT-R ドキュメンテーションを参照してください。
<Tab text="#Missing" leftcolumnwidth="220" >

</Tab>
欠損値を無視できるメソッドのために、リスト内で無視するの選択を追加することは有用です。
XLSTAT-R Rank-Based Regression Missing Data tab

ステップ 7: 出力およびチャートタブを設定

このチュートリアルでは、オリジナルのテンプレート内にある出力およびチャートタブのXMLコードを保持することを提案します。これは、 SPECIFICATION OF RESULTS TO DISPLAY IN EXCEL セクションで何が指定されるか(ステップ9)によって、タブ内のオプションが自動で生成されます。
以下はそのコードです:
<!-- OUTPUTS TAB OF THE DIALOG BOX -->
<Tab text="#Outputs" >
<AutoOutputs stats="true" />
</Tab>

<!-- CHARTS TAB OF THE DIALOG BOX -->
<Tab text="#Charts" >
<AutoCharts />
</Tab>
AutoOutputs ノードでは、XLSTAT エンジンが取り込まれたデータで記述統計を計算して表示するかどうかをstats属性が定義します。
結果レポート設定セクション (すなわち、Excelに表示する結果の指定)に切り替える前に、我々は、XMLテンプレートの下部のRコード・セクションにジャンプすることを提案します。コードが指定されると、結果の設定に戻ります。

ステップ 8: Rコードを書く

出力に表示する分析結果を選択

XLSTAT-R が結果として表示できる最も簡単な R オブジェクト・フォーマットは、データフレームです。 我々がどうやってデータフレームを抽出できるかを確認するためにrfit の基本の結果を見ましょう。
R コンソールを開いて、rfit のヘルプ・すくションに戻ります。下部の事例セクションでコードをコピー&ペーストします。
> library(Rfit)
> ?rfit
> data(baseball)
> data(wscores)
> fit<-rfit(weight~height,data=baseball)
> summary(fit)
Call:
rfit.default(formula = weight ~ height, data = baseball)

Coefficients:Estimate Std. Error t.value p.value(Intercept) -228.57144 56.14659 -4.0710 0.000146 ***height 5.71429 0.76018 7.5171 4.373e-10 ***

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Overall Wald Test: 56.50621 p-value: 0

Coefficients 表は、推定値(最初の列)と関係するp値(最後の列)を含むので、表示する価値がありそうです。
我々はどうやってこの指定表を抽出できるかを見ましょう。ヒント: names() 関数はしばしば R の複雑なオブジェクトから抽出できる要素を確認することを支援します。
> names(summary(fit))
[1] "coefficients" "waldstat" "waldpval" "overall.test" "call"
coefficients 要素は我々が探しているものを含んでいるようです。
> summary(fit)$coefficients
Estimate Std. Error t.value p.value
(Intercept) -228.571442 56.1465857 -4.070977 1.459710e-04
height 5.714286 0.7601755 7.517061 4.373127e-10
成功です!
これがデータフレームと一致しているかを確認しましょう:
> is.data.frame(summary(fit)$coefficients)
[1] FALSE This is not the case.
Consequently, the below transformation will be necessary at some point in the code:
> as.data.frame(summary(fit)$coefficients)

コードを書き上げる: ちょっとした準備ノート

R コードを書き上げるのは、通常、XML テンプレート (R CODE)の最後のセクション、RScriptノードの下で行います。RScript ノードは、Rコマンドラインを挿入できるScriptLine サブ・ノードを含みます。
XLSTAT-RでRコードを書くには2つの方法があります。RScripノードで、replacebyvalue 論理属性を用いて、相互に切り替えることができます。 - replacebyvalue="true": XLSTAT-R は、XMLコード内にあるrnames を、それらが ScriptLinesでコールされ、ScriptLinesでreplace 属性がtrueに設定されているなら、いつでも自動的にそれらの値に置き換えます。このメソッドは、R関数を模倣して XLSTAT-R 機能を素早くプログラムしたいときには適切です。さらなる結果を産出するこを目指して、より複雑なRコード内でRオブジェクトを操作したい場合には、それは限界があります。

  • replacebyvalue="false": XLSTAT-Rは、Rコードでのより柔軟な操作を可能にして、ダイアログ・ボックス入力をRオブジェクトに自動的にストアします。

このチュートリアルでは、XLSTAT-R テンプレートでRコードを書くために1番目のメソッドを使用します。

replacebyvalue="true"を用いてコードを書く

以下のコードをタイプしてください:
<RScript replacebyvalue="true" >
<ScriptLine replace="true" code="results=rfit(formula,data,symmetric,TAU)" />
<ScriptLine replace="true" code="results$CoefficientsDataFrame=as.data.frame(summary(results)$coefficients)" />
</RScript>
2つのスクリプト行があります。1番目のは rfit R 関数をコールします。formula オブジェクトは、モデル・データ構造のおかげでXLSTATにより自動で生成されます。 replacebyvalue="true" メソッドにより、後で含まれるすべてのエレメントがダ、イアログ・ボックスが実行されるたびに、ダイアログ・ボックスで入力されるそれらの値に置き換えられます。
XMLファイルで、表示する R の結果がresultオブジェクト内にストアされなければなりません。これはなぜ我々が1行目でresultオブジェクトを、resultオブジェクト内でCoefficientsDataFrame サブ・オブジェクトを生成するかの理由です。
以下は、このコードによる典型的な R スクリプトです。このスクリプトは、XLSTATで機能を実行するたびに、XLSTAT-R 作業ディレクトリで自動的に生成されます。スクリプト・ファイルはこちらのようになります: %AppData%\ADDINSOFT\XLSTAT\XLSTAT-R\datastore\Rfitresults\rfit.script.R > list.of.packages <- c('Rfit')

> new.packages<-list.of.packages[!(list.of.packages %in% installed.packages()[,'Package'])]

> if(length(new.packages)) install.packages(new.packages, repos='http://cran.us.r-project.org')

> library('Rfit');

> data<-read.csv(file='%AppData%/ADDINSOFT/XLSTAT/XLSTAT-R/datastore/data.csv', header=TRUE, sep=';', dec='.')

> results<-rfit(weight ~ +height,data,symmetric=FALSE,TAU='F0')

> results$CoefficientsDataFrame<-as.data.frame(summary(results)$coefficients)

> write.table(results$CoefficientsDataFrame, file = %AppData%/ADDINSOFT/XLSTAT/XLSTAT-R/datastore/Rfitresults/CoefficientsDataFrame.csv', na='', row.names =TRUE, quote=FALSE, sep=';', dec=',')

rfit() コマンド・ラインに注目して、エレメントがどのように自動で置き換えられたかを見ていきましょう。

ステップ 9: Excelに表示する出力のセットアップ

それでは結果レポートの設定セクション (すなわち、Excelに表示する結果の指定)に戻ります。このセクションは、RResults ノードを含みます。これは、出力タブに表示する結果の数だけ Result サブ・ノードを含みます。以下のコードを挿入してください:
<RResults>

</RResults>- text:は、出力での結果のタイトルを設定します;

  • rname: 表示するresults オブジェクトのエレメント、通常は data frame;

  • type: rnameエレメントにストアされるデータのタイプ;

  • rowlabels: 表示する result 行ラベル。 rdescで設定すると、R オブジェクト行ラベルが使用される;

  • collabels: 表示するresult 列ラベル。 rdescで設定すると、R オブジェクト列ラベルが使用される;

  • chartname (optional): この結果に基づいて表示するチャートの名前;

  • charttype: 表示するチャートのタイプ (可能性と詳細についてはdocumentation を参照)。 barchart(0/1) は棒グラフを表示する。 (0) は、表の行ラベルがバーのラベルとして使用され、 (1) は1番目の列 (coefficient estimates)が表示するデータとして使用されることを意味する.

このコードは、係数表と係数のとても簡単なXLSTAT 棒グラフを表示します。
これは明らかに、以下のコードを使っても、Rで 同様なチャートを生成することができます:
<RResults>
<Result text="Coefficients" rname="CoefficientsDataFrame" type="double" rowlabels="rdesc" collabels="rdesc" chartname="Coefficients chart, R style" charttype="r" rplotformat="emf" rplotcode="barplot(results$CoefficientsDataFrame[,1], names.arg=row.names(results$CoefficientsDataFrame), ylab='Estimates', xlab='Coefficients',main='Coefficients Bar Chart')" />
</RResults>
ここで、出力チャートタブを確認します。Result チェックボックスが自動で現れます:
XLSTAT-R Rank-Based Regression Outputs tab
XLSTAT-R Rank-Based Regression Charts tab
XML ファイルの下部で、以下のコードを用いてメソッド構造を閉じるのを忘れないでください:
</Method>

ステップ 10 XLSTATで新しい機能を使用する!

こちらは XLSTAT ANCOVA データセットでこの機能を実行したいくつかのスクリーンショットです:
R / Rfit / Rank-Based Regressionを開きます。

一般タブを以下のように記入します:
XLSTAT-R Rfit filling out the general tab
Activate the Interactions option in the Options tab.
XLSTAT-R Rank-Based Regression, Options tab
OKをクリックします。
表示されるダイアログ・ボックスで、モデルに含めたい項を選択してください:
XLSTAT-R Rank-Based regression, factors and interactions dialog box
保持したい項を選択して、OKをクリックしてください。
結果を解釈しましょう。
XLSTAT-R Rank Based regression coefficients
XLSTAT-R Rank Based Regression Coefficients Chart

この記事は役に立ちましたか?

  • ウイ
  • いいえ