r语言计算均方误差怎么判断

Python013

r语言计算均方误差怎么判断,第1张

1、RMSE(均方根误差)即标准误差:

假如数据在A1:Z1

标准方差用函数=STDEV(A1:Z1)

方差用函数=VARA(A1:Z1)

2、MRE(平均相对误差)

Excel/函数/统计/STDEV(Sd)

计算出标准偏差Sd值,然后除以平均数再×100%就可以了。

为了找到均方根误差,我们首先需要找到残差(也称为误差,我们需要对这些值均方根),然后需要计算这些残差的均方根。因此,如果我们有一个线性回归模型对象说M,则均方根误差可以找到为sqrt(mean(M $residuals ^ 2))。

示例

x1<-rnorm(500,50,5)

y1<-rnorm(500,50,2)

M1<-lm(y1~x1)

summary(M1)

输出结果

Call:

lm(formula = y1 ~ x1)

Residuals:

Min 1QMedian3QMax

-5.6621 -1.2257 -0.0272 1.4151 6.6421

Coefficients:

EstimateStd.Errort value Pr(>|t|)

(Intercept) 50.178943 0.915473 54.812 <2e-16 ***

x1 -0.002153 0.018241 -0.118 0.906

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.966 on 498 degrees of freedom

Multiple R-squared: 2.798e-05, Adjusted R-squared: -0.00198

F-statistic: 0.01393 on 1 and 498 DF, p-value: 0.9061

从模型M1中找到均方根误差-

示例

sqrt(mean(M1$residuals^2))

输出结果

[1] 1.961622

示例

x2<-rnorm(5000,125,21)

y2<-rnorm(5000,137,10)

M2<-lm(y2~x2)

summary(M2)

输出结果

Call:

lm(formula = y2 ~ x2)

Residuals:

Min 1QMedian3QMax

-37.425 -7.005 -0.231 6.836 36.627

Coefficients:

Estimate Std.Error t value Pr(>|t|)

(Intercept) 138.683501 0.851247 162.918 <2e-16 ***

x2 -0.014386 0.006735 -2.136 0.0327 *

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 10.06 on 4998 degrees of freedom

Multiple R-squared: 0.0009121, Adjusted R-squared: 0.0007122

F-statistic: 4.563 on 1 and 4998 DF, p-value: 0.03272

从模型M2中找到均方根误差:

示例

sqrt(mean(M2$residuals^2))

输出结果

[1] 10.05584

示例

x37<-rpois(500,5)

y3<-rpois(500,10)

M3<-lm(y3~x3)

summary(M3)

输出结果

Call:

lm(formula = y3 ~ x3)

Residuals:

Min 1QMedian3QMax

-7.9004 -1.9928 -0.2155 2.1921 9.3770

Coefficients:

EstimateStd.Error t value Pr(>|t|)

(Intercept) 10.17770 0.3233031.481<2e-16 ***

x3 -0.09244 0.06145-1.5040.133

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.027 on 498 degrees of freedom

Multiple R-squared: 0.004524, Adjusted R-squared: 0.002525

F-statistic: 2.263 on 1 and 498 DF, p-value: 0.1331

从模型M3查找均方根误差-

示例

sqrt(mean(M3$residuals^2))

输出结果

[1] 3.020734

示例

x4<-runif(50000,5,10)

y4<-runif(50000,2,10)

M4<-lm(y4~x4)

summary(M4)

输出结果

Call:

lm(formula = y4 ~ x4)

Residuals:

Min1Q Median 3QMax

-4.0007 -1.9934 -0.0063 1.9956 3.9995

Coefficients:

EstimateStd.Error t value Pr(>|t|)

(Intercept) 5.9994268 0.0546751 109.729 <2e-16 ***

x40.0001572 0.0071579 0.0220.982

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.309 on 49998 degrees of freedom

Multiple R-squared: 9.646e-09, Adjusted R-squared: -1.999e-05

F-statistic: 0.0004823 on 1 and 49998 DF, p-value: 0.9825

从模型M4找到均方根误差-

