family
位於 stats
包(package)。 說明
係列對象提供了一種方便的方法來指定 glm
等函數所使用的模型的詳細信息。有關如何進行此類模型擬合的詳細信息,請參閱 glm
的文檔。
用法
family(object, ...)
binomial(link = "logit")
gaussian(link = "identity")
Gamma(link = "inverse")
inverse.gaussian(link = "1/mu^2")
poisson(link = "log")
quasi(link = "identity", variance = "constant")
quasibinomial(link = "logit")
quasipoisson(link = "log")
參數
link |
模型鏈接函數的規範。這可以是名稱/表達式、文字字符串、長度為 1 的字符向量或
|
variance |
對於除 |
object |
函數 |
... |
進一步的參數傳遞給方法。 |
細節
family
是一個通用函數,具有類 "glm"
和 "lm"
的方法(後者返回 gaussian()
)。
對於 binomial
和 quasibinomial
係列,可以通過以下三種方式之一指定響應:
-
作為因子:‘success’ 被解釋為不具有第一級別的因子(因此通常具有第二級別)。
-
作為值介於
0
和1
之間的數值向量,解釋為成功案例的比例(案例總數由weights
給出)。 -
作為一個兩列整數矩陣:第一列給出成功的次數,第二列給出失敗的次數。
quasibinomial
和 quasipoisson
係列與 binomial
和 poisson
係列的不同之處僅在於色散參數不固定為 1,因此它們可以模擬過度色散。對於二項式情況,請參閱McCullagh 和 Nelder(1989 年,第 124-8 頁)。盡管它們表明(在某些限製下)存在一個模型,其方差與 quasi-binomial 模型中的均值成比例,但請注意,glm
不會計算該模型中的 maximum-likelihood 估計值。 S 的行為更接近準變體。
值
"family"
類的對象(具有簡潔的打印方法)。這是一個包含元素的列表
family |
性格:姓氏。 |
link |
字符:鏈接名稱。 |
linkfun |
函數:鏈接。 |
linkinv |
function:鏈接函數的反函數。 |
variance |
function:方差作為均值的函數。 |
dev.resids |
函數將每個觀測值的偏差作為 |
aic |
函數給出 AIC 值(如果適用)(但對於準係列為 |
mu.eta |
函數:inverse-link 函數相對於線性預測器的導數。如果 inverse-link 函數是 ,其中 是線性預測變量的值,則此函數返回 。 |
initialize |
表達。這需要設置該係列所需的任何數據對象以及 |
validmu |
邏輯函數。如果均值向量 |
valideta |
邏輯函數。如果線性預測變量 |
simulate |
(可選)函數 |
dispersion |
(可選,因為R版本 4.3.0) numeric:色散參數的值(如果固定),或 |
注意
link
和 variance
參數對於向後兼容性具有相當尷尬的語義。推薦的方法是將它們作為帶引號的字符串提供,但也可以不帶引號提供它們(作為名稱或表達式)。此外,它們可以作為長度為一的字符向量提供,給出選項之一的名稱,或者作為列表(對於 link
,屬於 "link-glm"
類)。這些限製僅適用於以名稱形式給出的鏈接:當以字符串形式給出時,接受 make.link
已知的所有鏈接。
這可能是不明確的:提供 link = logit
可能意味著鏈接的未加引號的名稱或對象 logit
的值。如果可能的話,它被解釋為允許的鏈接的名稱,然後解釋為對象。 (您可以通過 logit[1]
強製解釋始終為對象的值。)
例子
require(utils) # for str
nf <- gaussian() # Normal family
nf
str(nf)
gf <- Gamma()
gf
str(gf)
gf$linkinv
gf$variance(-3:4) #- == (.)^2
## Binomial with default 'logit' link: Check some properties visually:
bi <- binomial()
et <- seq(-10,10, by=1/8)
plot(et, bi$mu.eta(et), type="l")
## show that mu.eta() is derivative of linkinv() :
lines((et[-1]+et[-length(et)])/2, col=adjustcolor("red", 1/4),
diff(bi$linkinv(et))/diff(et), type="l", lwd=4)
## which here is the logistic density:
lines(et, dlogis(et), lwd=3, col=adjustcolor("blue", 1/4))
stopifnot(exprs = {
all.equal(bi$ mu.eta(et), dlogis(et))
all.equal(bi$linkinv(et), plogis(et) -> m)
all.equal(bi$linkfun(m ), qlogis(m)) # logit(.) == qlogis(.) !
})
## Data from example(glm) :
d.AD <- data.frame(treatment = gl(3,3),
outcome = gl(3,1,9),
counts = c(18,17,15, 20,10,20, 25,13,12))
glm.D93 <- glm(counts ~ outcome + treatment, d.AD, family = poisson())
## Quasipoisson: compare with above / example(glm) :
glm.qD93 <- glm(counts ~ outcome + treatment, d.AD, family = quasipoisson())
glm.qD93
anova (glm.qD93, test = "F")
summary(glm.qD93)
## for Poisson results (same as from 'glm.D93' !) use
anova (glm.qD93, dispersion = 1, test = "Chisq")
summary(glm.qD93, dispersion = 1)
## Example of user-specified link, a logit model for p^days
## See Shaffer, T. 2004. Auk 121(2): 526-540.
logexp <- function(days = 1)
{
linkfun <- function(mu) qlogis(mu^(1/days))
linkinv <- function(eta) plogis(eta)^days
mu.eta <- function(eta) days * plogis(eta)^(days-1) *
binomial()$mu.eta(eta)
valideta <- function(eta) TRUE
link <- paste0("logexp(", days, ")")
structure(list(linkfun = linkfun, linkinv = linkinv,
mu.eta = mu.eta, valideta = valideta, name = link),
class = "link-glm")
}
(bil3 <- binomial(logexp(3)))
## in practice this would be used with a vector of 'days', in
## which case use an offset of 0 in the corresponding formula
## to get the null deviance right.
## Binomial with identity link: often not a good idea, as both
## computationally and conceptually difficult:
binomial(link = "identity") ## is exactly the same as
binomial(link = make.link("identity"))
## tests of quasi
x <- rnorm(100)
y <- rpois(100, exp(1+x))
glm(y ~ x, family = quasi(variance = "mu", link = "log"))
# which is the same as
glm(y ~ x, family = poisson)
glm(y ~ x, family = quasi(variance = "mu^2", link = "log"))
## Not run: glm(y ~ x, family = quasi(variance = "mu^3", link = "log")) # fails
y <- rbinom(100, 1, plogis(x))
# need to set a starting value for the next fit
glm(y ~ x, family = quasi(variance = "mu(1-mu)", link = "logit"), start = c(0,1))
作者
The design was inspired by S functions of the same names described
in Hastie & Pregibon (1992) (except quasibinomial
and
quasipoisson
).
參考
McCullagh P. and Nelder, J. A. (1989) Generalized Linear Models. London: Chapman and Hall.
Dobson, A. J. (1983) An Introduction to Statistical Modelling. London: Chapman and Hall.
Cox, D. R. and Snell, E. J. (1981). Applied Statistics; Principles and Examples. London: Chapman and Hall.
Hastie, T. J. and Pregibon, D. (1992) Generalized linear models. Chapter 6 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.
也可以看看
對於二項式係數,choose
;二項式和負二項式分布 Binomial
和 NegBinomial
。
相關用法
- R factor.scope 計算在公式中添加或刪除時允許的更改
- R factanal 因子分析
- R formula 模型公式
- R friedman.test 弗裏德曼秩和檢驗
- R fitted 提取模型擬合值
- R ftable 扁平列聯表
- R ftable.formula 平麵列聯表的公式表示法
- R filter 時間序列的線性過濾
- R formula.nls 從 nls 對象中提取模型公式
- R fivenum 圖基五數摘要
- R fisher.test 計數數據的 Fisher 精確檢驗
- R fft 快速離散傅立葉變換 (FFT)
- R fligner.test 方差齊性的 Fligner-Killeen 檢驗
- R stlmethods STL 對象的方法
- R medpolish 矩陣的中值波蘭(穩健雙向分解)
- R naprint 調整缺失值
- R summary.nls 總結非線性最小二乘模型擬合
- R summary.manova 多元方差分析的匯總方法
- R nls.control 控製 nls 中的迭代
- R aggregate 計算數據子集的匯總統計
- R deriv 簡單表達式的符號和算法導數
- R kruskal.test Kruskal-Wallis 秩和檢驗
- R quade.test 四方測試
- R decompose 移動平均線的經典季節性分解
- R plot.stepfun 繪製階躍函數
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Family Objects for Models。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。