VERSION 5.00 Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX" Begin VB.Form Form1 Caption = "Form1" ClientHeight = 1830 ClientLeft = 60 ClientTop = 345 ClientWidth = 5280 LinkTopic = "Form1" ScaleHeight = 1830 ScaleWidth = 5280 ShowInTaskbar = 0 'False StartUpPosition = 3 'Windows の既定値 Begin VB.TextBox Text2 Height = 270 Left = 480 TabIndex = 2 Text = "8.反復付二元配置の分散分析.交互作用" Top = 480 Width = 3375 End Begin MSComDlg.CommonDialog CommonDialog1 Left = 3840 Top = 1200 _ExtentX = 847 _ExtentY = 847 _Version = 393216 End Begin VB.CommandButton Command1 Caption = "0入力;学生用ファイル(*.js),その他の値;先生用ファイル(*.txt)作成 " Height = 855 Left = 1320 TabIndex = 1 Top = 960 Width = 2055 End Begin VB.TextBox Text1 Height = 495 Left = 240 TabIndex = 0 Top = 1200 Width = 735 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub command1_click() '8.分散分析,反復付二元配置.交互作用検定.0入力は学生,それ以外は教師用ファイル作成' Dim bango As Integer bango = Val(Text1.Text) CommonDialog1.ShowSave Open CommonDialog1.FileName For Output As #1 q = 0 Form1.AutoRedraw = True yr = Val(Mid$(Date$, 3, 4)) Print yr Randomize (yr + 18) Dim X(20, 20, 5), SUMA(9), SUMB(9) Dim MA(9), MB(9), MC(9) NA = 4: NB = 3: NC = 3 If bango = 0 Then GoTo NOBANGO Else For m = 1 To 9 Print #1, ""; m; " "; Next m For m = 10 To 50 Print #1, ""; m; " "; Next m For m = 51 To 59 Print #1, ""; m; " "; Next m For m = 60 To 99 Print #1, ""; m; " "; Next m Print #1, "
"
End If
NOBANGO:
 For REP = 1 To 50   'Number of students
 For HAN = 1 To 3    'Number of works per student
SEI0:
 For L = 1 To 9: SUMA(L) = 0: Next L
 For L = 1 To 9: SUMB(L) = 0: Next L
 For L = 1 To 9: MA(L) = 0: Next L
 For L = 1 To 9: MB(L) = 0: Next L
 For L = 1 To 9: MC(L) = 0: Next L
  If HAN = 2 Then GoTo SEI1
  If HAN = 3 Then GoTo SEI2
  For i = 1 To NA: For j = 1 To NB: For k = 1 To NC
  X(i, j, k) = Int(Rnd * 2.8 + i * 1.2 + j * 1.2) '$$$$$$$DATA SAKUSEI
  Next k: Next j: Next i
  GoTo SEI3
SEI1:
  For i = 1 To NA: For j = 1 To NB: For k = 1 To NC
  x13 = Int(Rnd * 2.8 + i * 1.2 + j * 1.2) '$$$$$$$DATA SAKUSEI
  If i = NA And j = NB Then x13 = x13 - 2
  X(i, j, k) = x13
  Next k: Next j: Next i
  GoTo SEI3
SEI2:
  For i = 1 To NA: For j = 1 To NB: For k = 1 To NC
  x13 = Int(Rnd * 2.8 + i * 1.2 + j * 1.2) '$$$$$$$DATA SAKUSEI
  If i = 1 And j = 1 Then x13 = x13 + 3
  If i = NA And j = NB Then x13 = x13 - 3
  X(i, j, k) = x13
  Next k: Next j: Next i
