我正在尝试解析一个selection
对象(由sampleSelectionselection
包中的函数返回),以便它适合构造一个对象(来自Formula 包)。Formula
下面给出了我想要的一个具体例子。我有一个策略,但要使该策略发挥作用,我需要language
更好地理解 R 数据类型。
我基本上是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
andheckML$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
。
一个。evalq
对象有什么作用language
?它应该做什么?
湾。对象与对象有何language
不同expression
?什么时候使用?欢迎指点阅读。
最后,我想知道是否有更好的方法从返回对象填充Formula
对象。以上只是一种有效的策略,在我理解为什么之前,它基本上是一种 hack。FormHeck
heckML
谢谢。