R:解析语言对象以获得公式

时间:2014-04-09 06:15:27

标签: r systemfit

我正在尝试解析selection对象(由sampleSelection包中的selection函数返回),以便它适合构建Formula}对象(来自Formula package)。

下面给出了我想要的具体例子。我有一个策略,但要使该策略有效,我需要更好地理解R language数据类型。

我基本上在下面的上下文中寻找R language数据类型/对象的解释。

以下是一个例子:

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]))

但我不知道为什么会这样。请注意,tempStempOlanguage类型的对象。

一个。 evalqlanguage对象做了什么?该怎么办?
language对象与expression对象有何不同?什么时候使用? 欢迎阅读指针。

最后,我想知道是否有更好的方法来填充返回对象Formula的{​​{1}}对象FormHeck。以上只是一个有效的策略,直到我理解为什么,它基本上是一个黑客。

感谢。

0 个答案:

没有答案