求教在R中用cross dj教程VALIDATION方法进行数据选择

前言本文接上一篇。在许多生活和工作的实际问题中,影响因变量的因素可能不止一个,比如对于知识水平越高的人,收入水平也越高,这样的一个结论。这其中可能包括了因为更好的家庭条件,所以有了更好的教育;因为在一线城市发展,所以有了更好的工作机会;所处的行业赶上了大的经济上行周期等。要想解读这些规律,是复杂的、多维度的,多元回归分析方法更适合解读生活的规律。由于本文为非统计的专业文章,所以当出现与教课书不符的描述,请以教课书为准。本文力求用简化的语言,来介绍多元线性回归的知识,同时配合R语言的实现。目录多元线性回归介绍元线性回归建模模型优化案例:黑色系期货日K线数据验证1. 多元线性回归介绍对比一元线性回归,多元线性回归是用来确定2个或2个以上变量间关系的统计分析方法。多元线性回归的基本的分析方法与一元线性回归方法是类似的,我们首先需要对选取多元数据集并定义数学模型,然后进行参数估计,对估计出来的参数进行显著性检验,残差分析,异常点检测,最后确定回归方程进行模型预测。由于多元回归方程有多个自变量,区别于一元回归方程,有一项很重要的操作就是自变量的优化,挑选出相关性最显著的自变量,同时去除不显著的自变量。在R语言中,有很方便地用于优化函数,可以很好的帮助我们来改进回归模型。下面就开始多元线性回归的建模过程。2. 多元线性回归建模做过商品期货研究的人,都知道黑色系品种是具有产业链上下游的关系。铁矿石是炼钢的原材料,焦煤和焦炭是炼钢的能源资源,热卷即热轧卷板是以板坯为原料经加热后制成的钢板,螺纹钢是表面带肋的钢筋。由于有产业链的关系,假设我们想要预测螺纹钢的价格,那么影响螺纹钢价格的因素可以会涉及到原材料,能源资源和同类材料等。比如,铁矿石价格如果上涨,螺纹钢就应该要涨价了。2.1 数据集和数学模型先从数据开始介绍,这次的数据集,我选择的期货黑色系的品种的商品期货,包括了大连期货交易所的 焦煤(JM),焦炭(J),铁矿石(I),上海期货交易所的 螺纹钢(RU) 和 热卷(HC)。数据集为日,当日白天开盘的交易数据,为黑色系的5个期货合约的分钟线的价格数据。# 数据集已存在df变量中
& head(df,20)
& & & & & & & & & & & x1 & &x2 & &x3 & x4 & &y
09:01:00 754.5 616.5 426.5
09:02:00 752.5 614.5 423.5
09:03:00 753.0 614.0 423.0
09:04:00 752.5 613.0 422.5
09:05:00 753.0 615.5 424.0
09:06:00 752.5 614.5 422.0
09:07:00 752.0 614.0 421.5
09:08:00 753.0 615.0 422.5
09:09:00 754.0 615.5 422.5
09:10:00 754.5 615.5 423.0
09:11:00 757.0 616.5 423.0
09:12:00 756.0 615.5 423.0
09:13:00 755.5 615.0 423.0
09:14:00 755.5 615.0 423.0
09:15:00 756.0 616.0 423.5
09:16:00 757.5 616.0 424.0
09:17:00 758.5 618.0 424.0
09:18:00 759.5 618.5 424.0
09:19:00 759.5 617.5 424.5
09:20:00 758.5 617.5 423.5 数据集包括有6列:索引, 为时间x1, 为焦炭(j1605)合约的1分钟线的报价数据x2, 为焦煤(jm1605)合约的1分钟线的报价数据x3, 为铁矿石(i1605)合约的1分钟线的报价数据x4, 为热卷(hc1605)合约的1分钟线的报价数据y, 为螺纹钢(rb1605)合约的1分钟线的报价数据假设螺纹钢的价格与其他4个商品的价格有线性关系,那么我们建立以螺纹钢为因变量,以焦煤、焦炭、铁矿石和热卷的为自变量的多元线性回归模型。用公式表示为:y = a + b * x1 + c * x2 + d * x3 + e * x4 + εy,为因变量,螺纹钢x1,为自变量,焦煤x2,为自变量,焦炭x3,为自变量,铁矿石x4,为自变量,热卷a,为截距b,c,d,e,为自变量系数ε, 为残差,是其他一切不确定因素影响的总和,其值不可观测。假定ε服从正态分布N(0,σ^2)。通过对多元线性回归模型的数学定义,接下来让我们利用数据集做多元回归模型的参数估计。2.2. 回归参数估计上面公式中,回归参数 a, b, c, d,e都是我们不知道的,参数估计就是通过数据来估计出这些参数,从而确定自变量和因变量之前的关系。我们的目标是要计算出一条直线,使直线上每个点的Y值和实际数据的Y值之差的平方和最小,即(Y1实际-Y1预测)^2+(Y2实际-Y2预测)^2+ …… +(Yn实际-Yn预测)^2 的值最小。参数估计时,我们只考虑Y随X自变量的线性变化的部分,而残差ε是不可观测的,参数估计法并不需要考虑残差。类似于一元线性回归,我们用R语言来实现对数据的回归模型的参数估计,用lm()函数来实现多元线性回归的建模过程。# 建立多元线性回归模型
& lm1&-lm(y~x1+x2+x3+x4,data=df)
# 打印参数估计的结果
lm(formula = y ~ x1 + x2 + x3 + x4, data = df)
Coefficients:
(Intercept) & & & & & x1 & & & & & x2 & & & & & x3 & & & & & x4 &
& 212.8780 & & & 0.8542 & & & 0.6672 & & &-0.6674 & & & 0.4821 &这样我们就得到了y和x关系的方程。y = 212.8780 + 0.8542 * x1 + 0.6672 * x2 - 0.6674 * x3 + 0.4821 * x42.3. 回归方程的显著性检验参考一元线性回归的显著性检验,多元线性回归的显著性检验,同样是需要经过 T检验,F检验,和R^2(R平方)相关系统检验。在R语言中这三种检验的方法都已被实现,我们只需要把结果解读,我们可以summary()函数来提取模型的计算结果。& summary(lm1)
lm(formula = y ~ x1 + x2 + x3 + x4, data = df)
Residuals:
& &Min & & &1Q &Median & & &3Q & & Max
-4.1 -0.3 &5.4194
Coefficients:
& & & & & & Estimate Std. Error t value Pr(&|t|) & &
(Intercept) 212.87796 & 58.26788 & 3.653 0.000323 ***
x1 & & & & & &0.85423 & &0.10958 & 7.795 2.50e-13 ***
x2 & & & & & &0.66724 & &0.12938 & 5.157 5.57e-07 ***
x3 & & & & & -0.66741 & &0.15421 &-4.328 2.28e-05 ***
x4 & & & & & &0.48214 & &0.0 && 2e-16 ***
Signif. codes: &0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.028 on 221 degrees of freedom
Multiple R-squared: &0.9725, Adjusted R-squared: &0.972
F-statistic: &1956 on 4 and 221 DF, &p-value: & 2.2e-16T检验:所自变量都是非常显著***F检验:同样是非常显著,p-value & 2.2e-16调整后的R^2:相关性非常强为0.972最后,我们通过的回归参数的检验与回归方程的检验,得到最后多元线性回归方程为:y = 212.87796 + 0.85423 * x1 + 0.66724 * x2 - 0.66741 * x3 + 0.48214 * x4
螺纹钢 = 212.87796 + 0.85423 * 焦炭 + 0.66724 * 焦煤 - 0.66741 * 铁矿石 + 0.48214 * 热卷2.4 残差分析和异常点检测在得到的回归模型进行显著性检验后,还要在做残差分析(预测值和实际值之间的差),检验模型的正确性,残差必须服从正态分布N(0,σ^2)。直接用plot()函数生成4种用于模型诊断的图形,进行直观地分析。& par(mfrow=c(2,2))
& plot(lm1)残差和拟合值(左上),残差和拟合值之间数据点均匀分布在y=0两侧,呈现出随机的分布,红色线呈现出一条平稳的曲线并没有明显的形状特征。残差QQ图(右上),数据点按对角直线排列,趋于一条直线,并被对角直接穿过,直观上符合正态分布。标准化残差平方根和拟合值(左下),数据点均匀分布在y=0两侧,呈现出随机的分布,红色线呈现出一条平稳的曲线并没有明显的形状特征。标准化残差和杠杆值(右下),没有出现红色的等高线,则说明数据中没有特别影响回归结果的异常点。结论,没有明显的异常点,残差符合假设条件。2.5. 模型预测我们得到了多元线性回归方程的公式,就可以对数据进行预测了。我们可以用R语言的predict()函数来计算预测值y0和相应的预测区间,并把实际值和预测值一起可视化化展示。& par(mfrow=c(1,1)) &#设置画面布局
# 预测计算
& dfp&-predict(lm1,interval=&prediction&)
# 打印预测时
& head(dfp,10)
& & & & & & & &fit & & &lwr & & &upr
# 合并数据
& mdf&-merge(df$y,dfp)
& draw(mdf)图例说明y, 实际价格,红色线fit, 预测价格,绿色线lwr,预测最低价,蓝色线upr,预测最高价,紫色线从图中看出,实际价格y和预测价格fit,在大多数的时候都是很贴近的。我们的一个模型就训练好了!3. 模型优化上文中,我们已经很顺利的发现了一个非常不错的模型。如果要进行模型优化,可以用R语言中update()函数进行模型的调整。我们首先检查一下每个自变量x1,x2,x3,x4和因变量y之间的关系。pairs(as.data.frame(df))从图中,我们可以发现x2与Y的关系,可能是最偏离线性的。那么,我们尝试对多元线性回归模型进行调整,从原模型中去掉x2变量。# 模型调整
& lm2&-update(lm1, .~. -x2)
& summary(lm2)
lm(formula = y ~ x1 + x3 + x4, data = df)
Residuals:
& &Min & & &1Q &Median & & &3Q & & Max
-6.2 &0.3 &4.8028
Coefficients:
& & & & & & Estimate Std. Error t value Pr(&|t|) & &
(Intercept) 462.47104 & 34.26636 & 13.50 && 2e-16 ***
x1 & & & & & &1.08728 & &0.10543 & 10.31 && 2e-16 ***
x3 & & & & & -0.40788 & &0.15394 & -2.65 &0.00864 **
x4 & & & & & &0.42582 & &0.01718 & 24.79 && 2e-16 ***
Signif. codes: &
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.142 on 222 degrees of freedom
Multiple R-squared: &0.9692, Adjusted R-squared: &0.9688
F-statistic: &2330 on 3 and 222 DF, &p-value: & 2.2e-16当把自变量x2去掉后,自变量x3的T检验反而变大了,同时Adjusted R-squared变小了,所以我们这次调整是有问题的。如果通过生产和原材料的内在逻辑分析,焦煤与焦炭属于上下游关系。焦煤是生产焦炭的一种原材料,焦炭是焦煤与其他炼焦煤经过配煤焦化形成的产品,一般生产 1 吨焦炭需要1.33 吨炼焦煤,其中焦煤至少占 30% 。我们把焦煤 和 焦炭的关系改变一下,增加x1*x2的关系匹配到模型,看看效果。# 模型调整
& lm3&-update(lm1, .~. + x1*x2)
& summary(lm3)
lm(formula = y ~ x1 + x2 + x3 + x4 + x1:x2, data = df)
Residuals:
& &Min & & &1Q &Median & & &3Q & & Max
-4.1 -0.9 &5.3884
Coefficients:
& & & & & & &Estimate Std. Error t value Pr(&|t|) & &
(Intercept)
& 0.916 & &0.361 & &
x1 & & & & & &-8.45530 & 10.47167 &-0.807 & &0.420 & &
x2 & & & & & -10.58406 & 12.65579 &-0.836 & &0.404 & &
x3 & & & & & &-0.64344 & &0.15662 &-4.108 5.63e-05 ***
x4 & & & & & & 0.48363 & &0.0 && 2e-16 ***
x1:x2 & & & & &0.01505 & &0.01693 & 0.889 & &0.375 & &
Signif. codes: &
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.029 on 220 degrees of freedom
Multiple R-squared: &0.9726, Adjusted R-squared: &0.972
F-statistic: &1563 on 5 and 220 DF, &p-value: & 2.2e-16从结果中发现,增加了x1*x2列后,原来的x1,x2和Intercept的T检验都不显著。继续调整模型,从模型中去掉x1,x2两个自变量。# 模型调整
& lm4&-update(lm3, .~. -x1-x2)
& summary(lm4)
lm(formula = y ~ x3 + x4 + x1:x2, data = df)
Residuals:
& &Min & & &1Q &Median & & &3Q & & Max
-4.6 -0.8 &5.8683
Coefficients:
& & & & & & &Estimate Std. Error t value Pr(&|t|) & &
(Intercept) &6.950e+02 &1.609e+01 &43.183 && 2e-16 ***
x3 & & & & &-6.284e-01 &1.530e-01 &-4.108 5.61e-05 ***
x4 & & & & & 4.959e-01 &1.785e-02 &27.783 && 2e-16 ***
x1:x2 & & & &1.133e-03 &9.524e-05 &11.897 && 2e-16 ***
Signif. codes: &0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.035 on 222 degrees of freedom
Multiple R-squared: &0.9722, Adjusted R-squared: &0.9718
F-statistic: &2588 on 3 and 222 DF, &p-value: & 2.2e-16从调整后的结果来看,效果还不错。不过,也并没有比最初的模型有所提高。对于模型调整的过程,如果我们手动调整测试时,一般都会基于业务知识来操作。如果是按照数据指标来计算,我们可以用R语言中提供的逐步回归的优化方法,通过AIC指标来判断是否需要参数优化。#对lm1模型做逐步回归
& step(lm1)
Start: &AIC=324.51
y ~ x1 + x2 + x3 + x4
& & & Df Sum of Sq & &RSS & &AIC908.8 324.51
- x3 & &1 & & 77.03 &985.9 340.90
- x2 & &1 & &109.37 .19
- x1 & &1 & &249.90 .41
- x4 & &1 & 9.4 620.65
lm(formula = y ~ x1 + x2 + x3 + x4, data = df)
Coefficients:
(Intercept) & & & & & x1 & & & & & x2 & & & & & x3 & & & & & x4 &
& 212.8780 & & & 0.8542 & & & 0.6672 & & &-0.6674 & & & 0.4821通过计算AIC指标,lm1的模型AIC最小时为324.51,每次去掉一个自变量都会让AIC的值变大,所以我们还是不调整比较好。对刚才的lm3模型做逐步回归的模型调整。#对lm3模型做逐步回归
& step(lm3)
Start: &AIC=325.7 & & & & & & & #当前AIC
y ~ x1 + x2 + x3 + x4 + x1:x2
& & & &Df Sum of Sq & &RSS & &AIC
- x1:x2 &1 & & &3.25 &908.8 324.51905.6 325.70
- x3 & & 1 & & 69.47 &975.1 340.41
- x4 & & 1 & 3.5 622.25
Step: &AIC=324.51 & & & & & & & #去掉x1*x2项的AIC
y ~ x1 + x2 + x3 + x4
& & & Df Sum of Sq & &RSS & &AIC908.8 324.51
- x3 & &1 & & 77.03 &985.9 340.90
- x2 & &1 & &109.37 .19
- x1 & &1 & &249.90 .41
- x4 & &1 & 9.4 620.65
lm(formula = y ~ x1 + x2 + x3 + x4, data = df)
Coefficients:
(Intercept) & & & & & x1 & & & & & x2 & & & & & x3 & & & & & x4 &
& 212.8780 & & & 0.8542 & & & 0.6672 & & &-0.6674 & & & 0.4821通过AIC的判断,去掉X1*X2项后AIC最小,最后的检验结果告诉我们,还是原初的模型是最好的。4. 案例:黑色系期货日K线数据验证最后,我们用上面5个期货合约的日K线数据测试一下,找到多元回归关系。& lm9&-lm(y~x1+x2+x3+x4,data=df) &# 日K线数据
& summary(lm9)
lm(formula = y ~ x1 + x2 + x3 + x4, data = df)
Residuals:
& & Min & & & 1Q & Median & & & 3Q & & &Max
-173.338 &-37.470 & &3.465 & 32.158 &178.982
Coefficients:
& & & & & & Estimate Std. Error t value Pr(&|t|) & &
(Intercept) 386.33482 & 31.0 && 2e-16 ***
x1 & & & & & &0.75871 & &0.0 && 2e-16 ***
x2 & & & & & -0.62907 & &0.14715 &-4.275 2.24e-05 ***
x3 & & & & & &1.16070 & &0.0 && 2e-16 ***
x4 & & & & & &0.46461 & &0.0 && 2e-16 ***
Signif. codes: &0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 57.78 on 565 degrees of freedom
Multiple R-squared: &0.9844, Adjusted R-squared: &0.9843
F-statistic: &8906 on 4 and 565 DF, &p-value: & 2.2e-16数据集的基本统计信息。& summary(df)
& & Index & & & & & & & & & & & & & x1 & & & & & & & x2 & & &
Min. & : 00:00:00 & Min. & : 606.5 & Min. & :494.0 &
1st Qu.: 06:00:00 & 1st Qu.: 803.5 & 1st Qu.:613.1 &
Median : 12:00:00 & Median : 939.0 & Median :705.8 &
Mean & : 08:02:31 & Mean & : 936.1 & Mean & :695.3 &
3rd Qu.: 18:00:00 & 3rd Qu.:1075.0 & 3rd Qu.:773.0 &
Max. & : 00:00:00 & Max. & :1280.0 & Max. & :898.0 &
& & & x3 & & & & & & &x4 & & & & & & y & & &
Min. & :284.0 & Min. & :1691 & Min. & :1626 &
1st Qu.:374.1 & 1st Qu.:2084 & 1st Qu.:2012 &
Median :434.0 & Median :2503 & Median :2378 &
Mean & :476.5 & Mean & :2545 & Mean & :2395 &
3rd Qu.:545.8 & 3rd Qu.:2916 & 3rd Qu.:2592 &
Max. & :825.0 & Max. & :3480 & Max. & :3414 &对于日K线数据,黑色系的5个品种,同样具有非常强的相关关系,那么我们就可以把这个结论应用到实际的交易中了。本文通过多元回归的统计分析方法,介绍多元回归在金融市场的基本应用。我们通过建立因变量和多个自变量的模型,从而发现生活中更复杂的规律,并建立有效的验证指标。本公众号精彩历史文章:04:如何在R软件中求一致性指数( Harrell'concordance index:C-index)? 05:Nomogram 绘制原理及R&SAS实现.06 &: Lasso方法简要介绍及其在回归分析中的应用07 &: 最优模型选择中的交叉验证(Cross validation)方法08 &: 用R语言进行分位数回归(Quantile Regression)09 &: 样本数据中异常值(Outliers)检测方法及SPSS & R实现10 &: 原始数据中几类缺失值(Missing Data)的SPSS及R处理方法11 &: &[Survival analysis] Kaplan-Meier法之SPSS实现 12 &: &[Survival analysis] COX比例风险回归模型在SPSS中的实现13 &: &用R绘制地图:以疾病流行趋势为例14 &: &数据挖掘方法:聚类分析简要介绍 及SPSS&R实现15 &: &医学研究中的Logistic回归分析及R实现16 &: &常用的非参数检验(Nonparametric Tests)总结17 &: &高中生都能看懂的最小二乘法原理18 &: &R语言中可实现的常用统计假设检验总结(侧重时间序列)19 &: &如何根据样本例数、均数、标准差进行T-Test和ANOVA20 &: &统计学中自由度的理解和应用21 &: &ROC和AUC介绍以及如何计算AUC22 &: &支持向量机SVM介绍及R实现23 &: &SPSS如何做主成分分析?24 &:
Bootstrap再抽样方法简介25 &: &定量测量结果的一致性评价及 Bland-Altman 法的应用&26 &: &使用R绘制热图及网络图&&27 &: &几种常用的双坐标轴图形绘制&28 &: &遗失的艺术—诺谟图(Nomogram)&29 &: &Nomogram 绘制原理及R&SAS实现(二)&30 &: &WOE:信用评分卡模型中的变量离散化方法&31 &: &结构方程模型(SEM)简介及教程下载&32 &: &重复测量的多因素方差分析SPSS实现操作过程&回复文章前代码数字如“04”即可查看或直接查看历史文章。公众号:survival-analysis QQ:8243033邮箱:8243033 @ qq.com 欢迎关注!生存分析(survival-analysis) 
 文章为作者独立观点,不代表大不六文章网立场
survival-analysis苦逼统计博士科研狗一名,记录科研生活,欢迎骚扰!热门文章最新文章survival-analysis苦逼统计博士科研狗一名,记录科研生活,欢迎骚扰!&&&&违法和不良信息举报电话:183-
举报邮箱:
Copyright(C)2016 大不六文章网
京公网安备78苹果/安卓/wp
积分 23, 距离下一级还需 1 积分
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
开心签到天数: 1 天连续签到: 1 天[LV.1]初来乍到
有一个样本数据,请问怎么用CROSS VALIDATION方法进行数据选择去除共线性啊??先谢谢各位大侠了!
载入中......
这个问题不是很恰当吧。用CV可以用来辅助所有预测性的模型进行选择。但是CV本身是估计模型的performance,而不是进行模型选择的。LZ可以选择任何一种variable selection的方法,然后用用CV去确定最后的变量。比如,用逐步回归,Lasso, elastic-net, Danzig selector等等。每个模型都在不同变量下有不同的cv-error,例如,lasso中,不同的penalty会对应不同的变量,然后根据cv-error最小或者one standard deviation rule进行选择。
这个问题不是很恰当吧。用CV可以用来辅助所有预测性的模型进行选择。但是CV本身是估计模型的performance,而不是进行模型选择的。LZ可以选择任何一种variable selection的方法,然后用用CV去确定最后的变量。比如,用逐步回归,Lasso, elastic-net, Danzig selector等等。每个模型都在不同变量下有不同的cv-error,例如,lasso中,不同的penalty会对应不同的变量,然后根据cv-error最小或者one standard deviation rule进行选择。
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
论坛法律顾问:王进律师关注今日:14 | 主题:181904
微信扫一扫
扫一扫,下载丁香园 App
即送15丁当
【求助】请教leave-one-out cross validation 弃一法交叉验证
页码直达:
这个帖子发布于7年零38天前,其中的信息可能已发生改变或有所发展。
请高手介绍弃一法交叉验证!小弟想了解它的用途和基本过程。请赐教!
不知道邀请谁?试试他们
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
模型方法一种,先用部份数据建立新模型,然后放入弃掉数据進新模型去决定新模型是否还有效。
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
请详细介绍一下好吗?谢谢您!
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
例如做回归模型时抽起1列,当得到系数时用抽起数据来比较估值与真值的分别是否合理。
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
如果你理解 k-fold cross validation的话,其实这个和它的意思是差不多的。k-fold,就是取整个样本的1/k作为预测样本,(k-1)/k作为训练样本。当用训练样本对数据作出模型后,再用预测样本来预测。leave-one-out就是把n-1个样本作为训练集,剩下一个样本作为预测集。并且循环,使得每个样本都作为一次预测集,然后计算交叉验证的正确率。
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
明白!谢谢指点!
微信扫一扫
广告宣传推广
政治敏感、违法虚假信息
恶意灌水、重复发帖
违规侵权、站友争执
附件异常、链接失效
关于丁香园R Cross Validation - Stack Overflow
to customize your list.
Join the Stack Overflow Community
Stack Overflow is a community of 6.7 million programmers, just like you, helping each other.
J it only takes a minute:
I'm doing cross validation. So I wanted to split data into 10 folds. Somebody has post following code.
f_K_fold &- function(Nobs,K=10){
rs &- runif(Nobs)
id &- seq(Nobs)[order(rs)]
k &- as.integer(Nobs * seq(1, K-1) / K)
k &- matrix(c(0, rep(k, each=2), Nobs), ncol = 2, byrow = TRUE)
k[,1] &- k[,1]+1
l &- lapply(seq.int(K), function(x, k, d)
list(train=d[!(seq(d) %in% seq(k[x, 1],k[x, 2]))],
test=d[seq(k[x,1],k[x,2])]),
however I don't really understand what the lapply doing. Could someone explain to a newbie? Appreciate it.
30.4k65496
It's really unfortunate that the code folding in this example is horrible, since aving properly formatted code can aid in understanding the code and catching mistakes.
The last three lines can be viewed as an anonymous function passed to lapply. lapply in essence "climbs" a list and for each list element, applies that (anonymous) function. In the example below, I've disambiguated the lines into a not so anonymous function and a call to lapply.
notSoanonymousFunction &- function(x, k, d) {
list(train = d[!(seq(d) %in% seq(k[x,1],k[x,2]))],
test = d[seq(k[x,1],k[x,2])])
l &- lapply(seq.int(K), FUN = notSoanonymousFunction, k = k, d = id)
If you look at ?lapply, you'll notice that there are no k or d arguments. However, these arguments do belong to our notSoanonymousFunction, and lapply takes it in via the ... argument.
As a mental exercise for you, I will show you one more trick how to learn what the function is doing. If you need to see what is happening inside the function, place a browser() call inside and run it. In your case, this would look like this:
notSoanonymousFunction &- function(x, k, d) {
list(train = d[!(seq(d) %in% seq(k[x,1],k[x,2]))],
test = d[seq(k[x,1],k[x,2])])
Once you run this, your console should say something along the lines of
Browser[1] &
You are now effectively inside the function. You can navigate to next line by typing n, running the whole chunk by c and quitting the browser all together, by pressing Q (see ?browser()).
You can view and manipulate objects ad libidum. You can try by checking your workspace with ls() to see which objects are inside the function. You can bet your family farm that there will be objects x, k and d.
36.4k1476124
Your Answer
Sign up or
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Post as a guest
By posting your answer, you agree to the
Not the answer you're looking for?
Browse other questions tagged
rev .25058
Stack Overflow works best with JavaScript enabled

我要回帖

更多关于 r cross validation 的文章

 

随机推荐