מקרה בוחן III: כלי חרס מיפן

שבוע 10 — צנצנות Ogame מתקופת אדו

שי גורדין | אוניברסיטת אריאל

צנצנות Ogame — רקע

大甕 — “כד גדול” — קיושו הצפונית, יפן, 1600–1800 לספירה

  • ייצור תעשייתי לאחסון רוטב סויה, סאקה, דשן
  • שימוש משני: כלי קבורה לגוף האדם
  • שאלה: האם כדי כבשן נבדלים מכדי קבורה בצורתם?

שאלת המחקר

האם צורת הכד מעידה על ההקשר שבו הוא שימש —
ייצור (כבשן) לעומת קבורה (בית עלמין)?

אם כן: משפחות בחרו כדים מיוחדים לקבורה.
אם לא: הכדים הועברו ישירות מהכבשן לקבר.

הנתונים (Loftus 2025)

אתר הקשר N
FR (Furukameyashimo) כבשן 89
KM (Kameya) כבשן 48
MR, NT, NS, MD ועוד קבורה 106

Source: Loftus, J. (2025). Journal of Open Archaeology Data 13:13.
DOI: 10.5334/joad.159 | Zenodo: 10.5281/zenodo.15781166

הורדת הנתונים ב-Colab

import requests, zipfile, os

# הורדה מ-Zenodo (פעם אחת)
url = "https://zenodo.org/records/15781166/files/Ogame_GMM.zip?download=1"
r = requests.get(url, stream=True)
with open("Ogame_GMM.zip", "wb") as f:
    for chunk in r.iter_content(chunk_size=8192):
        f.write(chunk)

with zipfile.ZipFile("Ogame_GMM.zip") as z:
    z.extractall(".")
print("הנתונים הורדו בהצלחה!")

# טעינת מטה-דאטה
import pandas as pd
samples = pd.read_csv("Ogame_GMM/Ogame_Samples.csv")
samples = samples.rename(columns={samples.columns[3]: "context_code"})
samples["context"] = samples["context_code"].map({1: "קבורה", 2: "כבשן"})
print(samples["context"].value_counts())

חישוב EFA וPCA

import pyefd
import matplotlib.pyplot as plt
from PIL import Image
from skimage import measure
from sklearn.decomposition import PCA
from bidi.algorithm import get_display
rtl = get_display

# EFA על כל הכדים
records = []
for _, row in samples.iterrows():
    path = f"Ogame_GMM/Ogame_Profiles_All/{row['Sample ID']}.png"
    outline = extract_outline(path)
    if outline is None: continue
    y, x = outline[:, 0], outline[:, 1]
    coeffs = pyefd.elliptic_fourier_descriptors(
        np.column_stack([x, y]), order=20, normalize=True)
    records.append({"id": row["Sample ID"],
                    "context": row["context"],
                    **{f"e{i}": v for i,v in enumerate(coeffs.ravel())}})

df = pd.DataFrame(records)
X = df[[c for c in df.columns if c.startswith("e")]].values
pca = PCA()
scores = pca.fit_transform(X)
var = pca.explained_variance_ratio_ * 100

ממצאים — כבשן לעומת קבורה

fig, ax = plt.subplots(figsize=(9, 7))

colors = {"כבשן": "#e07b39", "קבורה": "#4a90c4"}
for ctx, c in colors.items():
    mask = df["context"] == ctx
    ax.scatter(scores[mask, 0], scores[mask, 1],
               c=c, label=rtl(f"{ctx} (n={mask.sum()})"),
               s=50, alpha=0.75, edgecolors='white', lw=0.5)

ax.set_xlabel(f"PC1 ({var[0]:.1f}%)")
ax.set_ylabel(f"PC2 ({var[1]:.1f}%)")
ax.set_title(rtl("מרחב הצורות — כדי Ogame: כבשן לעומת קבורה"))
ax.legend(fontsize=12)
plt.tight_layout()
plt.show()

ממצאים — תוצאות אמיתיות

מרחב הצורות — כדי Ogame: כבשן לעומת קבורה (n=243)

PC1 מסביר 95.9% מהשונות — הפרדה ברורה בין הקשרים.

השוואה בין כבשנים

כבשן FR (89) לעומת כבשן KM (48)

גם בין שני כבשנים שונים — שונות מינימלית בצורה.

שאלות לפרשנות

  • האם שתי הקבוצות נפרדות, חופפות, או מעורבבות?
  • מה משתנה לאורך PC1? (גובה? רוחב? צוואר?)
  • מה משמעות ממצא זה על תהליך הקבורה בתקופת אדו?
  • מה לא ניתן לדעת מהצורה בלבד?

הערה

זוהי שאלת מטלה 5 — 300 מילים, בצירוף הגרף.

לשיעור הבא — סטטיסטיקה

from scipy.stats import mannwhitneyu

kiln   = scores[df["context"] == "כבשן",   0]
burial = scores[df["context"] == "קבורה",  0]

stat, p = mannwhitneyu(kiln, burial, alternative='two-sided')
print(f"U = {stat:.1f}, p = {p:.4f}")

קראו: מודול 11 — בדיקת השערות