示例

sqrt(mean(M4$residuals^2))

输出结果

[1] 2.308586

示例

x5<-sample(5001:9999,100000,replace=TRUE)

y5<-sample(1000:9999,100000,replace=TRUE)

M5<-lm(y5~x5)

summary(M5)

输出结果

Call:

lm(formula = y5 ~ x5)

Residuals:

Min 1QMedian 3Q Max

-4495 -2242-42230 4512

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 5.504e+03 4.342e+01 126.765 <2e-16 ***

x5-1.891e-03 5.688e-03 -0.333 0.74

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2594 on 99998 degrees of freedom

Multiple R-squared: 1.106e-06, Adjusted R-squared: -8.895e-06

F-statistic: 0.1106 on 1 and 99998 DF, p-value: 0.7395

从模型M5中找到均方根误差<

示例

sqrt(mean(M5$residuals^2))

输出结果

[1] 2593.709

15分钟掌握12个极简统计学分析方法- 玩好一二三四五就能上山打老虎

程晓华

2022-6-12

我的新书《全面库存管理数学分析》上市后,很多读者反馈说“看不懂”。这件事一直搞得我很郁闷,但我也很理解,其实很多人,也包括我在内,上大学的时候的3门“高等数学”(高等数学、线性代数、概率与数理统计,一般工科生的必修课,在这里,包括在我的书里统称“高等数学”)可能都没有学好,光去应付考试了,考完了也就完了,根本谈不上应用的问题,尤其是工作时间一长,除了会算个平均值但也懒得算之外,其他的都还给老师了。

但是,从事供应链管理工作,尤其是做最核心的供应链计划管理,必须要跟数据打交道,要不断地分析数据,挖掘并提炼其背后可能存在的有价值的信号,必要的时候,还可能还需要我们自己用Excel、R语言等工具做一些简单的统计预测之类的工作,这就不可避免地就要用到一些所谓的“高等数学”的知识,尽管很简单,但是,你必须要熟练掌握,达到熟能生巧的程度。

如果说《全面库存管理数学分析》让你感到头疼的话,我建议你先耐着性子,结合Excel,花个十几分钟的时间,把我这篇文章看完,如果你能产生一些兴趣,你就可以继续去读我那本书,学到更多的实用数据分析工具和方法论,但如果你连这个都没有兴趣,甚至是连这个东西也搞不懂,那书不读也罢。

我们小时候都知道的一首儿歌,叫“一二三四五,上山打老虎”,我们这里就用y=(1,2,3,4,5)这组数来举例子,我相信,你如果真正能够搞懂了这个一二三四五,你就真的敢上山打老虎(玩供应链数据分析工作)了!

我们假设这个y=(1,2,3,4,5)是某个公司过去1~5月份(即x =(1,2,3,4,5))的出货量,这里的x代表时间、期间,y代表期间出货量。

我在这里一共列了12个小问题,代表12个数学公式及数据分析方法论:

1. 过去5个月的出货(算术)平均值(average / mean)

这个问题很简单,估计99.999%的人都会算,答案是(1+2+3+4+5)/5=3,对应的Excel函数公式是average( )。

但大家不要小看这个简单的算术平均值(简称均值)计算,这是你对客户需求做到心中有“数”的第一步,这也是我的书第一章反复强调的内容 – 平均值很重要。

按照我个人在供应链管理领域管人、管事的经验来看,如果你能不看电脑、手机,随口就能说出你所负责的某个产品、SKU或者型号的每周的大概的平均需求,你就基本上是做到了心中有“数”。

你可以马上用这个“均值”测测你周围的人,结果可能会让你会很失望!

2. 截尾(0.2)平均值(trimmed mean)

知道这个所谓的截尾平均值的人会有多少呢?我心里没太有个数,因为,如果不是学习R语言,我以前也不知道有这么个东西,所以,我就相信很多人也不知道(我这是在做“极大似然估计(Maximum Likelihood Estimation, MLE)”,《全面库存管理数学分析》第四章的内容),尽管很多人都听说过它的应用,类似“去掉一个最高分,去掉一个最低分,大S的得分是 ……”。

