昨天晚上帮同学完成三次指数平滑法的预测模型算法实现,这个就很简单了。
'==============================================
'作者:大漠.jxzhoumin
'创作时间:2008.6.2
'==============================================
Private Sub CommandButton1_Click()
Call main
End Sub
Sub main()
Dim s1_0, s2_0, s3_0 As Integer
Dim s1, s2, s3 As Integer
Dim n As Integer, x As Integer
Dim at, bt, ct As Integer
Dim a As Double
Dim t As Integer 't
Dim tt As Integer 'T
If Trim(TextBox1.Text) = "" Then
MsgBox "t值不能为空!,请输入该值!"
Exit Sub
End If
If Trim(TextBox2.Text) = "" Then
MsgBox "T值不能为空!,请输入该值!"
Exit Sub
End If
If Trim(TextBox4.Text) = "" Then
MsgBox "a值不能为空!,请输入该值!"
Exit Sub
End If
a = Val(Trim(TextBox4.Text))
n = tj("sheet1") - 1
With Worksheets("sheet1")
s1_0 = (Val(.Cells(2, 2).Value + .Cells(3, 2).Value + .Cells(4, 2).Value)) / 3
s2_0 = s1_0
s3_0 = s2_0
For i = 1 To n
x = .Cells(i + 1, 2).Value
If i = 1 Then
s1 = a * x + (1 - a) * s1_0
s2 = a * s1 + (1 - a) * s2_0
s3 = a * s2 + (1 - a) * s3_0
Else
s1 = a * x + (1 - a) * .Cells(i, 3).Value
s2 = a * s1 + (1 - a) * .Cells(i, 4).Value
s3 = a * s2 + (1 - a) * .Cells(i, 5).Value
End If
.Cells(i + 1, 3).Value = Int(s1 + 0.5)
.Cells(i + 1, 4).Value = Int(s2 + 0.5)
.Cells(i + 1, 5).Value = Int(s3 + 0.5)
Next i
t = Val(Trim(TextBox1.Text))
tt = Val(Trim(TextBox2.Text))
i = 0
Do
i = i + 1
If t = .Cells(i + 1, 1) Then
s1 = .Cells(i + 1, 3).Value
s2 = .Cells(i + 1, 4).Value
s3 = .Cells(i + 1, 5).Value
x = .Cells(i + 1, 2).Value
Exit Do
End If
Loop Until i > n
at = 3 * s1 - 3 * s2 + s3
bt = (a / (2 * ((1 - a) ^ 2))) * ((6 - 5 * a) * s1 - 2 * (5 - 4 * a) * s2 + (4 - 3 * a) * s3)
ct = (a ^ 2 / (2 * ((1 - a) ^ 2))) * (s1 - 2 * s2 + s3)
TextBox3.Text = Int(at + bt * tt + ct * (tt ^ 2) + 0.5)
TextBox5.Text = Int(at + 0.5)
TextBox6.Text = Int(bt + 0.5)
TextBox7.Text = Int(ct + 0.5)
End With
End Sub
Function tj(lb) As Integer
Dim k As Integer
k = 2
Do
Set myR = Sheets(lb).Cells(k, 1)
If Trim(myR.Value) = "" Then '出现空记录
Exit Do
End If
k = k + 1
Loop Until False
tj = k - 1
End Function
分享到:
相关推荐
在本压缩包“MATLAB源码集锦-三次指数平滑及其时间序列预测.zip”中,包含的是关于MATLAB编程的源代码示例,重点聚焦于三次指数平滑方法及基于此的时间序列预测。三次指数平滑是一种常用的时间序列分析技术,用于...
三次指数平滑法是一种广泛应用的时间序列预测方法,尤其在数据点有限的情况下,它能提供较为准确的预测结果。这种方法在统计学和数据分析领域具有重要地位,因为它能够有效地处理非线性趋势、季节性和周期性变化。 ...
当数据呈现出明显的二次趋势时,三次指数平滑法应运而生,它可以有效地平滑数据并预测未来的值。 **2. 数学原理** 三次指数平滑法由三个步骤组成:趋势项的平滑、季节性项的平滑和误差项的平滑。通常表示为TSM...
MATLAB源码集锦-三次指数平滑及其时间序列预测
以三次指数平滑法为基础,结合最小二乘法原理,建立了改进三次指数平滑法,并运用该方法对黄沙矿2上采煤工作面矿山压力进行了预测研究。研究结果表明:该工作面矿山压力显现具有明显的非线性和非规律性特点,且周期来压...
它不能单独地进行预测,必须与一次指数平滑法配合,建立预测的数学模型,然后运用数学模型确定预测值。一次移动平均法的两个限制因素在线性二次移动平均法中也才存在,线性二次指数,平滑法只利用三个数据和一个α值...
本研究针对1981年至2015年中国社会消费品零售总额,运用指数平滑法预测了2016至2018年的零售总额,旨在理解消费趋势,为政策制定和市场预测提供依据。 指数平滑法是一种常用的时间序列预测技术,其核心思想是对历史...
三次指数平滑法是对二次指数平滑法的改进,用于处理时间序列具有二次曲线趋势的情况。三次指数平滑法的计算公式为: $$S_t = \alpha y_{t-1} + (1-\alpha)S_{t-1}$$ 其中,$y_{t-1}$为第t-1期的二次指数平滑值。 ...
Matlab实现三次指数平滑算法Matlab实现三次指数平滑算法Matlab实现三次指数平滑算法Matlab实现三次指数平滑算法Matlab实现三次指数平滑算法
3. **三次指数平滑 (Triple Exponential Smoothing, TES)**: \( \hat{s}_{t|t-1} = \hat{y}_{t|t-1} + \hat{b}_{t|t-1} \) \( \hat{s}_{t|t-1} \) 是第 \( t \) 时刻的预测值,它是前两个步骤的组合。 在MATLAB中...
在案例中,使用C语言编程实现了三次指数平滑法预测江苏省2015年公路交通运输总量。程序首先读取历史数据,然后通过循环计算一次、二次和三次平滑值,最后根据得到的平滑值计算预测值。在实验中,取 \( \alpha = q = ...
java代码实现指数平滑算法,其中包括一次,二次,三次
三次指数平滑是一种时间序列分析方法,用于预测未来的趋势数据,尤其适用于处理具有线性趋势和季节性的时间序列。在给定的标题“三次指数平滑”中,我们可以理解为这个压缩包可能包含了一个关于三次指数平滑算法的...
本资料包"Excel模板指数平滑法预测产品销量.zip"提供了一个实际操作的Excel模板,帮助用户理解和应用这种方法。 一、指数平滑法简介 指数平滑法是一种加权平均法,它赋予历史数据不同的权重,最近的数据权重较大,...
三次指数平滑法是一种常用的时序预测模型,尤其在处理具有趋势和季节性的时间序列数据时,表现出良好的预测效果。这种方法通过逐步平滑数据,分别处理短期波动、长期趋势和季节性变化,以得到一个光滑的趋势序列。在...
指数平滑用来做时间序列预测,数据是单个时间序列,输入数据格式为二维数据, 一维数据,只需定义一个一行多列的数组即可
三次指数平滑法是一种广泛应用的时间序列预测技术,尤其适合处理具有趋势和季节性的时间序列数据。这种方法基于平滑项的加权平均,其中权重随着数据点距离当前时刻的增加而指数衰减。在MATLAB中实现三次指数平滑,...