当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R model.frame 从公式或拟合中提取模型框架


R语言 model.frame 位于 stats 包(package)。

说明

model.frame(通用函数)及其方法返回 data.frame,其中包含使用 formula 和任何 ... 参数所需的变量。

用法

model.frame(formula, ...)

## Default S3 method:
model.frame(formula, data = NULL,
            subset = NULL, na.action = na.fail,
            drop.unused.levels = FALSE, xlev = NULL, ...)

## S3 method for class 'aovlist'
model.frame(formula, data = NULL, ...)

## S3 method for class 'glm'
model.frame(formula, ...)

## S3 method for class 'lm'
model.frame(formula, ...)

get_all_vars(formula, data, ...)

参数

formula

一个模型formula或者terms对象或R对象。

data

data.frame、列表或环境(或由 as.data.frame 强制转换为 data.frame 的对象),包含 formula 中的变量。矩阵和数组都不会被接受。

subset

要使用的行的规范:默认为所有行。这可以是 data 行的任何有效索引向量(请参阅 [.data.frame ),或者如果未提供,则为由 formula 中使用的变量组成的数据帧。 (有关此参数如何与 data-dependent 碱基相互作用的更多详细信息,请参阅下面的“详细信息”。)

na.action

如何处理NA。默认值是第一个 data 的任何 na.action 属性,第二个 optionsna.action 设置,第三个 na.fail (如果未设置)。 ‘factory-fresh’默认为na.omit。另一个可能的值是 NULL

drop.unused.levels

未使用的因子是否应该下降?默认为 FALSE

xlev

指定的字符向量列表,给出每个因子假定的完整级别集。

...

对于 model.frame 方法,混合更多参数,例如 datana.actionsubset 传递给默认方法。到达默认方法的任何其他参数(例如 offsetweights 或其他命名参数)都用于在模型框架中创建更多列,其名称带括号,例如 "(offset)"

对于 get_all_vars ,进一步命名要包含在模型框架中的列。

细节

到底发生什么取决于对象 formula 的类和属性。如果这是 fitted-model 类的对象,例如 "lm" ,该方法将返回拟合模型时使用的保存的模型框架(如果有,通常由参数 model = TRUE 选择)或传递拟合时使用的调用到默认方法。如果没有提供其他参数,默认方法本身可以处理相当标准的模型对象,例如包 MASS 中的类 "lqs" 的对象。

本节的其余部分仅适用于默认方法。

如果formuladata 已经是模型框架(具有"terms" 属性的 DataFrame 架),而另一个缺失,则返回模型框架。除非 formula 是一个术语对象,否则会调用 as.formula,然后调用 terms。 (如果您希望使用 terms.formulakeep.order 参数,请传递术语对象而不是公式。)

模型框架的行名称取自 data 参数(如果存在),然后取自公式中的响应名称(如果是矩阵,则取自行名称)(如果有)。

中的所有变量formula,subset并在...首先在data然后在环境中formula(请参阅帮助formula()了解更多详细信息)并收集到 DataFrame 中。然后subset计算表达式,并将其用作 DataFrame 的行索引。然后na.action函数应用于 DataFrame (并且很可能添加属性)。 DataFrame 中任何因子的水平都根据drop.unused.levelsxlev参数:如果xlev指定一个因子并找到一个字符变量,将其转换为一个因子(如R2.10.0)。

由于公式中的变量是在基于 subset 删除行之前进行评估的,因此 data-dependent 基的特征,例如正交多项式(即使用 poly 的项)或样条线将基于完整数据集而不是计算子集化的一个。

除非 na.action = NULL ,否则时间序列属性将从找到的变量中删除(因为如果删除 NA ,它们将是错误的)。

请注意,公式中的所有变量都包含在 DataFrame 中,即使是前面带有 - 的变量。

只有类型为原始、逻辑、整数、实数、复数或字符的变量才能包含在模型框架中:这包括分类变量,例如因子(其基础类型为整数),但不包括列表。

get_all_vars 返回 data.frame,其中包含 formula 中使用的变量以及 ... 中指定的变量,这些变量将被回收到数据帧行数。与 model.frame.default 不同,它返回输入变量,而不是 formula 中函数调用产生的变量。

data.frame 包含 formula 中使用的变量以及 ... 中指定的变量。它将具有其他属性,包括 "terms" 用于从 formula 派生的类 "terms" 的对象,并且可能 "na.action" 提供有关 NA 的处理信息(如果没有特殊处理,则不会出现)完成,例如通过 na.pass )。

例子

data.class(model.frame(dist ~ speed, data = cars))

## get_all_vars(): new var.s are recycled (iff length matches: 50 = 2*25)
ncars <- get_all_vars(sqrt(dist) ~ I(speed/2), data = cars, newVar = 2:3)
stopifnot(is.data.frame(ncars),
          identical(cars, ncars[,names(cars)]),
          ncol(ncars) == ncol(cars) + 1)

参考

Chambers, J. M. (1992) Data for models. Chapter 3 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

也可以看看

model.matrix 用于“设计矩阵”,formula 用于公式,expand.model.frame 用于 model.frame 操作。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Extracting the Model Frame from a Formula or Fit。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。