老G

LeoGO


  • 首页

  • 归档

预测分析算法

发表于 2018-10-27 | 分类于 算法

预测分析算法

算术平均法

算术平均法,就是以观察期数据之和除以求和时使用的数据个数(或资料期数),求得平均数进行预测的方法。

运用算术平均法求平均数,有两种形式:

(一)以最后一年的每月平均值或数年的每月平均值,作为次年的每月预测值

为了确定合理的误差,用公式估计出预测的标准差。

按公式计算某种可靠程度要求时的预测区间。

(二)以观察期的每月平均值作为预测期对应月份的预测值

当时间序列资料在年度内变动显著或呈季节性变化时,用第一种方法求平均值进行预测的话,势必影响预测值的精确度,同时也不能反映出年度内不同月、季的情况。

2、几何平均法
几何平均法,就是运用几何平均数求出预测目标的发展速度。

几何平均数,就是将观察期n个环比速度资料数相乘,开n次方,所得的n次方根。

根据几何平均数建立预测模型进行预测。

3、加权平均法
加权平均法,就是在求平均数时,根据观察期各资料重要性的不同,分别给以不同的权数后加以平均的方法。

其特点是:所求得的平均数,已包含了长期趋势变动。

移动平均法

移动平均法是用一组最近的实际数据值来预测未来一期或几期内公司产品的需求量、公司产能等的一种常用方法。移动平均法适用于即期预测。当产品需求既不快速增长也不快速下降,且不存在季节性因素时,移动平均法能有效地消除预测中的随机波动,是非常有用的。移动平均法根据预测时使用的各元素的权重不同

移动平均法是一种简单平滑预测技术,它的基本思想是:根据时间序列资料、逐项推移,依次计算包含一定项数的序时平均值,以反映长期趋势的方法。因此,当时间序列的数值由于受周期变动和随机波动的影响,起伏较大,不易显示出事件的发展趋势时,使用移动平均法可以消除这些因素的影响,显示出事件的发展方向与趋势(即趋势线),然后依趋势线分析预测序列的长期趋势。

移动平均法的种类
移动平均法可以分为:简单移动平均和加权移动平均。

简单移动平均法

简单移动平均的各元素的权重都相等。简单的移动平均的计算公式如下: Ft=(At-1+At-2+At-3+…+At-n)/n 式中,

•Ft–对下一期的预测值;
•n–移动平均的时期个数;
•At-1–前期实际值;
•At-2,At-3和At-n分别表示前两期、前三期直至前n期的实际值。

加权移动平均法

加权移动平均给固定跨越期限内的每个变量值以不同的权重。其原理是:历史各期产品需求的数据信息对预测未来期内的需求量的作用是不一样的。除了以n为周期的周期性变化外,远离目标期的变量值的影响力相对较低,故应给予较低的权重。 加权移动平均法的计算公式如下:

Ft=w1At-1+w2At-2+w3At-3+…+wnAt-n式中,

•w1–第t-1期实际销售额的权重;
•w2–第t-2期实际销售额的权重;
•wn–第t-n期实际销售额的权
•n–预测的时期数;w1+ w2+…+ wn=1
在运用加权平均法时,权重的选择是一个应该注意的问题。经验法和试算法是选择权重的最简单的方法。一般而言,最近期的数据最能预示未来的情况,因而权重应大些。例如,根据前一个月的利润和生产能力比起根据前几个月能更好的估测下个月的利润和生产能力。但是,如果数据是季节性的,则权重也应是季节性的。

移动平均法的优缺点
使用移动平均法进行预测能平滑掉需求的突然波动对预测结果的影响。但移动平均法运用时也存在着如下问题:

1、 加大移动平均法的期数(即加大n值)会使平滑波动效果更好,但会使预测值对数据实际变动更不敏感;

2、 移动平均值并不能总是很好地反映出趋势。由于是平均值,预测值总是停留在过去的水平上而无法预计会导致将来更高或更低的波动;

3、 移动平均法要由大量的过去数据的记录。
什么是指数平滑法
指数平滑法是布朗(Robert G..Brown)所提出,布朗(Robert G..Brown)认为时间序列的态势具有稳定性或规则性,所以时间序列可被合理地顺势推延;他认为最近的过去态势,在某种程度上会持续到最近的未来,所以将较大的权数放在最近的资料。

