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

📄 非线性逐步回归f2.frm

📁 这是一个有关概率中的回归分析算法,内有多种算法,欢迎大家使用.
💻 FRM
📖 第 1 页 / 共 2 页
字号:
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H80000008&
      Height          =   375
      Left            =   6360
      TabIndex        =   9
      Top             =   1080
      Width           =   1455
   End
   Begin VB.Label lbl005F 
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      BorderStyle     =   1  'Fixed Single
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H80000008&
      Height          =   375
      Left            =   6360
      TabIndex        =   8
      Top             =   720
      Width           =   1455
   End
   Begin VB.Label lblFA 
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      BorderStyle     =   1  'Fixed Single
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H80000008&
      Height          =   375
      Left            =   6360
      TabIndex        =   7
      Top             =   360
      Width           =   1455
   End
   Begin VB.Label Label3 
      Alignment       =   1  'Right Justify
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "显著性水平为0.01的F临界值:"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H80000008&
      Height          =   375
      Left            =   2640
      TabIndex        =   6
      Top             =   1080
      Width           =   3735
   End
   Begin VB.Label Label2 
      Alignment       =   1  'Right Justify
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "显著性水平为0.05的F临界值:"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H80000008&
      Height          =   375
      Left            =   2640
      TabIndex        =   5
      Top             =   720
      Width           =   3735
   End
   Begin VB.Label Label1 
      Alignment       =   1  'Right Justify
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "最终回归方程F检验值:"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H80000008&
      Height          =   375
      Left            =   2640
      TabIndex        =   4
      Top             =   360
      Width           =   3735
   End
End
Attribute VB_Name = "frmCalculate"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'非线性逐步回归
Option Explicit

Private Sub Form_Load()
    Label1.Visible = False: Label2.Visible = False: Label3.Visible = False
    Label4.Visible = False: Label9.Visible = False
    lblFA.Visible = False: lbl005F.Visible = False: lbl001F.Visible = False
    lblB(0).Visible = False: lblV(0).Visible = False: lblT(0).Visible = False
    lblType(0).Visible = False: lblR(0).Visible = False
    lblt005.Visible = False: lblt001.Visible = False: Label7.Visible = False
    cmdContinue.Visible = False
End Sub

'计算
Private Sub cmdCalculate_Click()
    Dim F As Double, F1 As Double, F2 As Double
    Dim sngF As Single, sngH As Single
    Dim F005 As Double, F001 As Double
    Dim sngF005 As Single, sngF001 As Single
    Dim t005 As Double, t001 As Double
    Dim sngt005 As Single, sngt001 As Single
    Dim UA As Integer, Ue As Integer
    Dim I As Integer, J As Integer
    For I = 1 To n
        For J = 1 To m + 1
            If xy(I, J) <= 0 Then
                MsgBox "变量不能为0或负数,先转换数据后再作!"
                End
            End If
            xy1(I, J) = xy(I, J)                '保存变换前的原始数据
            xyChange xy(I, J), xyType(J)        '对变量进行变换
        Next J
    Next I
    If txtF1.Text = "" Or txtF2.Text = "" Then
        MsgBox "必须给定引入F和剔出F!"
        Exit Sub
    End If
    F1 = Val(txtF1.Text): F2 = Val(txtF2.Text)
    If F1 < F2 Then
        MsgBox "F1不能小于F2!"
        Exit Sub
    End If
    If F1 = 0 And F2 = 0 Then MsgBox "F1 = F2 = 0 引入全部变量。不进行t检验"
    Label1.Visible = True: Label2.Visible = True: Label3.Visible = True
    Label4.Visible = True: Label9.Visible = True
    lblFA.Visible = True: lbl005F.Visible = True: lbl001F.Visible = True
    lblB(0).Visible = True: lblV(0).Visible = True: lblT(0).Visible = True
    lblType(0).Visible = True: lblR(0).Visible = True
    lblt005.Visible = True: lblt001.Visible = True: Label7.Visible = True
    Strd xy, F1, F2, F, L, b, t     '建立回归方程并求F值和t值
    sngF = F
    lblFA.Caption = Str(sngF)
    UA = L: Ue = n - L - 1
    PF_DIST UA, Ue, 0.05, F005      '计算显著性为0.05的F临界值
    PF_DIST UA, Ue, 0.01, F001      '计算显著性为0.01的F临界值
    sngF005 = F005: sngF001 = F001
    lbl005F.Caption = Str(sngF005): lbl001F.Caption = Str(sngF001)
    If F <= F005 Then lblDA = "总的来看,自变量对因变量的影响不显著"
    If F > F005 And F <= F001 Then lblDA = "总的来看,自变量对因变量的影响显著"
    If F > F001 Then lblDA = "总的来看,自变量对因变量的影响特别显著"
    If m > 20 Then MsgBox "只显示前20个自变量的情况"
    PT_DIST Ue, 0.05 / 2, t005      '计算显著性为0.05的t临界值
    PT_DIST Ue, 0.01 / 2, t001      '计算显著性为0.01的t临界值
    sngt005 = t005: sngt001 = t001
    lblB(0).Caption = "b" & " 0"
    lblV(0).Caption = Str(b(0))
    sngH = lblB(0).Height
