⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 多项式逐步回归f3.frm

📁 这是一个有关概率中的回归分析算法,内有多种算法,欢迎大家使用.
💻 FRM
字号:
VERSION 5.00
Begin VB.Form frmContinue 
   Appearance      =   0  'Flat
   BackColor       =   &H80000005&
   Caption         =   "多项式逐步回归"
   ClientHeight    =   8010
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   7425
   LinkTopic       =   "Form1"
   ScaleHeight     =   8010
   ScaleWidth      =   7425
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton cmdEQL 
      Caption         =   "等  距"
      Height          =   375
      Left            =   1440
      TabIndex        =   13
      Top             =   0
      Width           =   735
   End
   Begin VB.TextBox txtData 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      Height          =   270
      Index           =   0
      Left            =   5160
      TabIndex        =   10
      Text            =   "txtData"
      Top             =   0
      Visible         =   0   'False
      Width           =   855
   End
   Begin VB.TextBox txtV 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      Height          =   270
      Left            =   1440
      TabIndex        =   7
      Top             =   1440
      Width           =   1575
   End
   Begin VB.TextBox txtFile 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      Height          =   270
      Left            =   480
      TabIndex        =   5
      Text            =   "txtFile"
      Top             =   720
      Width           =   6375
   End
   Begin VB.CommandButton cmdCalculate 
      Caption         =   "计    算"
      Height          =   375
      Left            =   2880
      TabIndex        =   3
      Top             =   0
      Width           =   1455
   End
   Begin VB.CommandButton cmdExit 
      Caption         =   "退 出"
      Height          =   375
      Left            =   2160
      TabIndex        =   2
      Top             =   0
      Width           =   735
   End
   Begin VB.CommandButton cmdSmo 
      Caption         =   "平  滑"
      Height          =   375
      Left            =   720
      TabIndex        =   1
      ToolTipText     =   "由原有的入选自变量值求函数值并存盘"
      Top             =   0
      Width           =   735
   End
   Begin VB.CommandButton cmdPre 
      Caption         =   "预  测"
      Height          =   375
      Left            =   0
      TabIndex        =   0
      ToolTipText     =   "给定入选自变量计算函数值"
      Top             =   0
      Width           =   735
   End
   Begin VB.Label lblCol 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      BorderStyle     =   1  'Fixed Single
      Caption         =   "lblCol"
      ForeColor       =   &H80000008&
      Height          =   255
      Index           =   0
      Left            =   6600
      TabIndex        =   12
      Top             =   0
      Visible         =   0   'False
      Width           =   735
   End
   Begin VB.Label lblRow 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      BorderStyle     =   1  'Fixed Single
      Caption         =   "lblRow"
      ForeColor       =   &H80000008&
      Height          =   255
      Index           =   0
      Left            =   6000
      TabIndex        =   11
      Top             =   0
      Visible         =   0   'False
      Width           =   615
   End
   Begin VB.Label lblR 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      BorderStyle     =   1  'Fixed Single
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   3720
      TabIndex        =   9
      Top             =   1440
      Width           =   1455
   End
   Begin VB.Label lblY 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "预测的结果"
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   3360
      TabIndex        =   8
      Top             =   1200
      Width           =   2175
   End
   Begin VB.Label lblV 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "键入自变量值"
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   1440
      TabIndex        =   6
      Top             =   1200
      Width           =   1695
   End
   Begin VB.Label lblFile 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "保存平滑后的数据文件(可以改变)"
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   1680
      TabIndex        =   4
      Top             =   480
      Width           =   4575
   End
End
Attribute VB_Name = "frmContinue"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'多项式逐步回归
Option Explicit
Dim strSmoFile As String, I As Integer, J As Integer
Dim intFileNumber As Integer, vntA As Variant

Private Sub Form_Load()
    Me.Top = 0
    cmdCalculate.Visible = False
    lblFile.Visible = False: txtFile.Visible = False
    txtV.Visible = False: lblR.Visible = False
    lblV.Visible = False: lblY.Visible = False
    intFileNumber = FreeFile            '取得空闲的文件号码
    Open strFileName For Input As intFileNumber '打开文件
