2

オブジェクト ( sampleSelectionパッケージの関数selectionによって返される)を解析して、 ( Formula パッケージから) オブジェクトの構築に適合するようにしようとしています。selectionFormula

私が欲しいものの具体的な例を以下に示します。戦略を考えていますが、その戦略が機能するには、R のlanguageデータ型をもう少しよく理解する必要があります。

language基本的に、以下のコンテキストで R データ型/オブジェクトの説明を探しています。

次に例を示します。

library(Formula)
library(sampleSelection)
data(Mroz87)
# define a new variable
Mroz87$kids  = (Mroz87$kids5 + Mroz87$kids618 > 0)
# create the estimation sample
Mroz87Est = Mroz87[1:600, ]
# create the hold out sample
Mroz87Holdout = Mroz87[601:nrow(Mroz87), ]
# estimate the model using MLE
heckML =  selection(selection = lfp ~ age + I(age^2) + faminc + kids + educ,
         outcome = wage ~ exper + I(exper^2) + educ + city, data = Mroz87Est) 
summary(heckML)  

このコードは Heckman サンプル選択モデルを推定し、クラス のモデル オブジェクトselectionは で使用できますheckML。への呼び出しで見ることができる複雑な構造を持っていますstr(heckML)

Formulaオブジェクトからプログラムでこのようなオブジェクトを作成できるようにする必要がありselectionますheckML

FormHeck = Formula(lfp |  wage ~ age + I(age^2) + faminc + kids + educ | 
                     exper + I(exper^2) + educ + city)

ダウンストリーム処理用。

これを設定するために必要なすべてのコンポーネントがheckML$call$selectionheckML$call$outcomeで利用できることを知っており、そのように使用できます

tempS = evalq(heckML$call$selection)
tempO = evalq(heckML$call$outcome)

as.Formula(paste0(tempO[2], '|', tempS[2], '~', tempO[3], '|', tempS[3]))

しかし、なぜこれが機能するのかわかりません。tempStempOは 型のオブジェクトであることに注意してくださいlanguage

a. オブジェクトと何evalqをしlanguageますか?それは何をすることになっていますか?
b. オブジェクトはオブジェクトとどうlanguage違うのexpressionですか? いつどちらを使用するのですか?読書へのポインタを歓迎します。

最後に、 return objectからFormulaオブジェクトを生成するより良い方法があるかどうか疑問に思っていました。上記は機能する戦略の 1 つにすぎません。その理由を理解するまでは、基本的にハックです。FormHeckheckML

ありがとう。

4

0 に答える 0