这个定义在供应链管理中也是很有用的,譬如在评估客户历史需求的时候,我们可能人为地去掉那些看似不正常的极大值、极小值,至于比例,你自己决定,Excel公式是 trimmean( ),其中trim本身有修剪的意思,mean其实跟average一样,都是平均值的意思,至于为什么在Excel里面它不是用trimaverage( )来做这个表达式,我们就不得而知了。

我们这个例子y=(1,2,3,4,5),数据量很小,数据本身也很整齐,无论是trim=0.2还是0.1, 0.3, 0.4,结果都是3,但如果你把那个5换成6,再试一下这四个比例,它们的结果就不一样了。如果你感兴趣的话,可以模拟更多的数据看看这个公式到底是表达了什么意思。

3. 中位值(Median)

顾名思义,所谓的中位值就是处于序列中间位置的那个值,在我们这个例子中,一共有5个数,3就是那个中位值,因为它前面两个哥哥,后面有两个妹妹,它是老三嘛!

中位值的Excel公式是median()。

我的理解,这个中位值还有保持“中立”的意思,它不管哥哥妹妹们怎么胡闹,它还是它,永远保持不变。它不像那个算术平均值average,属于墙头草性质,哥哥妹妹们一闹腾,它也跟着折腾,所以它才有个外号叫“被平均”。譬如说,你把这个12345改成12346,中位值还是3,但平均值就从3变成了3.2了。所以,很多时候,我们宁肯相信那个中位值,因为这个平均值不太靠谱,据说还害死过人呢! 我也是听说的:一个大个子的统计学家在一条平均水深不到1米的河里被淹死了

比较理想的情况是这个中位值和平均值是一样的,或者差不多大小,这样的数据结构分布一般是比较好,甚至可能就是传说中的正态分布。

4. 四分位差(Interquartile Range, IQR)

在分析一组数据、一个时间序列的时候,我们通常可以把数据平均分成4段,这样每段数据占总数据个数的25%,估计这个“四分”就是这个意思,而“四分”之后,自然就是“五裂”,也就是4段5个点,而这5个点我们可以分别命名为Q 0 , Q 1 , Q 2 , Q 3 , Q 4 ,Q 0 最小(min),Q 4 最大(max),其它几个分别处于25%,50%,75%的位置,如此以来,那个Q 2 就是老三,但奇怪的是,这里的Q 2 是指平均值(average),不是指那个中位值,我猜可能是统计学家们搞错了:其他几个兄弟姐妹谈的都是“位置”上的数嘛!干嘛这个Q 2 就非得是个平均值呢?

所谓四分位差(Interquartile Range,IQR)就是IQR=Q 3 – Q 1 ,在我们这个12345的例子里,IQR= Q 3 - Q 1 = 4 -2 = 2。

在Excel里面有一种图形叫箱型图(boxplot),其原理就是这个IQR。只是这个箱子的中间是中位值,而不是那个Q 2 (平均值),这跟我理解的是一个意思,Q 2 就应该该是个中位值嘛!但很讨厌的是,这个箱子的两边并不严格等于Q 1 ,Q 4 ,箱子上下还有两条边界线,本来它们就应该是我们下面提到的最小、最大异常值,但它实际上却是Q 0 ,Q 4 ,这也是我非常不理解的地方 – 这样的话,这个箱式图还有多大的意义呢?我理想中的箱式图应该是这样的:箱体中间是Q 2 或中位值,上下盖则是Q 1 ,Q 3 ,以此来显示数据的集中范围,或者是表示数据“应该的分布”范围;上下盖之外伸出的两条天线则应该分别是最大、最小异常值,以此圈定来“正常值范围”,天线之外的则是异常值。我之所以这么认为是因为从供应链管理角度,最大值(max)、最小值(min)是没所谓的,它们本身并不能代表是正常还是异常,我们更关心的是所谓的异常,因为供应链管理有所谓“非正常需求(Abnormal Demand)”这一说。