'形成文本框数组,但不在窗体上显示
    For I = 1 To intRowAll
        For J = 1 To intCol
            Input #intFileNumber, vntA
            Load txtData((I - 1) * intCol + J)
            txtData((I - 1) * intCol + J).Text = vntA
        Next J
    Next I
'形成上部标签,但不在窗体上显示
    For I = 1 To intCol
        Input #intFileNumber, vntA
        Load lblCol(I)
        lblCol(I).Caption = vntA
    Next I
'形成左边标签,但不在窗体上显示
    For I = 1 To intRowAll
        Input #intFileNumber, vntA
        Load lblRow(I)
        lblRow(I).Caption = vntA
    Next I
    Close
End Sub

'预测
Private Sub cmdPre_Click()
    On Error Resume Next
    cmdCalculate.Caption = "计  算"
    cmdCalculate.Visible = True
    lblFile.Visible = False: txtFile.Visible = False
    lblV.Visible = True
    txtV.Visible = True: txtV.SetFocus
    Key = 1                 '预测标志
    cmdPre.Visible = False: cmdSmo.Visible = False: cmdEQL.Visible = False
End Sub

'平滑
Private Sub cmdSmo_Click()
    On Error Resume Next
    cmdCalculate.Caption = "计算并保存"
    cmdCalculate.Visible = True
    txtV.Visible = False: lblV.Visible = False
    lblY.Visible = False: lblR.Visible = False
'保存平滑结果的文件名
    txtFile.Text = frmFileName.Dir1.Path & _
                   "\平滑_" & frmFileName.File1.FileName
    lblFile.Caption = "保存平滑后的数据文件(可以改变)"
    lblFile.Visible = True: txtFile.Visible = True
    Key = 2                 '平滑标志
    cmdPre.Visible = False: cmdSmo.Visible = False: cmdEQL.Visible = False
End Sub

'等距
Private Sub cmdEQL_Click()
    On Error Resume Next
    cmdCalculate.Caption = "计算并保存"
    cmdCalculate.Visible = True
    lblY.Visible = False: lblR.Visible = False
    txtFile.Text = frmFileName.Dir1.Path & _
                   "\等距_" & frmFileName.File1.FileName
    lblFile.Caption = "保存等距后的数据文件(可以改变)"
    lblFile.Visible = True: txtFile.Visible = True
    lblV.Visible = True: txtV.Visible = True: txtV.SetFocus
    lblV.Caption = "m=": lblV.Caption = "等距点数"
    Key = 3                 '等距标志
    cmdPre.Visible = False: cmdSmo.Visible = False: cmdEQL.Visible = False
End Sub

'计算、保存
Private Sub cmdCalculate_Click()
    Dim intNumber As Integer, vntA As Variant
    Dim I As Integer, J As Integer, sngY As Single
    Dim dblX As Double, dblY As Double, MM As Integer
    Dim xMax As Double, xMin As Double, xInt As Double
    If Key = 2 Then GoTo L2
    If Key = 3 Then GoTo L3
    lblV.Visible = True: txtV.Visible = True: txtV.SetFocus
'预测计算
    If txtV.Text = "" Then
        MsgBox "必须在文本框内填入数据后再计算!"
        Exit Sub
    End If
    sngY = b(0)
    For I = 1 To m
        sngY = sngY + b(I) * Val(txtV) ^ I          '预测值
    Next I
    lblY.Visible = True: lblR.Visible = True: lblR.Caption = Str(sngY)
    Exit Sub
L2:
'保存数据准备
    intNumber = FreeFile                            '取得空闲的文件号
    Open txtFile.Text For Output As intNumber       '打开文件
'平滑计算
    For I = 1 To intCol                             '计算每个数据点的拟合值
        sngY = b(0)
        For J = 1 To m
            sngY = sngY + b(J) * XY(1, I) ^ J          '拟合值
        Next J
