smooth2random
位於 mgcv
包(package)。 說明
用於將 mgcv
平滑對象轉換為適合估計為隨機效應的形式的通用函數,例如lme
。主要導出供其他包開發人員使用。
用法
smooth2random(object,vnames,type=1)
參數
object |
|
vnames |
避免作為隨機效應形式中的虛擬變量名稱的名稱向量。 |
type |
|
細節
平滑效應和隨機效應之間存在二元性,這意味著可以使用混合建模軟件來估計平滑效應。例如,此函數將標準 mgcv
平滑對象轉換為適合 lme
估計的形式。導出供包開發人員使用的 gamm
服務例程。請參閱為新數據創建預測矩陣的示例,對應於 type=2
時返回的隨機效應矩陣和固定效應矩陣。
值
一個列表。
rand |
隨機效應列表,包括分組因子和固定效應矩陣。將因子、模型矩陣和模型矩陣名稱作為屬性附加到每個元素。或者,對於 |
trans.D |
一個向量,trans.D,將 coefs 按順序 [rand1, rand2,...fix] 轉換回原始參數化。如果為空,則作為 1 的向量。 |
trans.U |
一個矩陣,trans.U,將 coefs 按順序 [rand1, rand2,...fix] 轉換回原始參數化。如果為空,則不需要。如果為空則視為身份。 |
Xf |
固定效應矩陣(如果有)。 |
fixed |
|
rind |
一個索引向量,如果 br 是該項的隨機係數向量,則 br[rind] 是該項的有序係數。 |
pen.ind |
懲罰每個係數的索引:0表示未懲罰。 |
例子
## Simple type 1 'lme' style...
library(mgcv)
x <- runif(30)
sm <- smoothCon(s(x),data.frame(x=x))[[1]]
smooth2random(sm,"")
## Now type 2 'lme4' style...
z <- runif(30)
dat <- data.frame(x=x,z=z)
sm <- smoothCon(t2(x,z),dat)[[1]]
re <- smooth2random(sm,"",2)
str(re)
## For prediction after fitting we might transform parameters back to
## original parameterization using 'rind', 'trans.D' and 'trans.U',
## and call PredictMat(sm,newdata) to get the prediction matrix to
## multiply these transformed parameters by.
## Alternatively we could obtain fixed and random effect Prediction
## matrices corresponding to the results from smooth2random, which
## can be used with the fit parameters without transforming them.
## The following shows how...
s2rPred <- function(sm,re,data) {
## Function to aid prediction from smooths represented as type==2
## random effects. re must be the result of smooth2random(sm,...,type=2).
X <- PredictMat(sm,data) ## get prediction matrix for new data
## transform to r.e. parameterization
if (!is.null(re$trans.U)) X <- X%*%re$trans.U
X <- t(t(X)*re$trans.D)
## re-order columns according to random effect re-ordering...
X[,re$rind] <- X[,re$pen.ind!=0]
## re-order penalization index in same way
pen.ind <- re$pen.ind; pen.ind[re$rind] <- pen.ind[pen.ind>0]
## start return object...
r <- list(rand=list(),Xf=X[,which(re$pen.ind==0),drop=FALSE])
for (i in 1:length(re$rand)) { ## loop over random effect matrices
r$rand[[i]] <- X[,which(pen.ind==i),drop=FALSE]
attr(r$rand[[i]],"s.label") <- attr(re$rand[[i]],"s.label")
}
names(r$rand) <- names(re$rand)
r
} ## s2rPred
## use function to obtain prediction random and fixed effect matrices
## for first 10 elements of 'dat'. Then confirm that these match the
## first 10 rows of the original model matrices, as they should...
r <- s2rPred(sm,re,dat[1:10,])
range(r$Xf-re$Xf[1:10,])
range(r$rand[[1]]-re$rand[[1]][1:10,])
作者
Simon N. Wood simon.wood@r-project.org.
參考
Wood S.N. (2017) Generalized Additive Models: An Introduction with R (2nd edition). Chapman and Hall/CRC Press.
也可以看看
相關用法
- R smooth.construct.cr.smooth.spec GAM 中的懲罰三次回歸樣條
- R smooth.construct.bs.smooth.spec GAM 中的懲罰 B 樣條
- R smooth.construct GAM 中平滑項的構造函數
- R smooth.construct.sz.smooth.spec GAM 中的約束因子平滑交互
- R smooth.construct.re.smooth.spec GAM 中的簡單隨機效應
- R smooth.info 提供有關平滑規範的額外信息的通用函數
- R smooth.construct.mrf.smooth.spec 馬爾可夫隨機場平滑
- R smooth.construct.gp.smooth.spec 低階高斯過程平滑
- R smooth.construct.tp.smooth.spec GAM 中的懲罰薄板回歸樣條
- R smooth.construct.ad.smooth.spec GAM 中的自適應平滑
- R smooth.construct.so.smooth.spec 皂膜平滑劑
- R smooth.construct.ds.smooth.spec 低階 Duchon 1977 樣條
- R smooth.construct.fs.smooth.spec GAM 中平滑交互的因子
- R smooth.construct.ps.smooth.spec GAM 中的 P 樣條
- R smooth.construct.sos.smooth.spec 球體上的樣條線
- R smooth.construct.tensor.smooth.spec 張量積平滑構造函數
- R smooth.construct.t2.smooth.spec 張量積平滑構造函數
- R smoothCon GAM 平滑項的預測/構造包裝函數
- R smooth.terms GAM 中的平滑術語
- R scat 用於重尾數據的 GAM 縮放 t 係列
- R slanczos 計算對稱矩陣的截斷特征分解
- R single.index 具有 mgcv 的單指數模型
- R sp.vcov 從 (RE)ML GAM 擬合中提取平滑參數估計器協方差矩陣
- R shash Sinh-arcsinh 位置比例和形狀模型族
- R s 在 GAM 公式中定義平滑
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Convert a smooth to a form suitable for estimating as random effect。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。