三,指数平均法
指数平滑法是生产预测中常用的一种方法。也用于中短期经济发展趋势预测,所有预测方法中,指数平滑是用得最多的一种。简单的全期平均法是对时间数列的过去数据一个不漏地全部加以同等利用;移动平均法则不考虑较远期的数据,并在加权移动平均法中给予近期资料更大的权重;而指数平滑法则兼容了全期平均和移动平均所长,不舍弃过去的数据,但是仅给予逐渐减弱的影响程度,即随着数据的远离,赋予逐渐收敛为零的权数。

也就是说指数平滑法是在移动平均法基础上发展起来的一种时间序列分析预测法,它是通过计算指数平滑值,配合一定的时间序列预测模型对现象的未来进行预测。其原理是任一期的指数平滑值都是本期实际观察值与前一期指数平滑值的加权平均。
指数平滑法的基本公式是:St=ayt+(1-a)St-1 式中,

•St–时间t的平滑值;
•yt–时间t的实际值;
•St − 1–时间t-1的平滑值;
•a–平滑常数,其取值范围为[0,1];
由该公式可知:

1.St是yt和 St − 1的加权算数平均数,随着a取值的大小变化,决定yt和 St − 1对St的影响程度,当a取1时,St = yt;当a取0时,St = St − 1。

2.St具有逐期追溯性质,可探源至St − t + 1为止,包括全部数据。其过程中,平滑常数以指数形式递减,故称之为指数平滑法。指数平滑常数取值至关重要。平滑常数决定了平滑水平以及对预测值与实际结果之间差异的响应速度。平滑常数a越接近于1,远期实际值对本期平滑值影响程度的下降越迅速;平滑常数a越接近于 0,远期实际值对本期平滑值影响程度的下降越缓慢。由此,当时间数列相对平稳时,可取较大的a;当时间数列波动较大时,应取较小的a,以不忽略远期实际值的影响。生产预测中,平滑常数的值取决于产品本身和管理者对良好响应率内涵的理解。

3.尽管St包含有全期数据的影响,但实际计算时,仅需要两个数值,即yt和 St − 1,再加上一个常数a,这就使指数滑动平均具逐期递推性质,从而给预测带来了极大的方便。

4.根据公式S1=ay1+(1-a)S0,当欲用指数平滑法时才开始收集数据,则不存在y0。无从产生S0,自然无法据指数平滑公式求出S1,指数平滑法定义S1为初始值。初始值的确定也是指数平滑过程的一个重要条件。

如果能够找到y1以前的历史资料,那么,初始值S1的确定是不成问题的。数据较少时可用全期平均、移动平均法;数据较多时,可用最小二乘法。但不能使用指数平滑法本身确定初始值,因为数据必会枯竭。

如果仅有从y1开始的数据,那么确定初始值的方法有:

1)取S1等于y1;

2)待积累若干数据后,取S1等于前面若干数据的简单算术平均数,如:S1=(y1+ y2+y3)/3等等。

指数平滑的预测公式
据平滑次数不同,指数平滑法分为:一次指数平滑法、二次指数平滑法和三次指数平滑法等。
(一) 一次指数平滑预测
当时间数列无明显的趋势变化,可用一次指数平滑预测。其预测公式为:

yt+1’=ayt+(1-a)yt’ 式中,

•yt+1’–t+1期的预测值,即本期(t期)的平滑值St ;
•yt–t期的实际值;
•yt’–t期的预测值,即上期的平滑值St-1 。
该公式又可以写作:yt+1’=yt’+a(yt- yt’)。可见,下期预测值又是本期预测值与以a为折扣的本期实际值与预测值误差之和。

(二) 二次指数平滑预测
二次指数平滑是对一次指数平滑的再平滑。它适用于具线性趋势的时间数列。其预测公式为:

yt+m=(2+am/(1-a))yt’-(1+am/(1-a))yt=(2yt’-yt)+m(yt’-yt) a/(1-a)

式中,yt= ayt-1’+(1-a)yt-1

显然,二次指数平滑是一直线方程,其截距为:(2yt’-yt),斜率为:(yt’-yt) a/(1-a),自变量为预测天数。

(三) 三次指数平滑预测
三次指数平滑预测是二次平滑基础上的再平滑。其预测公式是:

yt+m=(3yt’-3yt+yt)+[(6-5a)yt’-(10-8a)yt+(4-3a)yt]am/2(1-a)2+ (yt’-2yt+yt’)a2m2/2(1-a)2

式中,yt=ayt-1+(1-a)yt-1

它们的基本思想都是:预测值是以前观测值的加权和,且对不同的数据给予不同的权,新数据给较大的权,旧数据给较小的权。