下面我们就来谈谈这个问题。

5. 异常值(Outlier, 最小异常值、最大异常值)

所谓异常就是不正常,而正常与不正常是相对而言的,既然是相对而言,那就得有个相对的尺度,这个尺度就是最大异常值及最小异常值,范围内的叫“正常值”,范围之外的则是异常值。

这个范围定义为: Q2±1.5IQR。

针对我们的例子y =(1,2,3,4,5),最大异常值就是Q2+1.5IQR=3+1.5×2=6,最小异常值就是Q2 - 1.5IQR=3 - 1.5×2=0,也就是说y里面没有异常值。但如果把那个5换成6,则6必是“异常”,感兴趣的读者可以用Excel套一下那个公式试试看。

需要搞清楚的是,这个所谓的异常值跟第2个问题提到的截尾均值里面的那个“截尾”部分不是一个概念 – 被“截尾”掉的数值不一定是“异常值”,而异常值则应该是被截尾的对象。关于这个结论,我自己并没有进行过严格的数学证明,但大家不妨多弄一些奇奇怪怪的数字,然后用Excel模拟验证一下看看。

6****.方差(Variance)

顾名思义,方差就是“差的平方”,统计学上的方差指一组数的中的每个数减掉其平均值之后的差的平方的平均值。

回到我们的例子y=(1,2,3,4,5),其平均值是3,y-3之后的差为:(-2,-1, 0, 1, 2),差的平方为(4,1,0,1,4),其和为10,其平均值为10/5=2或10/(5-1)=2.5,都可以,表现在Excel公式中,一个是var.p( ),var.s( ),其中的p、s分别代表总体(population)、样本(sample)的意思。在实际应用中,哪个都可以,因为它们是反映数据的相对离散程度,不同的数组之间只要是用同一个公式进行计算并对比衡量即可。

7. 标准差(Standard Deviation)

直接对方差开根号就得到标准差。针对我们的例子,我们可以得到的标准差就是根(2)=1.414或根(2.5)=1.581,或者用Excel公式 stdev.p( )、stdev.s( )计算标准差,两个结果都可以。

这个所谓的标准差其实就是传说中的那个西格玛(σ),一个σ 就是一个标准差。如果你认为需求分布符合正态分布,均值±1σ 就能覆盖68%左右的数据分布,均值±2σ 覆盖95%左右的数据分布,均值±3σ 覆盖99%左右的数据分布;如果你不认为需求分布符合正态分布,那就是随机分布,但没有关系,即使这样,均值±2σ 也能覆盖87%左右的数据分布,均值±3σ 也能覆盖95%左右的数据分布,这是根据马尔可夫不等式(《全面库存管理数学分析》第三章的内容)得出的结论。

8. 需求波动率

标准差除以算术平均值就是所谓的波动率,统计学上叫CV(Coefficient of Variation, 变异系数)。这个CV对于我们分析客户或市场需求非常重要,是需求分类的重要指标之一。

针对我们的12345,其需求波动率为1.414/3= 0.471或 1.581/3=0.527。

同样,这个需求波动率是相对而言的,不同产品或者同一产品来自不同的客户、不同的分销中心,其需求波动率可能是不一样的,在我的书《制造业全面库存管理》里面,这个波动率被用来做XYZ分类。

波动率也是衡量需求聚集效应的一个非常直观的指标 – 被合并了的需求的波动率小于合并前单个需求的波动率之和。

9. 一阶差分值(difference)

所谓的一阶差分就是一组数内部相减,老二减老大,老三减老二,减到最后即可。很简单,我们的例子得到的一阶差分结果就是(1,1,1,1)。

一阶差分的意义是什么呢?

还是针对我们的例子,y=(1,2,3,4,5)是一条斜线,而差分后的序列(1,1,1,1)则是一条水平的直线。从供应链管理角度,你是喜欢你的客户给你的需求是斜线呢还是近似水平的直线好一些?

