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