オブジェクト ( sampleSelectionパッケージの関数selection
によって返される)を解析して、 ( Formula パッケージから) オブジェクトの構築に適合するようにしようとしています。selection
Formula
私が欲しいものの具体的な例を以下に示します。戦略を考えていますが、その戦略が機能するには、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$selection
とheckML$call$outcome
で利用できることを知っており、そのように使用できます
tempS = evalq(heckML$call$selection)
tempO = evalq(heckML$call$outcome)
as.Formula(paste0(tempO[2], '|', tempS[2], '~', tempO[3], '|', tempS[3]))
しかし、なぜこれが機能するのかわかりません。tempS
とtempO
は 型のオブジェクトであることに注意してくださいlanguage
。
a. オブジェクトと何evalq
をしlanguage
ますか?それは何をすることになっていますか?
b. オブジェクトはオブジェクトとどうlanguage
違うのexpression
ですか? いつどちらを使用するのですか?読書へのポインタを歓迎します。
最後に、 return objectからFormula
オブジェクトを生成するより良い方法があるかどうか疑問に思っていました。上記は機能する戦略の 1 つにすぎません。その理由を理解するまでは、基本的にハックです。FormHeck
heckML
ありがとう。