从统计预测角度,不言而喻,水平的直线更好预测一些,因为需求相对平稳。只是需要大家注意的是,统计学上讲的“平稳”可能跟大家脑子里面想象的不太一致。这个平稳的英文单词是stationary,它是指需求的移动平均值相对稳定,尽管一定期间内的需求可能是起起伏伏的,但这个需求并没有明显的上升或下降的趋势,这就是“需求平稳”,它跟 stable 不是一个意思,stable是指稳定的意思,即每期需求大致相同。

10. 需求的趋势函数(trend function)

针对时间轴x=(1,2,3,4,5),出货量y=(1,2,3,4,5)的函数表达式是什么?

我们可以用两种方法得到结果,一种是用Excel作折线图,添加趋势线,选择“线性”,显示公式,我们得到 y=x;另外一种方法也是在Ecxcel里面用 index(linest( ) )求出y=ax+b中的a的值为1,b=0。

函数与方程思想是数学思想宝库的重要组成部分,供应链管理也需要一些函数与方程思维(有关这部分,包括后面两个知识点的详细内容,大家可以参考《全面库存管理数学分析》第六章)。

11. 需求函数的一阶导数(derivation)

需求函数是 y=x,其一阶导数就是 y’=1,如果你跟第9个问题联系起来看,你就会发现,这个一阶导数跟一阶差分值是相等的,都是1,这是为什么呢?

道理很简单,不是很严谨的理解,无限差分就是微分,微分之后即可求导数。无论是一阶差分还是这个一阶导数,都是表示需求的增长速度。

12. 预测第6期的需求值。

有了前面的工作,这个第6期,即6月份的需求预测就很简单了。我们可以用三种方法来完成这个统计预测:

一是差分预测法:根据第9个问题点,我们得到的差分序列是(1,1,1,1),是一条水平的直线,那么,很自然地,我们就“趋势外推”,运用差分的方程 y 6 -y 5 =y 6 -5=1 求得 y 6 =5+1=6。

第二种方法是利用趋势函数:y=x,当x=6的时候,y=x=6

第三种方法则是利用一阶导数:我们知道该函数的一阶导数就是代表着需求增速,而这个值是1,那么,同样很自然地,我们用 y 5 + 1 =y 6 = 5+1 = 6。

当然,简单省事的统计预测方法还有平均值法,即y 6 = 3或者干脆取上一期的值作为下一期的预测,即y 6 =y 5 =5。

除此之外,你也可以考虑用移动平均法,包括我在一篇文章里提到的“自然加权平均法”来预测这个6月份的需求。

但是,无论哪个预测结果,还是那句话,对于统计预测,你信则有之,不信则无。

【写在结尾处】

我相信,绝大多数的读者都是可以搞得懂这12个知识点的,但是,从搞得懂,到用得上,再到用得熟,甚至是用出彩儿来,这可能需要一个过程,你不下点功夫是不行的。所以,不要小瞧这个12345,弄好了,你一样可以用它去打老虎!你甚至可以认为,这就是《全面库存管理数学分析》的极简版本。

另外,我在问卷星上把这12个知识点做成了考试题,链接如下,有时间可以邀请你周边的同事、朋友,尤其是你的老板们做做看,也好顺便测测他们的智商。

https://ks.wjx.top/vm/YDIAWDg.aspx

作者程晓华(John Cheng),全面库存管理(TIM)咨询独立顾问,《制造业库存控制技术与策略》课程创始人、讲师,《制造业库存控制技巧》、《首席物料官(网络)》、《决战库存》、《制造业全面库存管理》、《全面库存管理数学分析(2022年1月已经上市,京东、当当网等皆有售)》著作者,邮箱: [email protected] TIM订阅号:ITOOTD

在使用函数处理不完整的数据时,一定要查阅帮助文档(例如,help(sum)),检查这些函数是如何处理缺失数据的。

我们也可以通过na.omit()移除所有含有缺失值的观测(行删除)。也就是删除所有含有缺失值数据的行。(但是此方法只适合少数缺失值或缺失值仅集中于小部分观测中,对于缺失值遍布于数据之中并不是很适用)