Rlang: 虽然不知道为什么要学
统计学习
线性回归
stats包
c(...):使参数拼接为一个向量sample(tot, sz):生成一组索引,从tot个样本中随机采样sz个样本poly(x, k, raw, ...):生成关于x的k阶多项式,raw布尔值表示TRUE(正交多项式)、FALSE(原始多项式),正交多项式的每一项是原始多项式(xi)的线性组合lm():formula:模型公式,例如y ~ x1 + x2+:线性相加.:通配符,包括所有变量的+-:去除变量,通常配合.::交互项*:表示包含两者以及两者的交互项,例如x1*x2等价于x1+x2+x1:x20或-1:表示去除截距项I(x^k):多项式项(k次幂)
data:所用的数据,必须包含formula中使用的变量subset:逻辑表达式或者索引,在训练前先作用于data
glm():广义线性模型,相比lm()添加了family参数gaussian:默认值,进行线性拟合binomial:逻辑回归
summary(model):获取模型的总结,包括系数、标准差、t值、t假设检验的p值、RSE、R2(adj表示加了惩罚项)、F统计量、F假设检验的p值- 逻辑回归的总结还包括零模型偏差和完整模型偏差,以及
AIC估计
- 逻辑回归的总结还包括零模型偏差和完整模型偏差,以及
coef(model):返回更少的内容,只返回系数的估计值anova(models...):通过方差分析,判断更复杂的模型新增的变量是否有显著影响predict(model, data, interval, level, type):使用模型进行预测data:待预测的数据interval:指定预测区间还是置信区间,可选confidence、prediction,默认为none(点估计)level:指定置信水平,默认0.95type:指定预测类型,可选response、link,指定为response来获得响应值,因为默认的link难以解释
which.min(vec):求出最小值对应的下标,max()类似
可视化
plot(x, y):绘制散点图abline(model):绘制模型的最小二乘线
MASS(现代应用统计学)
lda():线性判别分析qda():二次判别分析
boot
cv.glm(data, glmfit, K, cost):对glm()的模型进行k折交叉验证,返回值的delta列的第一项是标准的交叉验证估计值(res$delta[1])boot(data, statistic, R, ...):自助法估计指定statistic统计量的某个指标data:原始数据集statistic(data, indices):自定义函数,在里面指定模型、返回感兴趣的统计指标,例如:1
2
3
4
5function(data, indices)
d <- data[, indices] # indices是boot()提供的索引组
model <- lm(y ~ x, data=d)
pred <- predict(model, d, type="response")
return mean(pred == d$Y)
leaps
regsubsets(y ~ ., data, method, nvmax, ...):默认为最优子集法,method可选forward和backwardsummary()可返回rsq, rss, bic, adjr2, cp统计量
glmnet
glmnet()相比glm()新增了alpha和lambda参数,alpha=0表示岭回归(默认值),alpha=1表示Lasso回归,lambda为惩罚系数,可以通过交叉验证求得- 一般通过
predict()使type="coeficcients"获取系数,因为使用压缩估计的目的是变量选择,所以不使用summary() - 使用
cv.glmnet()来选择超参数lambda,它会在内部自动调用glmnet()
pls
pcr():scale参数validationplot()plsr():偏最小二乘回归scale=TRUE参数表示标准化,validation="cv"表示使用交叉验证来估计测试误差
非线性模型
- 通过
cut(x, sz)划分变量范围,来拟合阶梯函数
splines
bs()表示样条函数,默认为三次样条smooth.spline():光滑样条loess():局部回归
gam
gam():广义可加模型