11 / 18 · 이원분산분석

불균형한9개 셀의 평균은 표본 수와 함께 읽는다

정당×연령의 9개 셀 평균·신뢰구간·표본 수와 공동 검정을 함께 보여줍니다. 선의 교차만으로 상호작용을 판정하지 않습니다.

Type III F · 944 respondents · ANES96

불균형한9개 셀의 평균은 표본 수와 함께 읽는다
이 미리보기는 기존 16:9 장표입니다. 아래 Pele 관계도가 이 통계 그래프 전체를 생성한 것은 아닙니다.

이 관계도는 분석의 변수·설계·검정 관계를 설명하는 보조 도식입니다. 단독 HTML 발표 장표의 통계 그림과 구분합니다.

분석 관계도
Unbalanced 3×3 design, sum contrasts. Cell n and pointwise intervals remain visible. Joint interaction test is not inferred from line crossings.
Pele 관계도 원문
flowchart LR
 P["Party group"] --> Y["TV news"]
 A["Age band"] --> Y
 I["Party × age"] --> Y
 Y --> C["Cell means + joint tests"]

공개된 추정치를 받아 축·선·구간·라벨을 직접 배치하는 실제 제작 분기입니다. 생략한 공용 함수와 전체 파일도 확인할 수 있습니다.

SVG 제작 분기 · JavaScript
if (v.kind === "two-way") {
  a.push(
    T(0, 35, "A  Full-interaction cell means ·95% CI", 30, C.ink, 700),
    T(1010, 35, "B  " + v.label + " tests", 30, C.ink, 700),
  );
  const ps = ["Democrat", "Independent", "Republican"],
    bs = ["18–34", "35–54", "55+"],
    cols = [C.blue, C.teal, C.slate];
  let pp = plotFrame({
    x: 80,
    y: 110,
    w: 750,
    h: 360,
    xRange: [-0.2, 2.2],
    yRange: [0, 8],
    xTicks: [],
    yTicks: [0, 2, 4, 6, 8],
    xLabel: "Age band",
    yLabel: "TV news (times/week)",
  });
  a.push(...pp.a);
  bs.forEach((b, i) => a.push(T(pp.X(i), 510, b, 26, C.muted, 400, "middle")));
  ps.forEach((p, i) => {
    const cells = v.cells.filter((c) => c.party === p),
      xx = (j) => pp.X(j) + (i - 1) * 12;
    a.push(
      D(
        cells.map((c, j) => (j ? "L" : "M") + xx(j) + " " + pp.Y(c.mean)).join(" "),
        cols[i],
        3,
      ),
    );
    cells.forEach((c, j) =>
      a.push(
        G(
          [
            L(xx(j), pp.Y(c.lo), xx(j), pp.Y(c.hi), cols[i], 3),
            Q(xx(j), pp.Y(c.mean), 7, cols[i]),
          ],
          c.key,
        ),
      ),
    );
    a.push(
      R(40 + i * 300, 585, 16, 16, cols[i]),
      T(68 + i * 300, 604, p, 25),
      T(68 + i * 300, 640, "n: " + cells.map((c) => c.n).join(" / "), 22, C.muted),
    );
  });
  v.terms.forEach((t, i) => {
    let yy = 125 + i * 135;
    a.push(
      T(1015, yy, ["Party group", "Age band", "Party × age"][i], 29, C.ink, 650),
      T(1015, yy + 43, "F(" + t.df + ", " + v.dfResidual + ") = " + fmt(t.F, 3), 28),
      T(1015, yy + 83, pv(t.p), 26, C.muted),
    );
  });
  note =
    "Unbalanced 3×3 design, sum contrasts. Cell n and pointwise intervals remain visible. Joint interaction test is not inferred from line crossings.";
  source =
    'flowchart LR\n P["Party group"] --> Y["TV news"]\n A["Age band"] --> Y\n I["Party × age"] --> Y\n Y --> C["Cell means + joint tests"]';
  map = { P: v.cells[0].key, A: v.cells[1].key, I: v.key, Y: v.key, C: v.key };
}

이 소스는 실행 가능한 편집기가 아니라 원문을 보존한 참고 코드입니다.

데이터
해당 조건의 데이터 파일을 먼저 확인하고, 표본·단위·계수·신뢰구간을 함께 교체합니다. 표본이나 측정 수준이 다른 분석을 같은 척도로 합치지 않습니다.
그림
축 범위·라벨 폭·서체·색상은 실제 삽입 영역에 맞춥니다. 신뢰구간이 0을 포함하는지에 따라 의미를 보존하고, 화면을 줄인 뒤 다시 읽어 봅니다.
해석
관계도의 화살표와 통계 모형의 경로는 인과의 증거가 아닙니다. 평균 반응의 구간과 개별 예측구간, 점별 구간과 동시 구간을 구분합니다.