SEI3:
  'SAME AVG CHECK '
  For i = 1 To NA: For j = 1 To NB: For k = 1 To NC
  SUMA(i) = SUMA(i) + X(i, j, k)
  Next k: Next j: Next i
  For i = 1 To NB: For j = 1 To NA: For k = 1 To NC
  SUMB(i) = SUMB(i) + X(j, i, k)
  Next k: Next j: Next i
  For i = 1 To NA - 1: For j = 1 To NA - i
  If SUMA(i) = SUMA(i + j) Then GoTo SEI0
  Next j: Next i
  For i = 1 To NB - 1: For j = 1 To NB - i
  If SUMB(i) = SUMB(i + j) Then GoTo SEI0
  Next j: Next i
 ' ------ '
  GM = 0: GD = 0: MAB = 0: DAB = 0: DA = 0: DB = 0: DC = 0: CC = 0
  SP = 5 * NC / 2 + (NC - 2)
  For i = 1 To NA: For j = 1 To NB: For k = 1 To NC 'TOTAL M & SS
  GM = GM + X(i, j, k): GD = GD + X(i, j, k) ^ 2
  Next k: Next j: Next i
  cF = GM * GM / (NA * NB * NC): GD = GD - cF
  For i = 1 To NA: For j = 1 To NB           'A X B SS
   For k = 1 To NC
   MAB = MAB + X(i, j, k): Next k
   DAB = DAB + MAB ^ 2: MAB = 0
   Next j: Next i
   DAB = DAB / NC - cF
   For i = 1 To NA 'mean & ss of A, print mean a,b
   For j = 1 To NB
   For k = 1 To NC
   MA(i) = MA(i) + X(i, j, k)
   Next k
   Next j
   Next i
   For i = 1 To NA
   DA = DA + MA(i) ^ 2
   Next i
   DA = DA / (NB * NC) - cF
   For j = 1 To NB: For i = 1 To NA: For k = 1 To NC ' MEAN & SS OF B
   MB(j) = MB(j) + X(i, j, k)
   Next k: Next i: Next j
   For i = 1 To NB
   DB = DB + MB(i) ^ 2
   Next i
   DB = DB / (NA * NC) - cF
   For k = 1 To NC: For i = 1 To NA: For j = 1 To NB ' MEAN & SS OF REPS
   MC(k) = MC(k) + X(i, j, k)
   Next j: Next i: Next k
   For i = 1 To NC
   DC = DC + MC(i) ^ 2
   Next i
   DC = DC / (NA * NB) - cF
   ERS = GD - DAB - DC
   AXBS = DAB - DA - DB
   DF = NA * NB * NC - NA * NB - NC + 1
   MSC = DC / (NC - 1)
   MSA = DA / (NA - 1)
   MSB = DB / (NB - 1)
   MSAB = DAB / (NA * NB - 1)
   MSAXB = AXBS / (NA * NB - NA - NB + 1)
   ER = ERS / DF
   ' ** check   --------- '
      If HAN = 3 Then GoTo KEN1
   If MSA / ER < 3.05 Then GoTo SEI0
KEN1:
   If HAN = 3 Then GoTo KEN2
   If MSB / ER < 3.44 Then GoTo SEI0
KEN2:
   If HAN = 2 Then GoTo KEN3
   If HAN = 3 Then GoTo KEN4
   If MSAXB / ER > 2.55 Then GoTo SEI0 Else GoTo KEN5
KEN3:
   If MSAXB / ER < 2.55 Then GoTo SEI0
   If MSAXB / ER > 3.76 Then GoTo SEI0 Else GoTo KEN5
KEN4:
   If MSAXB / ER < 3.76 Then GoTo SEI0