[编辑]指数平滑法的趋势调整
一段时间内收集到的数据所呈现的上升或下降趋势将导致指数预测滞后于实际需求。通过趋势调整,添加趋势修正值,可以在一定程度上改进指数平滑预测结果。调整后的指数平滑法的公式为:

包含趋势预测(YITt)=新预测(Yt)+趋势校正(Tt)

进行趋势调整的指数平滑预测有三个步骤:

1、 利用前面介绍的方法计算第t期的简单指数平滑预测(Yt);

2、 计算趋势。其公式为: Tt=(1-b)Tt-1+b(Yt-Yt-1)其中,

•Tt=第t期经过平滑的趋势;
•Tt-1=第t期上期经过平滑的趋势;
•b=选择的趋势平滑系数;
•Yt=对第t期简单指数平滑预测;
•Yt-1=对第t期上期简单指数平滑预测。
3、计算趋势调整后的指数平滑预测值(YITt)。计算公式为:YITt=Yt+Tt。
四,线性回归法

  1. 一元线性回归预测模型
    一元线性回归预测法是分析一个因变量与一个自变量之间的线性关系的预测方法。 常用统计指标:平均数、增减量、平均增减量。

确定直线的方法是最小二乘法 最小二乘法的基本思想:最有代表性的直线应该是直线到各点的距离最近。然后用这条直线进行预测。

1、选取一元线性回归模型的变量 ;
2、绘制计算表和拟合散点图 ;
3、计算变量间的回归系数及其相关的显著性 ;
4、回归分析结果的应用 。

、经济意义检验:就是根据模型中各个参数的经济含义,分析各参数的值是否与分析对象的经济含义相符。
2、回归标准差检验
3、拟合优度检验
4、回归系数的显著性检验
利用回归预测模型进行预测
可以分为:点预测和置信区间预测法
1、点预测法:将自变量取值带入回归预测模型求出因变量的预测值。
2、置信区间预测法:估计一个范围,并确定该范围出现的概率。置信区间的大小的影响的因素:a、因变量估计值;b、回归标准差;C、概率度t。
模型分析
一元线性回归分析预测法,是根据自变量x和因变量Y的相关关系,建立x与Y的线性回归方程进行预测的方法。由于市场现象一般是受多种因素的影响,而并不是仅仅受一个因素的影响。所以应用一元线性回归分析预测法,必须对影响市场现象的多种因素做全面分析。只有当诸多的影响因素中,确实存在一个对因变量影响作用明显高于其他因素的变量,才能将它作为自变量,应用一元相关回归分析市场预测法进行预测。一元线性回归分析法的预测模型为:yt=b+axt 式中,xt代表t期自变量的值;yt代表t期因变量的值; a、b代表一元线性回归方程的参数。 a、b参数由下列公式求得(用代表):  为简便计算,我们作以下定义:   (2)   式中:   这样定义a、b后,参数由下列公式求得:   将a、b代入一元线性回归方程Yt = a + bxt,就可以建立预测模型,那么,只要给定xt值,即可求出预测值。   在回归分析预测法中,需要对X、Y之间相关程度作出判断,这就要计算相关系数Y,其公式如下:   相关系数r的特征有:   ①相关系数取值范围为:-1≤r≤1 。   ②r与b符合相同。当r>0,称正线性相关,Xi上升,Yi呈线性增加。当r<0,称负线性相关,Xi上升,Yi呈线性减少。   ③|r|=0,X与Y无线性相关关系;|r|=1,完全确定的线性相关关系;0<|r|<1,X与Y存在一定的线性相关关系;|r|>0.7,为高度线性相关;0.3<|r|≤0.7,为中度线性相关;|r|≤0.3,为低度线性相关.

vue生命周期

发表于 2018-10-27 | 分类于 vue

vue生命周期

lifecyle1

Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。

在Vue的整个生命周期中,它提供了一系列的事件,可以让我们在事件触发时注册js方法,可以让我们用自己注册的js方法控制整个大局,在这些事件响应方法中的this直接指向的是vue的实例。

生命周期图

lifecyle2

特别值得注意的是created钩子函数和mounted钩子函数的区别,每个钩子函数都在什么时间触发

1
2
3
4

在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。

```created

实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。

1
2
3
4

在挂载开始之前被调用:相关的 render 函数首次被调用。

```mounted

el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。

1
2
3
4

数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。

```updated

由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子。
当这个钩子被调用时,组件DOM已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
该钩子在服务器端渲染期间不被调用。

1
2
3
4

实例销毁之前调用。在这一步,实例仍然完全可用。

```destroyed

Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。

