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


R sparse.model.matrix 構造稀疏設計/模型矩陣


R語言 sparse.model.matrix 位於 Matrix 包(package)。

說明

根據公式和數據幀 (sparse.model.matrix) 或單個因子 (fac2sparse) 構建稀疏模型或 “design” 矩陣。

fac2[Ss]parse() 函數是實用程序,也在主要用戶級函數 sparse.model.matrix() 內部使用。

用法

sparse.model.matrix(object, data = environment(object),
		    contrasts.arg = NULL, xlev = NULL, transpose = FALSE,
		    drop.unused.levels = FALSE, row.names = TRUE,
		    sep = "", verbose = FALSE, ...)

fac2sparse(from, to = c("d", "l", "n"),
	   drop.unused.levels = TRUE, repr = c("C", "R", "T"), giveCsparse)
fac2Sparse(from, to = c("d", "l", "n"),
	   drop.unused.levels = TRUE, repr = c("C", "R", "T"), giveCsparse,
	   factorPatt12, contrasts.arg = NULL)

參數

object

適當類的對象。對於默認方法,模型公式或術語對象。

data

使用 model.frame 創建的 DataFrame 。如果是另一種對象,則首先調用model.frame

contrasts.arg
對於sparse.model.matrix()

一個列表,其條目是適合輸入到 contrasts 替換函數的對比,其名稱是包含 factordata 的列的名稱。

對於fac2Sparse()

字符串或 NULL 或(可強製轉換為)"sparseMatrix" ,指定要應用於因子級別的對比度。

xlev

如果data 沒有"terms" 屬性,則用作model.frame 的參數。

transpose

邏輯指示是否應返回轉置;如果無論如何使用轉置,設置transpose = TRUE會更有效。

drop.unused.levels

未使用的因子是否應該下降?默認為sparse.model.matrix已更改為FALSE,2010-07,為了兼容R的標準(密集)model.matrix().

row.names

邏輯指示是否應使用行名稱。

sep

根據變量名稱及其級別構造列名稱時,character 字符串傳遞給 paste()

verbose

邏輯或整數指示是否應打印(以及多少)進度輸出。

...

傳入或傳出其他方法的進一步參數。

from

(對於 fac2sparse() :) 一個 factor

to

指示要返回的稀疏矩陣的“kind”的字符。默認值 "d" 適用於 double

giveCsparse

已棄用,替換為 repr ;邏輯指示結果是否必須是 CsparseMatrix

repr

character 字符串, "C""T""R" 之一,指定用於結果的稀疏表示,即來自超類 CsparseMatrixTsparseMatrixRsparseMatrix 之一。

factorPatt12

邏輯向量,例如 fp ,長度為 2;當fp[1]為真時,返回“contrasted” t(X);當 fp[2] 為 true 時,原始 (“dummy”) t(X) ,即 fac2sparse() 的結果。

稀疏矩陣,擴展 CsparseMatrix (對於 fac2sparse() 如果默認為 repr = "C" ;否則為 TsparseMatrixRsparseMatrix )。

對於 fac2Sparse() ,長度為 2 的 list,兩個分量都具有相應的轉置模型矩陣,其中相應的 factorPatt12 為 true。

fac2sparse()sparse.model.matrix() 的基本主力,返回模型矩陣的轉置 (t )。

注意

MatrixModels 包中的 model.Matrix(sparse = TRUE) 如今可能比 sparse.model.matrix 更好,因為 model.Matrix 返回類 modelMatrix 的對象,並帶有與模型變量相關的附加槽 assigncontrasts

例子


dd <- data.frame(a = gl(3,4), b = gl(4,1,12))# balanced 2-way
options("contrasts") # the default:  "contr.treatment"
sparse.model.matrix(~ a + b, dd)
sparse.model.matrix(~ -1+ a + b, dd)# no intercept --> even sparser
sparse.model.matrix(~ a + b, dd, contrasts = list(a="contr.sum"))
sparse.model.matrix(~ a + b, dd, contrasts = list(b="contr.SAS"))

## Sparse method is equivalent to the traditional one :
stopifnot(all(sparse.model.matrix(~    a + b, dd) ==
	          Matrix(model.matrix(~    a + b, dd), sparse=TRUE)),
	      all(sparse.model.matrix(~0 + a + b, dd) ==
	          Matrix(model.matrix(~0 + a + b, dd), sparse=TRUE)))


(ff <- gl(3,4,, c("X","Y", "Z")))
fac2sparse(ff) #  3 x 12 sparse Matrix of class "dgCMatrix"
##
##  X  1 1 1 1 . . . . . . . .
##  Y  . . . . 1 1 1 1 . . . .
##  Z  . . . . . . . . 1 1 1 1

## can also be computed via sparse.model.matrix():
f30 <- gl(3,0    )
f12 <- gl(3,0, 12)
stopifnot(
  all.equal(t( fac2sparse(ff) ),
	    sparse.model.matrix(~ 0+ff),
	    tolerance = 0, check.attributes=FALSE),
  is(M <- fac2sparse(f30, drop= TRUE),"CsparseMatrix"), dim(M) == c(0, 0),
  is(M <- fac2sparse(f30, drop=FALSE),"CsparseMatrix"), dim(M) == c(3, 0),
  is(M <- fac2sparse(f12, drop= TRUE),"CsparseMatrix"), dim(M) == c(0,12),
  is(M <- fac2sparse(f12, drop=FALSE),"CsparseMatrix"), dim(M) == c(3,12)
 )

作者

Doug Bates and Martin Maechler, with initial suggestions from Tim Hesterberg.

也可以看看

model.matrix包裝內stats, 底座的一部分R.

MatrixModels 中的model.Matrix;看注釋'。

as(f, "sparseMatrix") (請參閱類文檔 sparseMatrix 中的 coerce(from = "factor", ..) )為單個因子 f 生成轉置稀疏模型矩陣(無對比)。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Construct Sparse Design / Model Matrices。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。