KEN5:
If bango = 0 Then GoTo STUDENTS
  ' ------- '
  If REP < 10 And HAN = 1 Then Print #1, ""
  If REP > 9 And HAN = 1 Then Print #1, ""
   Print #1, REP; "-"; HAN
   Print #1, REP + 50; "-"; HAN
  Print #1, "   ";
  For i = 1 To NA
  Print #1, "A";
  Print #1, Format(i, "##");
  Print #1, Spc(4);
  Next i
  Print #1,
  Print #1, "REP ";: For i = 1 To NA: For k = 1 To NC: Print #1, Format(k, "##");
  Next k: Print #1, "   ";: Next i: Print #1,
  For j = 1 To NB
  Print #1, "B";
  Print #1, Format(j, "##");: Print #1, ";";
  For i = 1 To NA: For k = 1 To NC
  Print #1, Format(X(i, j, k), "##");
  Print #1, " ";
  Next k: Next i: Print #1,: Next j
  For i = 1 To NA: MA(i) = 0: Next i
   For i = 1 To NA
   MAAA = 0
   For j = 1 To NB
   For k = 1 To NC
   MA(i) = MA(i) + X(i, j, k)
   Next k
   Print #1, Format((MA(i) - MAAA) / 3, "##.##");
   Print #1, Spc(2);
   MAAA = MA(i)
   Next j
   Print #1, "; ";
   Next i
   Print #1,
   Print #1, "MEAN A; ";
   For i = 1 To NA: Print #1, " No."; i; "; "; Format(MA(i) / (NB * NC), "###.####");: Next i: Print #1,
   Print #1, "MEAN B; ";
   For i = 1 To NB: Print #1, " No."; i; "; "; Format(MB(i) / (NA * NC), "###.####");: Next i: Print #1,
   Print #1, "T="; GD + cF; "-"; GM; "^2/"; NA * NB * NC; "TR="; (DAB + cF) * NC; "/"; NC; "-"; cF
   Print #1, "A="; (DA + cF) * (NB * NC); "/"; NB * NC; "-CF "; "B="; (DB + cF) * (NA * NC); "/"; NA * NC; "-CF "; "BLOCK="; (DC + cF) * (NA * NB); "/"; NA * NB; "-CF "
   Print #1, "FACTOR      DF      SS       MS       F     0.05     0.01 "
   Print #1, "TOTAL   ";
   Print #1, NA * NB * NC - 1;
   Print #1, Spc(4);
   Print #1, Format(GD, "000.000")
   Print #1, "SHORI   ";
   Print #1, NA * NB - 1;
   Print #1, Spc(4);
   Print #1, Format(DAB, "000.000");
   Print #1, Spc(4);
   Print #1, Format(MSAB, "000.000")
  ' Print #1, Spc(4);'
  ' Print #1, Format(MSAB / ER, "000.000") '
   F5 = 3.05
   F1 = 4.82
   Print #1, "  A     ";
   Print #1, NA - 1;
   Print #1, Spc(4);
   Print #1, Format(DA, "000.000");
   Print #1, Spc(4);
   Print #1, Format(MSA, "000.000");
   Print #1, Spc(4);
   Print #1, Format(MSA / ER, "000.000");
   Print #1, Spc(4);
   Print #1, Format(F5, "000.000");
   Print #1, Spc(4);
   Print #1, Format(F1, "000.000")
   F5 = 3.44
   F1 = 5.72
   Print #1, "  B     ";
   Print #1, NB - 1;
   Print #1, Spc(4);
   Print #1, Format(DB, "000.000");
   Print #1, Spc(4);
   Print #1, Format(MSB, "000.000");
   Print #1, Spc(4);
   Print #1, Format(MSB / ER, "000.000");
   Print #1, Spc(4);
   Print #1, Format(F5, "000.000");
   Print #1, Spc(4);
   Print #1, Format(F1, "000.000")
   F5 = 2.55
   F1 = 3.76
   Print #1, " A X B   ";
   Print #1, NA * NB - NA - NB + 1;
   Print #1, Spc(4);
   Print #1, Format(AXBS, "000.000");
   Print #1, Spc(4);
   Print #1, Format(MSAXB, "000.000");
   Print #1, Spc(4);
   Print #1, Format(MSAXB / ER, "000.000");
   Print #1, Spc(4);
   Print #1, Format(F5, "000.000");
   Print #1, Spc(4);
   Print #1, Format(F1, "000.000")
   F5 = 3.44
   F1 = 5.72
   Print #1, "BLOCK   ";
   Print #1, NC - 1;
   Print #1, Spc(4);
   Print #1, Format(DC, "000.000");
   Print #1, Spc(4);
   Print #1, Format(MSC, "000.000");
   Print #1, Spc(4);
   Print #1, Format(MSC / ER, "000.000");
   Print #1, Spc(4);
   Print #1, Format(F5, "000.000");
   Print #1, Spc(4);
   Print #1, Format(F1, "000.000")
   Print #1, "ERROR   ";
   Print #1, DF;
   Print #1, Spc(4);
   Print #1, Format(ERS, "000.000");
   Print #1, Spc(4);
   Print #1, Format(ER, "000.000")
   SXBARA = (ER / 9) ^ (1 / 2)
   LSDA = 2.074 * (2) ^ (1 / 2) * SXBARA
   SXBARB = (ER / 12) ^ (1 / 2)
   LSDB = 2.074 * (2) ^ (1 / 2) * SXBARB
   Print #1, "SXbarA= "; SXBARA; " "; "lsdA= "; LSDA
   Print #1, "SXbarB= "; SXBARB; " "; "lsdB= "; LSDB
If bango <> 0 Then GoTo OSIMAI
' ========================   '
' FILE FOR STUDENTS '
STUDENTS:
If HAN > 1 Then GoTo TOBU3
    Print #1, "jsDB[";
    Print #1, q;
    Print #1, "]='";
TOBU3:
  Print #1, "No. "; HAN;
  Print #1, "
"; For i = 1 To NA Print #1, "_|_"; Print #1, "A"; Print #1, Format(i, "##"); Next i Print #1, "
"; Print #1, "REP ";: For i = 1 To NA: For k = 1 To NC: Print #1, Format(k, "##"); Next k: Print #1, " ";: Next i: Print #1, "
"; For j = 1 To NB Print #1, "B"; Print #1, Format(j, "##");: Print #1, ";"; For i = 1 To NA: For k = 1 To NC Print #1, Format(X(i, j, k), "##"); Print #1, Spc(1); Next k: Next i: Print #1, "
";: Next j Print #1, "SOWA="; Format(GM, "####"); Print #1, Spc(3); Print #1, "JIJO="; Format(GD, "#####"); SXBARA = (ER / 9) ^ (1 / 2) LSDA = 2.074 * (2) ^ (1 / 2) * SXBARA SXBARB = (ER / 12) ^ (1 / 2) LSDB = 2.074 * (2) ^ (1 / 2) * SXBARB Print #1, Spc(3); Print #1, "lsdA="; Format(LSDA, "####.#####"); Print #1, Spc(3); Print #1, "lsdB="; Format(LSDB, "####.#####"); Print #1, "
"; OSIMAI: Next HAN Print #1, "'" q = q + 1 Next REP Close #1 Form1.Print Form1.Print "OK" End Sub