'使用标签显示检验结果
    For I = 1 To m
        Load lblB(I): Load lblV(I): Load lblT(I)
        Load lblType(I): Load lblR(I)
        lblB(I).Move lblB(0).Left, lblB(0).Top + I * sngH
        lblB(I).Caption = "b" & Str(I)
        lblB(I).Visible = True
        lblV(I).Move lblV(0).Left, lblV(0).Top + I * sngH
        lblV(I).Caption = Str(b(I))
        lblV(I).Visible = True
        lblT(I).Move lblT(0).Left, lblT(0).Top + I * sngH
        lblT(I).Caption = Str(t(I))
        lblT(I).Visible = True
        lblR(I).Move lblR(0).Left, lblR(0).Top + I * sngH
        lblR(I).Visible = True
        lblType(I).Move lblType(0).Left, lblType(0).Top + I * sngH
        lblType(I).Visible = True
        If t(I) <= t005 Then lblR(I) = "不显著"
        If t(I) > t005 And t(I) <= t001 Then lblR(I) = "显著"
        If t(I) > t001 Then lblR(I) = "特别显著"
        If F1 = 0 Or F2 = 0 Then
            lblT(I).Caption = "*****": lblR(I).Caption = "*****"
        End If
    Next I
    Load lblR(m + 1): Load lblType(m + 1)
    lblR(m + 1).Move lblR(0).Left, lblR(0).Top + (m + 1) * sngH
    lblR(m + 1).Caption = "Y变换为"
    lblR(m + 1).Visible = True
    lblType(m + 1).Move lblType(0).Left, lblType(0).Top + (m + 1) * sngH
    lblType(m + 1).Visible = True
'在变换类型标签内显示变换类型
    I = 0
100:
    I = I + 1
    Select Case xyType(I)           '公有xyType(I)保存变量类型编码
        Case 1
            lblType(I) = "X"
            If I = m + 1 Then lblType(I) = "Y"
        Case 2
            lblType(I) = "X^2"
            If I = m + 1 Then lblType(I) = "Y^2"
        Case 3
            lblType(I) = "X^3"
            If I = m + 1 Then lblType(I) = "Y^3"
        Case 4
            lblType(I) = "1/X"
            If I = m + 1 Then lblType(I) = "1/Y"
        Case 5
            lblType(I) = "1/X^2"
            If I = m + 1 Then lblType(I) = "1/Y^2"
        Case 6
            lblType(I) = "Sqr(X)"
            If I = m + 1 Then lblType(I) = "Sqr(Y)"
        Case 7
            lblType(I) = "1/Sqr(X)"
            If I = m + 1 Then lblType(I) = "1/Sqr(Y)"
        Case 8
            lblType(I) = "Sqr(X^2-1)"
            If I = m + 1 Then lblType(I) = "Sqr(Y^2-1)"
        Case 9
            lblType(I) = "Log(X)"
            If I = m + 1 Then lblType(I) = "Log(Y)"
        Case 10
            lblType(I) = "Exp(X)"
            If I = m + 1 Then lblType(I) = "Exp(Y)"
        Case 11
            lblType(I) = "Exp(-X)"
            If I = m + 1 Then lblType(I) = "Exp(-Y)"
        Case 12
            lblType(I) = "Sin(X)"
            If I = m + 1 Then lblType(I) = "Sin(X)"
        Case 13
            lblType(I) = "Cos(X)"
            If I = m + 1 Then lblType(I) = "Cos(Y)"
        Case 14
            lblType(I) = "Sin(2*X)"
            If I = m + 1 Then lblType(I) = "Sin(2*Y)"
        Case 15
            lblType(I) = "Cos(2*X)"
            If I = m + 1 Then lblType(I) = "Cos(2*Y)"
    End Select
    If I < m + 1 Then GoTo 100
    lblt005.Caption = "t(0.05)=" & Str(sngt005)
    lblt001.Caption = "t(0.01)=" & Str(sngt001)
    If F1 = 0 Or F2 = 0 Then
        lblt005.Caption = "*****": lblt001.Caption = "*****"
    End If
    cmdContinue.Visible = True
'恢复xy数组为原始数据
    For I = 1 To n
        For J = 1 To m + 1
            xy(I, J) = xy1(I, J)
        Next J
    Next I
End Sub

'继续
Private Sub cmdContinue_Click()
    Unload Me
    frmContinue.Visible = True
End Sub

'退出
Private Sub cmdExit_Click()
    Unload Me
    End
End Sub

⌨️ 快捷键说明

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