【发布时间】:2014-05-20 05:56:49
【问题描述】:
让我直接深入一个例子来说明我的问题:
rm(list=ls())
n <- 100
df <- data.frame(y=rnorm(n), x1=rnorm(n), x2=rnorm(n) )
fm <- lm(y ~ x1 + poly(x2, 2), data=df)
现在,我想看看以前使用的数据。这几乎可以通过使用
temp.data <- fm$model
但是,x2 将被拆分为 poly(x2,2),它本身就是一个数据框,因为它包含 x2 和 x2^2 的值。请注意,这里似乎包含x2,但由于多项式使用正交分量,temp.data$x2 与df$x2 不同。如果您在以下内容之后直观地比较变量,也可以看到这一点:new.dat <- cbind(df, fm$model)。
现在,一些问题:
首先,也是最重要的,有没有办法以原始形式从 lm 对象中检索 x2。或者更一般地说,如果某个函数f 已应用于 lm 公式中的某个变量,是否可以从 lm 对象中提取基础变量(无需进行特定于案例的数学运算)?请注意,我知道我可以通过其他方式检索数据,但我想知道我是否可以从 lm-object 本身中提取它。
其次,更笼统地说,既然我没有明确要求model.matrix(fm),为什么我会得到被操纵的数据?这背后的基本哲学是什么?有人知道吗?
第三,head(new.dat) 命令告诉我x2 已被分成两个部分。然而,当我输入View(new.dat) 时,我看到的只有一列。这让我感到困惑和难以置信。如何将两列表示为一列,为什么head 和View 之间存在差异?如果有人能解释一下,我将非常感激!
如果这些问题太基本,请道歉。在这种情况下,我将不胜感激任何指向相关手册的说明。
提前致谢!
【问题讨论】: