當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。