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