ssh免密登录配置

发表于 2018-10-27 | 分类于 linux

ssh免密登录配置

ssh-host-env:

192.168.132.129   kyros/123456
192.168.132.130   kyros/123456

登录192.168.132.129

ssh-keygen -t rsa ###一路回车
cd
chmod 700 .ssh
cd .ssh
vi authorized_keys
chmod 600 authorized_keys

登录192.168.132.130

ssh-keygen -t rsa ###一路回车
cd
chmod 700 .ssh
cd .ssh
vi authorized_keys
chmod 600 authorized_keys

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.132.129

ssh 192.168.132.129

登录192.168.132.129

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.132.130

ssh 192.168.132.130

同步角本

#!/bin/bash
USER_UID=kyros
USER_DIR=/home/kyros
IP_PW=PASSWORD

establishSSH ()
{
    cat >establishSSH.exp<<EOF
    #!/usr/bin/expect
    spawn ssh-copy-id -i $USER_DIR/.ssh/id_rsa.pub $SSH_IP
    expect {
        "*yes/no*" {send "yes\r"; exp_continue}
        "*passowrd*" {send "$IP_PW\r";}
    }
    expect eof
    EOF

    chmod 755 establishSSH.exp
    ./establishSSH.exp > /dev/null
    /bin/rm -rf establishSSH.exp
}

########################################################################

if [ -f server.txt ]
then
    :
else
    exit(0)
fi

if ( rpm -qa | grep -q expect )
then
    :
else
    yum -y install expect > /dev/null
fi

if [ -f $USER_DIR/.ssh/id_rsa.pub ]
then
    :
else
    ssh-keygen
fi

for SSH_IP in `server.txt`
do
    establishSSH
    if [ $? -eq 0]
    then
        echo "------------------$SSH_IP is OK ------------------------"
    else
        echo "------------------$ssh_IP is failed --------------------"
    fi
done

nginx源码安装

发表于 2018-09-14 | 分类于 nginx

http://openresty.org/cn/installation.html
https://codeload.github.com/chobits/ngx_http_proxy_connect_module/zip/master
https://nginx.org/
https://nginx.org/download/nginx-1.12.2.tar.gz

sudo yum -y install gcc gcc-c++ autoconf automake
sudo yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
./configure –prefix=/opt/nginx1 –sbin-path=/usr/bin/nginx –with-http_ssl_module –add-module=/home/smarttown/soft/ngx_http_proxy_connect_module-master
make
make install

nginx
nginx -s reload
nginx -s stop

nginx配置实例

发表于 2018-09-14 | 分类于 nginx

#user nobody;
worker_processes auto;

error_log logs/error.log;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
log_format main ‘$remote_addr - $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘“$http_user_agent” “$http_x_forwarded_for”‘;

#access_log  /var/log/nginx/access.log  main;

sendfile            on;
tcp_nopush          on;
tcp_nodelay         on;
keepalive_timeout   65;
types_hash_max_size 2048;

include       mime.types;
default_type  application/octet-stream;

include gzip.conf;

server {
    listen       8081;
    server_name  localhost;

    location / {
        root /opt/nginx1/html/st;
        index  index.html;
        try_files $uri $uri/ index.html;
    }

    location ^~ /mete/ {
        proxy_pass http://223.105.0.225:18081/;
        proxy_set_header host $host;
        proxy_set_header clientIP $remote_addr;
        proxy_set_header forwarded-for $proxy_add_x_forwarded_for;
        #include proxy.conf;
    }

    location ^~ /geom {
        proxy_pass http://223.105.5.58:18086/;
        include proxy.conf;
    }
    location ^~ /angle {
        proxy_pass http://223.105.5.61:18087/;
        include proxy.conf;
    }
    location ^~ /smoke/ {
        proxy_pass http://223.105.2.157:18001/;
        proxy_set_header host $host;
        proxy_set_header clientIP $remote_addr;
        proxy_set_header forwarded-for $proxy_add_x_forwarded_for;
        #proxy_set_header Host $host;a
        #include proxy.conf;
    }
    location ^~ /mgmt/ {
        proxy_pass https://223.105.2.158:13000/;
        proxy_set_header host $host;
        proxy_set_header clientIP $remote_addr;
        proxy_set_header forwarded-for $proxy_add_x_forwarded_for;
        #include proxy.conf;
    }
}

}

Linux基础配置

发表于 2018-07-02 | 分类于 linux