'在平滑情况下,行数intRow与原始数据是一样的,都是2。总行数intRowAll也不变
'自变量行的数值不变。改变的是因变量值,个数不变
'将因变量送入txtData中保存,以便存盘
        txtData((intRowAll - 1) * intCol + I) = Str(sngY)
    Next I
    GoTo L4
L3:
'等距化
'控件数组的行数和列数都发生变化,在重新建立前需卸载
    For I = 1 To intRowAll
        For J = 1 To intCol
            Unload txtData((I - 1) * intCol + J)
        Next J
    Next I
    For I = 1 To intCol
        Unload lblCol(I)
    Next I
    For I = 1 To intRowAll
        Unload lblRow(I)
    Next I
'等距计算
    If txtV.Text = "" Then
        MsgBox "必须在文本框内填入数据后再计算!"
        Exit Sub
    End If
'求自变量的最大值和最小值
'XY是原始数据。XY(1,...)为自变量。
    xMax = XY(1, 1): xMin = XY(1, 1)
    For I = 1 To intCol
        If XY(1, I) > xMax Then xMax = XY(1, I)
        If XY(1, I) < xMin Then xMin = XY(1, I)
    Next I
'等距化时不存自变量行,故行数为1,总行数为7
    intRow = 1: intRowAll = 7
    MM = Val(txtV): intCol = MM
'保存数据准备
    intNumber = FreeFile                            '取得空闲的文件号
    Open txtFile.Text For Output As intNumber       '打开文件
'重新按新的参数加载控件数组
    For I = 1 To intRowAll
        For J = 1 To intCol
            Load txtData((I - 1) * intCol + J)
        Next J
    Next I
    For I = 1 To intCol
        Load lblCol(I)
    Next I
    For I = 1 To intRowAll
        Load lblRow(I)
    Next I
    ReDim newY(1 To MM)                             '因变量
    xInt = (xMax - xMin) / MM                       '等距化时X轴的增量
    For I = 1 To MM
        dblX = xMin + (I - 1) * xInt
        sngY = b(0)
        For J = 1 To m
            sngY = sngY + b(J) * dblX ^ J           '拟合值
        Next J
'将因变量送入txtData中保存,以便存盘
'将等值化后的Y值保存在最后一行
        txtData(6 * intCol + I) = Str(sngY)
    Next I
    intCol = MM: txtData(1) = Str(intCol)           '保存列数,MM是列数
    txtData(intCol + 1) = 1                         '保存行数
    txtData(2 * intCol + 1) = 7                     '保存总行数
    txtData(3 * intCol + 1) = "多项式"              '函数类型
    txtData(4 * intCol + 1) = "等距数据"            '保存行标
    For I = 2 To intCol
        txtData(I) = "*********"
        txtData(intCol + I) = "*********"
        txtData(2 * intCol + I) = "*********"
        txtData(3 * intCol + I) = "*********"
        txtData(4 * intCol + I) = "*********"
    Next I
    For I = 1 To intCol
        txtData(5 * intCol + I) = I                 '列标
        lblCol(I).Caption = "第" & Str(I) & "列"    '上部标签
    Next I
    lblRow(1).Caption = "列数": lblRow(2).Caption = "行数"
    lblRow(3).Caption = "总行数": lblRow(4).Caption = "标题"
    lblRow(5).Caption = "行标": lblRow(6).Caption = "列标"
    lblRow(7).Caption = "数字行"
L4:
    MsgBox "现在存盘,请耐心等待!"
'写数据行
    For I = 1 To intRowAll
        For J = 1 To intCol
            Write #intNumber, txtData((I - 1) * intCol + J);
        Next J
    Next I
'保存上部标签
    For I = 1 To intCol
        Write #intNumber, lblCol(I).Caption;
    Next I
'保存左边标签
    For I = 1 To intRowAll
        Write #intNumber, lblRow(I).Caption;
    Next I
    Close                                           '关闭文件
    cmdCalculate.Visible = False
    MsgBox "存盘完成,请退出!"

End Sub

Private Sub txtV_Change()
    lblR.Caption = ""
End Sub

'退出
Private Sub cmdExit_Click()
    Unload Me
    frmFileName.Visible = True
End Sub


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -