R包mgcv的广义加模型函数gam()
- 格式:docx
- 大小:21.99 KB
- 文档页数:6
r语言分组拟合曲线在R语言中,可以使用不同的函数和包来进行分组拟合曲线。
下面我将从多个角度介绍几种常用的方法。
1. 使用基本的统计函数:R语言中的基本统计函数如`lm()`和`loess()`可以用于拟合曲线。
`lm()`函数用于拟合线性回归模型,可以通过添加多项式项来拟合非线性曲线。
例如,可以使用`lm(y ~ poly(x, degree))`来拟合x和y之间的多项式关系,其中degree是多项式的阶数。
`loess()`函数用于拟合局部加权平滑曲线,可以通过调整span参数来控制平滑程度。
2. 使用ggplot2包:ggplot2是R语言中常用的数据可视化包,可以通过它进行分组拟合曲线的绘制。
首先,需要将数据按照分组变量进行分组,然后使用`geom_smooth()`函数来拟合曲线。
例如,可以使用`geom_smooth(method = "lm")`来拟合线性回归曲线,或者使用`geom_smooth(method = "loess")`来拟合局部加权平滑曲线。
3. 使用nlme包:nlme包是R语言中用于拟合非线性混合效应模型的包,可以用于拟合分组拟合曲线。
首先,需要定义一个适当的非线性模型,然后使用`nlme()`函数进行模型拟合。
例如,可以使用`nlme(y ~f(x, params), data = df, fixed = params ~ group, random =~1 | group)`来拟合带有分组效应的非线性模型,其中f()是非线性函数,params是模型参数,group是分组变量。
4. 使用mgcv包:mgcv包是R语言中用于拟合广义可加模型的包,可以用于拟合分组拟合曲线。
首先,需要定义一个适当的广义可加模型,然后使用`gam()`函数进行模型拟合。
例如,可以使用`gam(y ~ s(x, by = group), data = df)`来拟合带有分组效应的平滑曲线,其中s()是平滑函数,by参数指定按照分组变量进行平滑。
R语⾔实现⼴义加性模型GeneralizedAdditiveModels(GAM)⼊门转载请说明。
下⾯进⾏⼀个简单的⼊门程序学习。
先新建⼀个txt,叫做 Rice_insect.txt ,内容为:(⽤制表符Tab)Year Adult Day Precipitation1973 27285 15 387.31974 239 14 126.31975 6164 11 165.91976 2535 24 184.91977 4875 30 166.91978 9564 24 146.01979 263 3 24.01980 3600 21 23.01981 21225 13 167.01982 915 12 67.01983 225 17 307.01984 240 40 295.01985 5055 25 266.01986 4095 15 115.01987 1875 21 140.01988 12810 32 369.01989 5850 21 167.01990 4260 39 270.8 Adult为累计蛾量,Day为降⾬持续天数,Precipitation为降⾬量。
输⼊代码:library(mgcv) #加载mgcv软件包,因为gam函数在这个包⾥Data <- read.delim("Rice_insect.txt") #读取txt数据,存到Data变量中Data <- as.matrix(Data) #转为矩阵形式#查看Data数据:Data,查看第2列:Data[,2],第2⾏:Data[2,]Adult<-Data[,2]Day<-Data[,3]Precipitation<-Data[,4]result1 <- gam(log(Adult) ~ s(Day)) #此时,Adult为相应变量,Day为解释变量summary(result1) #输出计算结果 此时可以看到:Family: gaussianLink function: identityFormula:log(Adult) ~ s(Day)Parametric coefficients:Estimate Std. Error t value Pr(>|t|)(Intercept) 7.9013 0.3562 22.18 4.83e-13 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Approximate significance of smooth terms:edf Ref.df F p-values(Day) 1.713 2.139 0.797 0.473R-sq.(adj) = 0.0471 Deviance explained = 14.3%GCV score = 2.6898 Scale est. = 2.2844 n = 18Day的影响⽔平p-value=0.473,解释能⼒为14.3%,说明影响不明显。
Generalized additive models with integrated smoothness estimation广义加性模型与集成的平滑估计描述----------Description----------Fits a generalized additive model (GAM) to data, the term "GAM" being taken to include any quadratically penalized GLM. The degree of smoothness of model terms is estimated as part of fitting. gam can also fit any GLM subject to multiple quadratic penalties (including estimation of degree of penalization). Isotropic or scale invariant smooths of any number of variables are available as model terms, as are linear functionals of such smooths; confidence/credible intervals are readily available for any quantity predicted using a fitted model; gam is extendable: users can add smooths.适合一个广义相加模型(GAM)的数据,“GAM”被视为包括任何二次处罚GLM。
模型计算的平滑度估计作为拟合的一部分。
gam也可以适用于任何GLM多个二次处罚(包括估计程度的处罚)。
各向同性或规模不变平滑的任意数量的变量的模型计算,这样的线性泛函平滑的信心/可信区间都是现成的使用拟合模型预测任何数量,“gam是可扩展的:用户可以添加平滑。
你这也没分析啊,就是用head命令把前6行输出出来了。
你是说你用广义加性模型gam——gam(formula,family=gaussian(),data=list(),weights=NULL,subset=NULL, na.action,offset=NULL,method="GCV.Cp",optimizer=c("outer","newton"),control=list(),scale=0,select=FALSE,knots=NULL,sp=NULL,min.sp=NULL,H=NULL,gamma=1, fit=TRUE,paraPen=NULL,G=NULL,in.out,...)1. formula:GAM的公式2. family:服从的分布3. data:所需的一个数据框或列表包含模型响应变量,协变量4. weights:现有的数据上的权重5. subset:可以使用的观测值的一个子集。
6. na.action:一个函数,它表示时会发生什么数据包含“NA”。
7. offset:模型偏移量8. control:控制参数,以取代默认值返回gam.control9. method:平滑参数估计方法10. optimizer:指定的数值优化方法11. scale:如果这是正的,尺度参数;负的,规模参数未知。
0说明是泊松分布和二项分布和未知的,否则,尺度参数为1。
12. select:如果这是TRUE然后gam可以添加一个额外的惩罚变量,以每学期,以便它可以被扣分零。
这意味着平滑参数估计是拟合的一部分的,可以完全除去从模型中的条款。
如果相应的平滑参数估计值为零,那么额外的惩罚没有任何效果。
下面是一个例子——Family: gaussianLink function: identityFormula:y ~ s(x0) + s(x1) + s(x2) + s(x3)Parametric coefficients:Estimate Std. Error t value Pr(>|t|) #线性变量的回归系数和显著性检验结果(Intercept) 7.83328 0.09878 79.3 <2e-16 ***p值<0.05,没有通过原假设,有显著的统计意义。
gamm模型的回归代码和方法Gamm模型,全称为Generalized Additive Mixed Model,是一种广义可加混合模型。
它结合了广义线性模型(Generalized Linear Model,GLM)和广义可加模型(Generalized Additive Model,GAM),同时考虑了固定效应和随机效应。
Gamm模型在许多实际问题中广泛应用,尤其适用于非线性关系和具有复杂结构的数据。
GAM模型是一种非参数的回归模型,它通过将预测变量的非线性部分用平滑函数来建模。
GAM模型的基本思想是,将自变量的非线性关系分解为一系列平滑的函数,然后将这些函数与线性部分结合起来,以建立预测模型。
通过使用平滑函数,GAM模型能够捕捉到自变量与因变量之间的非线性关系,并且能够较好地适应数据。
GAM模型通常使用的平滑函数有很多种,其中一种常用的平滑函数是样条函数。
样条函数是一种通过在数据上拟合分段多项式来建模非线性关系的方法。
在R语言中,我们可以使用mgcv包来拟合GAM 模型,并使用gam函数来建立模型。
下面是一个使用gamm模型进行回归分析的例子:```R# 导入mgcv包library(mgcv)# 读取数据data <- read.csv("data.csv")# 建立gamm模型model <- gamm(y ~ s(x1) + s(x2) + s(x3) + (1 | random_effect), data = data)# 查看模型结果summary(model)```在这个例子中,我们假设y是因变量,x1、x2、x3是自变量,random_effect是随机效应。
通过使用gamm函数,我们可以将自变量的非线性关系用样条函数来建模,同时考虑随机效应的影响。
在建立模型之后,我们可以使用summary函数来查看模型的结果。
summary函数会给出模型的系数估计值、标准误差、显著性水平等信息,帮助我们评估模型的拟合效果和变量的重要性。
generalizedadditivemodels -回复什么是广义加性模型(Generalized Additive Models)?广义加性模型(Generalized Additive Models,缩写为GAMs)是一种统计模型,用于建立变量之间的非线性关系。
GAMs与传统的线性模型相比,具有更好的灵活性和解释性,可以更有效地拟合数据。
GAMs适用于依赖变量具有非线性关系的问题,并且可以处理不同类型的变量,包括连续变量、分类变量和定量变量。
在本文中,我们将详细介绍GAMs的原理、应用和优势。
1. GAMs的基本原理GAMs是通过将多个非线性函数组合到一个统一的模型中,来建立自变量和因变量之间的关系。
具体而言,GAMs模型可以表示为:y = β0 + f1(x1) + f2(x2) + ... + fp(xp) + ε其中,y是因变量,x1到xp是自变量,f1到fp是平滑函数,β0是常数项,ε是误差项。
平滑函数是用来拟合自变量和因变量之间的非线性关系的。
2. GAMs的应用领域GAMs在许多领域都有广泛的应用。
例如,在生态学中,GAMs被用来研究物种分布与环境变量之间的关系。
在金融学中,GAMs被用来建立股票价格与市场指数之间的非线性关系。
在医学研究中,GAMs被用来研究生物标志物与疾病之间的关系。
总的来说,GAMs可以适用于任何变量之间存在非线性关系的问题。
3. GAMs的优势相比于传统的线性模型,GAMs具有以下几个优势:- 非线性关系建模:GAMs能够更好地拟合数据中的非线性关系,这使得模型更加准确和灵活。
- 可解释性:GAMs能够将每个自变量的效果以函数的形式表示出来,这使得模型的解释性更强。
- 处理不同类型的变量:GAMs可以处理连续变量、分类变量和定性变量,不需要对变量进行额外的编码处理。
- 交互效应建模:GAMs能够捕捉变量之间的交互效应,这对于理解变量之间的复杂关系非常重要。
R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归原文链接:/?p=208821导言这篇文章探讨了为什么使用广义相加模型是一个不错的选择。
为此,我们首先需要看一下线性回归,看看为什么在某些情况下它可能不是最佳选择。
2回归模型假设我们有一些带有两个属性Y和X的数据。
如果它们是线性相关的,则它们可能看起来像这样:a<-ggplot(my_data, aes(x=X,y=Y))+geom_point()+为了检查这种关系,我们可以使用回归模型。
线性回归是一种使用X来预测变量Y的方法。
将其应用于我们的数据将预测成红线的一组值:a+geom_smooth(col="red", method="lm")+这就是“直线方程式”。
根据此等式,我们可以从直线在y轴上开始的位置(“截距”或α)开始描述,并且每个单位的x都增加了多少y(“斜率”),我们将它称为x的系数,或称为β)。
还有一点自然的波动,如果没有的话,所有的点都将是完美的。
我们将此称为“残差”(ϵ)。
数学上是:或者,如果我们用实际数字代替,则会得到以下结果:这篇文章通过考虑每个数据点和线之间的差异(“残差)然后最小化这种差异来估算模型。
我们在线的上方和下方都有正误差和负误差,因此,通过对它们进行平方并最小化“平方和”,使它们对于估计都为正。
这称为“普通最小二乘法”或OLS。
3非线性关系如何?因此,如果我们的数据看起来像这样,我们该怎么办:我们刚刚看到的模型的关键假设之一是y和x线性相关。
如果我们的y不是正态分布的,则使用广义线性模型 _(Nelder&Wedderburn,1972)_,其中y通过链接函数进行变换,但再次假设f(y)和x线性相关。
如果不是这种情况,并且关系在x的范围内变化,则可能不是最合适的。
我们在这里有一些选择:•我们可以使用线性拟合,但是如果这样做的话,我们会在数据的某些部分上面或者下面。
基于GAM_Tweedie模型的车险定价研究摘要:广义线性模型作为车险费率厘定的主流方法,其假设协变量的影响为预测函数的线性形式,但在实际的情况下,许多对索賠频率、索賠强度或纯保费的影响因素不仅仅是表现成线性形式的,单纯地用线性估计会造成一些变量的不显著而丢失重要影响因素。
本文以一组汽车保险损失数据为样本,建立Tweedie广义加法模型,通过与Tweedie广义线性模型对比,表明Tweedie广义加法模型可以更好的解释各因素对索赔额的影响。
关键词:广义线性模型,车险费率厘定,Tweedie分布,广义加法模型一、引言车险定价实则是对索赔频率、索赔强度或纯保费进行预测。
在车险定价实务中,经常假设索赔频率与索赔强度相互独立,并分别建立索赔频率和索赔强度的广义线性模型。
在独立的假设下,可以把索赔频率与索赔强度的预测值相乘从而求得纯保费的预测值。
这种方法简单易行,在非寿险精算实务中得到广泛的应用,但其忽略了索赔频率与索赔强度之间可能存在的相依关系,从而造成预测的偏差。
而在纯保费的预测中,主要是应用Tweedie广义线性模型。
Tweedie广义线性模型,是假定保单的累积赔付额服从Tweedie分布,对赔付额的均值函数建立回归模型。
其要求协变量的影响为预测函数的线性形式,但在实际的情况下,许多对纯保费的影响因素不仅仅是表现成线性形式的,如空间协变量,大多数情况下其对响应变量均值函数的影响是非线性的,如果单纯地用线性估计会造成一些变量的不显著而丢失重要的影响因素。
为了更好的拟合数据,从而有必要对其进行优化推广,在广义线性模型中纳入平滑预测项,将其推广到广义加法模型。
从线性和非线性两个方面去分析各因素对预测函数不同的影响程度。
本文以一组汽车保险损失数据为样本,建立Tweedie广义加法模型,利用R软件对模型的参数进行估计检验。
通过与Tweedie广义线性模型对比,表明Tweedie 广义加法模型可以更好的解释各因素对索赔额的影响,从而改进了传统广义线性模型对纯保费的预测精度。
r语言曲线拟合方法 loss 在R 语言中进行曲线拟合时,通常使用一种损失函数(loss function)来衡量模型的拟合程度。
损失函数是一个衡量模型预测值与实际观测值之间差异的函数。
常见的损失函数有平方损失函数、绝对损失函数等,选择不同的损失函数会对模型的拟合产生影响。
以下是一些 R 语言中进行曲线拟合时常用的方法和相关损失函数:1. 线性拟合:使用 lm 函数进行线性回归,损失函数为平方损失函数。
model <- lm(y ~ x, data = your_data)2. 多项式拟合:使用poly 函数进行多项式回归,损失函数同样是平方损失函数。
model <- lm(y ~ poly(x, degree), data = your_data)3. 非线性拟合:使用 nls 函数进行非线性拟合,可以自定义损失函数。
model <- nls(y ~ formula, data = your_data, start = list(parameters), algorithm = "algorithm_name")4. Loess 拟合:使用 loess 函数进行局部加权散点平滑拟合,损失函数是加权的平方损失函数。
model <- loess(y ~ x, data = your_data, span = smoothing_parameter)5. GAM(广义可加模型):使用 gam 函数进行广义可加模型拟合,可以自定义平滑函数和损失函数。
library(mgcv)model <- gam(y ~ s(x), data = your_data)在这些例子中,损失函数通常是最小化残差平方和,但对于非线性拟合,你可以根据问题选择适当的损失函数。
nls 函数允许你自定义损失函数,以满足特定的建模需求。
要了解更多有关这些函数的详细信息,建议查阅相关的 R 语言文档。
多元自适应样条回归 r语言
多元自适应样条回归是一种非参数回归方法,它结合了样条方
法和局部加权线性回归。
在R语言中,你可以使用mgcv包来进行多
元自适应样条回归分析。
首先,你需要安装mgcv包,然后加载它并
准备你的数据。
接下来,你可以使用gam()函数来拟合多元自适应
样条回归模型。
在这个过程中,你需要指定适当的自变量和因变量,并使用bs参数来指定样条的基础。
你还可以使用其他参数来调整模
型的拟合效果,比如选择不同的平滑度参数。
拟合完成后,你可以
使用summary()函数来查看模型的拟合结果,包括系数估计、置信
区间等信息。
在R语言中,进行多元自适应样条回归分析的过程可能会涉及
到一些参数的调整和模型结果的解释,因此在使用过程中需要仔细
阅读相关文档和参考资料,以确保对方法的理解和使用都是正确的。
同时,要注意数据的质量和模型的合理性,避免过度拟合或者欠拟
合的情况发生。
总的来说,R语言提供了丰富的工具和包来支持多元自适应样
条回归分析,通过合理的调用和使用这些工具,你可以进行全面的
数据分析和模型拟合,得到对实际问题有价值的结果。
希望这些信
息能够帮助你更好地理解和应用多元自适应样条回归在R语言中的实现。
R包mgcv的广义加模型函数gam()library(mgcv)set.seed(0) ## simulate some data... [#模拟一些数据...]dat <- gamSim(1,n=400,dist="normal",scale=2)b <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)summary(b)plot(b,pages=1,residuals=TRUE) ## show partial residuals[#显示部分残差]plot(b,pages=1,seWithMean=TRUE) ## `with intercept' CIs[#拦截“证明书]## same fit in two parts .....[#同样适合两部分......]G <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),fit=FALSE,data=dat)b <- gam(G=G)print(b)## change the smoothness selection method to REML[#REML法改变平滑的选择方法] b0 <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat,method="REML")plot(b0,pages=1,scheme=1)## Would a smooth interaction of x0 and x1 be better?[#X0和X1的流畅交互更好?] ## Use tensor product smooth of x0 and x1, basis [#使用张量积X0和X1顺利,基础] ## dimension 49 (see ?te for details, also ?t2).[#尺寸49(见详情TE,也T2)。
]bt <- gam(y~te(x0,x1,k=7)+s(x2)+s(x3),data=dat,method="REML")plot(bt,pages=1)plot(bt,pages=1,scheme=2) ## alternative visualization[#替代的可视化]AIC(b0,bt) ## interaction worse than additive[#交互比添加剂差]## If it is believed that x0 and x1 are naturally on [#如果它被认为X0和X1自然]## the same scale, and should be treated isotropically [#相同的规模,应被视为各向同性] ## then could try...[#然后可以尝试...]bs <- gam(y~s(x0,x1,k=50)+s(x2)+s(x3),data=dat,method="REML")plot(bs,pages=1)AIC(b0,bt,bs) ## additive still better. [#添加剂更好。
]## Now do automatic terms selection as well[#现在做选择自动条款,以及]b1 <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat,method="REML",select=TRUE)plot(b1,pages=1)## set the smoothing parameter for the first term, estimate rest ...[#设置的第一任期内,估计截断的平滑参数...]bp <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),sp=c(0.01,-1,-1,-1),data=dat)plot(bp,pages=1,scheme=1)## alternatively...[#或者...]bp <- gam(y~s(x0,sp=.01)+s(x1)+s(x2)+s(x3),data=dat)# set lower bounds on smoothing parameters ....[平滑参数设定的下限....]bp<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),min.sp=c(0.001,0.01,0,10),data=dat)print(b);print(bp)# same with REML[同与REML法]bp<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),min.sp=c(0.1,0.1,0,10),data=dat,method="REML")print(b0);print(bp)## now a GAM with 3df regression spline term & 2 penalized terms[#现在与的3DF 回归样条任期和2的GAM处罚条款]b0<-gam(y~s(x0,k=4,fx=TRUE,bs="tp")+s(x1,k=12)+s(x2,k=15),data=dat)plot(b0,pages=1)## now simulate poisson data...[#现在模拟泊松资料的...]dat <- gamSim(1,n=4000,dist="poisson",scale=.1)## use "cr" basis to save time, with 4000 data...[#使用“CR”的基础上,与4000数据保存时间,...]b2<-gam(y~s(x0,bs="cr")+s(x1,bs="cr")+s(x2,bs="cr")+s(x3,bs="cr"),family=poisson,data=dat,method="REML")plot(b2,pages=1)## drop x3, but initialize sp's from previous fit, to [#下降X3,但初始化SP,从以前的契合,]## save more time...[#节省更多的时间......]b2a<-gam(y~s(x0,bs="cr")+s(x1,bs="cr")+s(x2,bs="cr"),family=poisson,data=dat,method="REML",in.out=list(sp=b2$sp[1:3],scale=1))par(mfrow=c(2,2))plot(b2a)par(mfrow=c(1,1))## similar example using performance iteration[#类似的例子,使用性能迭代]dat <- gamSim(1,n=400,dist="poisson",scale=.25)b3<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=poisson,data=dat,optimizer="perf")plot(b3,pages=1)## repeat using GACV as in Wood 2008...[#重复使用GACV作为2008年在木材...]b4<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=poisson,data=dat,method="GACV.Cp",scale=-1)plot(b4,pages=1)## repeat using REML as in Wood 2011...[#重复使用REML法作为2011年在木材...]b5<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=poisson,data=dat,method="REML")plot(b5,pages=1)## a binary example (see later for large dataset version)...[#二进制的例子(见稍后为大型数据集版本)...]dat <- gamSim(1,n=400,dist="binary",scale=.33)lr.fit <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=binomial,data=dat,method="REML")## plot model components with truth overlaid in red[覆盖在红色的图与真理的模型组件] op <- par(mfrow=c(2,2))fn <- c("f0","f1","f2","f3");xn <- c("x0","x1","x2","x3")for (k in 1:4) {plot(lr.fit,residuals=TRUE,select=k)ff <- dat[[fn[k]]];xx <- dat[[xn[k]]]ind <- sort.int(xx,index.return=TRUE)$ixlines(xx[ind],(ff-mean(ff))[ind]*.33,col=2)}par(op)anova(lr.fit)lr.fit1 <- gam(y~s(x0)+s(x1)+s(x2),family=binomial,data=dat,method="REML")lr.fit2 <- gam(y~s(x1)+s(x2),family=binomial,data=dat,method="REML")AIC(lr.fit,lr.fit1,lr.fit2)## A Gamma example, by modify `gamSim' output...[#伽玛例如,通过修改gamSim的输出...]dat <- gamSim(1,n=400,dist="normal",scale=1)dat$f <- dat$f/4 ## true linear predictor [#真正的线性预测]Ey <- exp(dat$f);scale <- .5 ## mean and GLM scale parameter[#的意思,GLM尺度参数]## Note that `shape' and `scale' in `rgamma' are almost[#注意形和规模rgamma“几乎] ## opposite terminology to that used with GLM/GAM...[#对面的GLM /自由亚齐运动所使用的术语来...]dat$y <- rgamma(Ey*0,shape=1/scale,scale=Ey*scale)bg <- gam(y~ s(x0)+ s(x1)+s(x2)+s(x3),family=Gamma(link=log),data=dat,method="REML")plot(bg,pages=1,scheme=1)## For inverse Gaussian, see ?rig[#逆高斯,看到了什么?钻机]## now a 2D smoothing example...[#现在的二维平滑的例子...]eg <- gamSim(2,n=500,scale=.1)attach(eg)op <- par(mfrow=c(2,2),mar=c(4,4,1,1))contour(truth$x,truth$z,truth$f) ## contour truth[#轮廓真相]b4 <- gam(y~s(x,z),data=data) ## fit model[#适合模型]fit1 <- matrix(predict.gam(b4,pr,se=FALSE),40,40)contour(truth$x,truth$z,fit1) ## contour fit[#轮廓适合]persp(truth$x,truth$z,truth$f) ## persp truth[#persp真相]vis.gam(b4) ## persp fit[#persp适合]detach(eg)par(op)##################################################[#################################################]## largish dataset example with user defined knots[#稍大例如与用户定义的节集]##################################################[#################################################]par(mfrow=c(2,2))eg <- gamSim(2,n=10000,scale=.5)attach(eg)ind<-sample(1:10000,1000,replace=FALSE)b5<-gam(y~s(x,z,k=50),data=data,knots=list(x=data$x[ind],z=data$z[ind]))## various visualizations[#各种可视化]vis.gam(b5,theta=30,phi=30)plot(b5)plot(b5,scheme=1,theta=50,phi=20)plot(b5,scheme=2)par(mfrow=c(1,1))## and a pure "knot based" spline of the same data[#和一个纯粹的“结基于”相同的数据样条]b6<-gam(y~s(x,z,k=100),data=data,knots=list(x= rep((1:10-0.5)/10,10), z=rep((1:10-0.5)/10,rep(10,10))))vis.gam(b6,color="heat",theta=30,phi=30)## varying the default large dataset behaviour via `xt'[#不同的默认的大型数据集的行为,通过XT“]b7 <- gam(y~s(x,z,k=50,xt=list(max.knots=1000,seed=2)),data=data)vis.gam(b7,theta=30,phi=30)detach(eg)###################################################### ##########[###############################################################]## Approximate large dataset logistic regression for rare events[#近似的大型数据集稀有事件logistic回归]## based on subsampling the zeroes, and adding an offset to[#基于欠采样的零,并加入一个偏移量]## approximately allow for this.[#约允许。