暂无内容

1
2


MySQL安装指南

发表于 2018-06-27 | 分类于 MySQL

ubuntu install mysql

apt-get install mysql-server

root设置密码

service mysql stop

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld

sudo mysqld_safe --skip-grant-tables &

mysql -u root

use mysql

UPDATE user SET authentication_string = PASSWORD('NewPassword') , password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';

update user set plugin="mysql_native_password";

flush privileges;

quit

sudo kill -9 $(pgrep mysql)

service mysql start

mha

https://www.cnblogs.com/gomysql/p/3675429.html
http://www.cnblogs.com/gomysql/p/3662492.html
http://www.cnblogs.com/gomysql/p/8985774.html
http://seanlook.com/
http://www.cnblogs.com/zhoujinyi/
http://www.keepalived.org/index.html
https://www.cnblogs.com/xuanzhi201111/p/4231412.html
http://imysql.cn/
https://www.centos.bz/
https://www.cnblogs.com/phpstudy2015-6/p/6485819.html
https://www.cnblogs.com/wolfboy55-163-com/p/8094248.html
https://blog.csdn.net/ouyang111222/article/details/50300851    

GitLab安装指南

发表于 2018-06-27 | 分类于 git

安装指南

centos7

yum install -y curl policycoreutils-python openssh-server openssh-clients
systemctl enable sshd
systemctl start sshd
firewall-cmd --permanent --add-service=http
systemctl reload firewalld
yum install postfix
systemctl enable postfix
systemctl start postfix
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce

sudo gitlab-ctl start|restart|stop|status|logs
root limp#bizkit

install gitlab on ubuntu

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
sudo apt-get install -y postfix
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce
sudo vi /etc/gitlab/gitlab.rb
    external_url "http://gitlab.example.com"
sudo gitlab-ctl reconfigure

常用命令

sudo gitlab-ctl start
sudo gitlab-ctl stop
sudo gitlab-ctl restart
sudo gitlab-ctl tail

实用技巧

GitLab 项目创建后地址由Localhost改为实际IP的方法

vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
    ## GitLab settings
      gitlab:
        ## Web server settings (note: host is the FQDN, do not include http://)
        host: localhost         >> 这里改为主机的IP即可
        port: 80
        https: false

        # Uncommment this line below if your ssh host is different from HTTP/HTTPS one
        # (you'd obviously need to replace ssh.host_example.com with your own host).
        # Otherwise, ssh host will be set to the `host:` value above
sudo gitlab-ctl restart

Redis Cluster安装

发表于 2018-06-27 | 分类于 redis

redis-cluster安装

所需软件:Redis、Ruby语言运行环境、Redis的Ruby驱动redis-xxxx.gem、创建Redis集群的工具redis-trib.rb

  1. 安装redis(6380 6381 6382 6383 6384 6385)
  2. redis.windows.conf端口号及config要iaa

    port 6379
    cluster-enabled yes
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 15000
    appendonly yes

  3. 安装rubyyum -y install ruby

  4. 安装rubygemsyum -y install rubygems
  5. 安装ruby redis驱动 gem install redis
  6. start-all.sh

    cd redis1
    ./redis-server redis.conf
    cd ..
    cd redis2
    ./redis-server redis.conf
    cd ..
    cd redis3
    ./redis-server redis.conf
    cd ..
    cd redis4
    ./redis-server redis.conf
    cd ..
    cd redis5
    ./redis-server redis.conf
    cd ..
    cd redis6
    ./redis-server redis.conf
    cd ..

  7. stop-all.sh

    ./redis1/redis-cli -p 6380 shutdown
    ./redis1/redis-cli -p 6381 shutdown
    ./redis1/redis-cli -p 6382 shutdown
    ./redis1/redis-cli -p 6383 shutdown
    ./redis1/redis-cli -p 6384 shutdown
    ./redis1/redis-cli -p 6385 shutdown

  8. 启动全部节点./start-all.sh

  9. 下载redis-trib.rb
  10. 安装集群
    redis-trib.rb create –replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
  11. 测试
    redis-cli.exe -c -h 127.0.0.1 -p 6381
    127.0.0.1:6380> dbsize
    127.0.0.1:6380> cluster info

KeepAlived安装指南

发表于 2018-05-30 | 分类于 keepalived

ubuntu

sudo apt -y install libssl-dev
sudo apt -y install libpopt-dev
sudo apt update
sudo apt -y install libnl-3-dev
12

kyros

18 日志
11 分类
© 2018 kyros