R-Code zu: ‘Rezension zu: Sorg, M. (2022). Fibelausstattung und Lebensalter in der Merowingerzeit: Studien zu Abnutzung und Gebrauch frühmittelalterlicher Bügelfibeln. (RGA Ergänzungbände, 129). Berlin: de Gruyter.’

Archäologische Informationen, 46, 2023

Author

Frank Siegmund

Published

May 5, 2023

Daten herunterladen

Die Daten sind als Open Data auf der Website des Buches von M. Sorg (2022) beim de Gruyter Verlag hinterlegt: https://www.degruyter.com/document/doi/10.1515/9783110754810/html?lang=de Für diese Rezension nutze ich die Daten namens “Datenstudie”, wohinter sich eine Excel-Tabelle mit 13 Datenblättern verbirgt. Die Datei habe ich in meinem via RStudio eingerichteten Projektordner gespeichert, mit der Benennung “Sorg-M_2022_Fibelausstattung.xlsx”.

Daten einlesen

Die publizierten Daten werden als Excel-Tabelle mit 13 Blättern angeboten. Die klassische Möglichkeit des Einlesen nach “R” ist es, in der Ausgangsdatei unter Excel reihum alle Blätter bis auf eines löschen und anschließend je ein einzelnes Blätter als einen neuen Datensatz zu speichern. Etwas bequemer ist es, dies auf einen Rutsch mit “R” erledigen. Wie? - das zeigen die folgenden Codeblöcke.

# aus: Steven P. Sanderson, in R-bloggers, 6.4.2023
# Funktion bauen Ziel: die Namen der Blätter herausfinden
excel_sheet_reader <- function(filename) {
  sheets <- excel_sheets(filename)
  x <- lapply(sheets, function(X) read_excel(filename, sheet = X))
  names(x) <- sheets
  x
}

Anschließend wende ich diese Funktion an. Da ich innerhalb von RStudio mit einem Projekt arbeite, bedarf ein keiner Angabe eines Dateipfades, sondern lediglich der Nennung des Dateinamens.

Caveat: Die Daten bei Sorg sind “ungeschickt” abgelegt. In unserem Fall ist die Länge der Bügelfibeln zwar als Zahl geschrieben, als im Textformat abgelegt. Man könnte dies in Excel leichthin korrigieren, aber die Datei ist mit einem Passwort geschützt (!). Daher habe ich die Länge der Fibeln auf ein neues Blatt namens “lang” kopiert, die Spalte als Zahl formatiert und lese dieses Blatt zusätzlich mit ein.

library(readxl)
# library(writexl)
library(dplyr)
#
sheets <- excel_sheets("Sorg-M_2022_Fibelausstattung.xlsx")
sheets
 [1] "Gräber"                   "Fibeln"                  
 [3] "lang"                     "Bügelfibeln"             
 [5] "Gleicharmige Fibeln"      "Pferdchenfibeln"         
 [7] "Rautenfibeln"             "Scheibenfibeln, Blech"   
 [9] "Scheibenfibeln, gegossen" "Scheibenfibeln, Granat"  
[11] "S-Fibeln"                 "Tierfibeln"              
[13] "Vogelfibeln"              "Zikadenfibeln"           
#
Sorg_sheets <- excel_sheet_reader("Sorg-M_2022_Fibelausstattung.xlsx")
Sorg_sheets
$Gräber
# A tibble: 3,618 × 25
      ID Gräberfeld  Grabnummer Beraubung Störung `Fibeln vorhanden`
   <dbl> <chr>       <chr>      <chr>     <chr>   <chr>             
 1   796 Aldingen    Aldi1      <NA>      <NA>    Ja                
 2   797 Aldingen    Aldi11     <NA>      <NA>    Ja                
 3   771 Aldingen    Aldi12     ja        antik   Ja                
 4   798 Aldingen    Aldi15     <NA>      <NA>    Ja                
 5   875 Aldingen    Aldi17     <NA>      <NA>    Nein              
 6   799 Aldingen    Aldi18     <NA>      <NA>    Ja                
 7   874 Aldingen    Aldi3      <NA>      <NA>    Nein              
 8   769 Aldingen    Aldi8      <NA>      <NA>    Ja                
 9   770 Aldingen    Aldi9      <NA>      <NA>    Ja                
10  2574 Altenerding Alte10     ?         ?       Nein              
# ℹ 3,608 more rows
# ℹ 19 more variables: `Anzahl Fibeln` <dbl>, Vierfibelkombination <chr>,
#   `Typ Fibel 1` <chr>, `Typ Fibel 2` <chr>, `Typ Fibel 3` <chr>,
#   `Typ Fibel 4` <chr>, `Typ Fibel 5` <chr>,
#   `Abnutzungsgrad je Grab, exakt` <dbl>,
#   `Abnutzungsgrad je Grab, gerundet` <dbl>,
#   `Abnutzungsgrad je Grab, ganze Zahl` <dbl>, …

$Fibeln
# A tibble: 836 × 22
      ID Grabkürzel Fibelnummer Fibeltyp   Aufnahme `Abnutzung laut Bearbeiter` 
   <dbl> <chr>            <dbl> <chr>      <chr>    <chr>                       
 1   755 Aldi1                1 Bügelfibel Ja       Nadel fehlt, sonst gut erha…
 2   756 Aldi1                2 Bügelfibel Ja       Nadel fehlt, sonst gut erha…
 3   757 Aldi1                3 Vogelfibel Ja       Nadel und Teile der Spiralk…
 4   758 Aldi1                4 Vogelfibel Ja       Nadel und Teile der Spiralk…
 5   759 Aldi11               1 Bügelfibel Ja       Nadelhalter wenig abgenutzt…
 6   760 Aldi11               2 Bügelfibel Ja       Nadelhalter wenig abgenutzt…
 7   721 Aldi12               1 Tierfibel  Ja       Abnutzungsspuren            
 8   761 Aldi15               1 Bügelfibel Ja       An Bügel und Knöpfen Abnutz…
 9   762 Aldi15               2 Bügelfibel Ja       An Bügel und Knöpfen Abnutz…
10   763 Aldi18               1 Bügelfibel Ja       Starke Abnutzungsspuren am …
# ℹ 826 more rows
# ℹ 16 more variables: `Gesamtabnutzung, exakt` <dbl>,
#   `Gesamtabnutzung, gerundet` <dbl>, `Gesamtabnutzung, ganze Zahl` <dbl>,
#   `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>,
#   `Gesamtabnutzung, gleichmäßig verteilt` <dbl>,
#   `Anzahl der untersuchten Areale` <dbl>, Gewicht <dbl>, Länge <chr>,
#   Vierfibelkombination <chr>, `Lage Fibel 1` <chr>, `Lage Fibel 2` <chr>, …

$lang
# A tibble: 836 × 1
    lang
   <dbl>
 1  7.8 
 2  7.9 
 3  2.5 
 4  2.5 
 5  7.5 
 6  7.5 
 7  2.35
 8  7.1 
 9  7.2 
10  4.6 
# ℹ 826 more rows

$Bügelfibeln
# A tibble: 208 × 26
      ID Grabnummer Fibelnummer Fußkopf `Kanten Fußkopf` `Querlaufender Grat`
   <dbl> <chr>            <dbl>   <dbl>            <dbl>                <dbl>
 1   172 Aldi1                1      NA               NA                   NA
 2   173 Aldi1                2      NA               NA                   NA
 3   174 Aldi11               1       1                1                   NA
 4   175 Aldi11               2       2                1                   NA
 5   228 Aldi15               1      NA               NA                   NA
 6   229 Aldi15               2      NA               NA                   NA
 7   231 Aldi18               1       3                3                   NA
 8   232 Aldi18               2       3                3                   NA
 9   161 Aldi8                1      NA               NA                   NA
10   162 Aldi9                1       3                3                    3
# ℹ 198 more rows
# ℹ 20 more variables: Fuß <dbl>, `Grat am Fuß` <dbl>, `Kanten Fuß` <dbl>,
#   Bügel <dbl>, Bügelhöchstpunkt <dbl>, `Kanten Bügel` <dbl>,
#   `Übergang Bügel-Kopf` <dbl>, Kopffläche <dbl>, `Kanten Kopf` <dbl>,
#   Knöpfe <dbl>, `Zonenknopf-Band` <dbl>, `Fuß Rückseite` <dbl>,
#   `Bügel Rückseite` <dbl>, `Kopfplatte Rückseite` <dbl>, Nadelrast <dbl>,
#   Nadelhalter <dbl>, Nadel <dbl>, …

$`Gleicharmige Fibeln`
# A tibble: 8 × 15
     ID Grabnummer Fibelnummer `Arm 1` Bügel Bügelhöchstpunkt `Arm 2` Kanten
  <dbl> <chr>            <dbl>   <dbl> <dbl>            <dbl>   <dbl>  <dbl>
1     1 Kirch134             1       2     2                3       2      2
2     2 Wein711              1       3     3                4       3      3
3     3 MüPerl27             1       2     3               NA       2      2
4     4 MüPerl27             2       2     2               NA       2      2
5    NA <NA>                NA      NA    NA               NA      NA     NA
6    NA <NA>                NA      NA    NA               NA      NA     NA
7    NA <NA>                NA      NA    NA               NA      NA     NA
8    NA <NA>                NA      NA    NA               NA      NA     NA
# ℹ 7 more variables: Rückseite <dbl>, Nadelrast <dbl>, Nadelhalter <dbl>,
#   Nadel <dbl>, `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>,
#   `Abnutzung insgesamt` <dbl>, `Anzahl von Werten` <chr>

$Pferdchenfibeln
# A tibble: 14 × 18
      ID Grabnummer Fibelnummer `Kopf+Hals` Körper Vorderbeine Hinterbeine
   <dbl> <chr>      <chr>             <dbl>  <dbl>       <dbl>       <dbl>
 1     1 Alte117    3                     3      2           3           3
 2     2 Alte117    4                     3      2           2           3
 3    15 Meng11     1                     4      4           4           4
 4     3 MüPerl3    1                     3      3           3           3
 5     4 MüPerl3    2                     3      3           3           3
 6    11 Nere96     2                     3      2           2           2
 7    13 Nere96     3                     3      2           3           3
 8     9 Wein111    3                     2      2           2           2
 9    10 Wein111    4                     2      2           2           2
10     7 Wein242    3                     4      3           3           3
11     8 Wein242    4                     4      3           3           3
12    NA <NA>       <NA>                 NA     NA          NA          NA
13    NA <NA>       <NA>                 NA     NA          NA          NA
14    NA <NA>       <NA>                 NA     NA          NA          NA
# ℹ 11 more variables: Standfläche <dbl>, Schwanz <dbl>, Reiter <dbl>,
#   Kanten <dbl>, Rückseite <dbl>, Nadelrast <dbl>, Nadelhalter <dbl>,
#   Nadel <dbl>, `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>,
#   Gesamtabnutzung <dbl>, `Anzahl von Werten` <chr>

$Rautenfibeln
# A tibble: 22 × 16
      ID Grabnummer Fibelnummer `Ecke 1` `Ecke 2` `Ecke 3` `Ecke 4` Fläche
   <dbl> <chr>      <chr>          <dbl>    <dbl>    <dbl>    <dbl>  <dbl>
 1     9 AschB10    1                  2        2        2        2      2
 2     7 AschW3     1                  2        2        2       NA      2
 3     8 AschW3     2                  2        3        2       NA      2
 4     5 Aubi223    1                  3        3        3        3      1
 5     6 Aubi383    1                  3        3        3        3      3
 6    17 Meng38 B   1                  3        4       NA       NA      3
 7    18 Meng38 B   2                  3        4       NA       NA      2
 8    19 Meng50     1                  3        3        3        3      2
 9     1 Peig39     2                  3        2        3        3      3
10     2 Peig88     1                  2        2        2        2      2
# ℹ 12 more rows
# ℹ 8 more variables: Kanten <dbl>, Rückseite <dbl>, Nadelrast <dbl>,
#   Nadelhalter <dbl>, Nadel <dbl>,
#   `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>, Gesamtabnutzung <dbl>,
#   `Anzahl der Werte` <chr>

$`Scheibenfibeln, Blech`
# A tibble: 62 × 16
      ID Grabnummer Fibelnummer Fläche Mittelbuckel `Kante oben` `Kante rechts`
   <dbl> <chr>            <dbl>  <dbl>        <dbl>        <dbl>          <dbl>
 1    16 AschB255             1      2            3            2             NA
 2    17 AschB292             1      2            3            3             NA
 3    18 AschB292             2     NA           NA            2              3
 4    61 Aubi505              1     NA           NA           NA             NA
 5    13 Aubi756              1      3           NA            3             NA
 6    11 Ditt119              1      3            4            3              3
 7    10 Ditt144              1      3            3            4              3
 8     6 Ditt148              1     NA           NA           NA             NA
 9     4 Ditt167              1      4           NA            3              3
10     3 Ditt175              1     NA           NA           NA             NA
# ℹ 52 more rows
# ℹ 9 more variables: `Kante unten` <dbl>, `Kante links` <dbl>,
#   Rückseite <dbl>, Nadelrast <dbl>, Nadelhalter <dbl>, Nadel <dbl>,
#   `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>, Gesamtabnutzung <dbl>,
#   `Anzahl von Werten` <chr>

$`Scheibenfibeln, gegossen`
# A tibble: 40 × 19
      ID Grabnummer Fibelnummer `Fläche oben` `Fläche rechts` `Fläche unten`
   <dbl> <chr>            <dbl>         <dbl>           <dbl>          <dbl>
 1    11 Alte1346             1             2              NA             NA
 2     1 Alte213              1             2              NA             NA
 3     6 Alte289              1             2              NA             NA
 4     7 Alte289              2             2              NA             NA
 5     2 Alte322              1             1              NA             NA
 6     3 Alte322              2             1              NA             NA
 7     4 Alte350              1            NA              NA             NA
 8     5 Alte545              1             2              NA             NA
 9     9 Alte625              3             1              NA             NA
10    10 Alte625              4             1              NA             NA
# ℹ 30 more rows
# ℹ 13 more variables: `Fläche links` <dbl>, Buckel <dbl>, `Kante oben` <dbl>,
#   `Kante rechts` <dbl>, `Kante unten` <dbl>, `Kante links` <dbl>,
#   Rückseite <dbl>, Nadelrast <dbl>, Nadelhalter <dbl>, Nadel <dbl>,
#   `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>, Gesamtabnutzung <dbl>,
#   `Anzahl der Werte` <chr>

$`Scheibenfibeln, Granat`
# A tibble: 103 × 16
      ID Grabnummer Fibelnummer Fläche Mittelfeld `Kante oben` `Kante rechts`
   <dbl> <chr>            <dbl>  <dbl>      <dbl>        <dbl>          <dbl>
 1     9 Alte1175             1      3          3            2              2
 2    10 Alte1175             2      2         NA            2              2
 3     3 Alte128              1      3          3            3              3
 4     4 Alte128              2      3          3            3              3
 5     1 Alte21               1      3         NA            2              2
 6    32 Alte256              4      2         NA            3              3
 7     2 Alte54               1      2          3            3              3
 8    11 Alte762              1      3          1            3              4
 9    12 Alte762              2      3          2            2              3
10     5 Alte813              1      1         NA            3              3
# ℹ 93 more rows
# ℹ 9 more variables: `Kante unten` <dbl>, `Kante links` <dbl>,
#   Rückseite <dbl>, Nadelrast <dbl>, Nadelhalter <dbl>, Nadel <dbl>,
#   `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>, Gesamtabnutzung <dbl>,
#   `Anzahl von Werten` <chr>

$`S-Fibeln`
# A tibble: 114 × 17
      ID Grabnummer Fibelnummer `oberes Ende` `Spitze oberes Ende`
   <dbl> <chr>            <dbl>         <dbl>                <dbl>
 1    20 Alte1147             1             2                    2
 2    21 Alte1147             2             2                    3
 3    22 Alte1148             1             1                    2
 4    23 Alte1148             2             2                    3
 5     4 Alte1237             3             3                    3
 6    25 Alte1253             2             2                    3
 7     2 Alte127              2             3                    3
 8     3 Alte127              1             3                    3
 9    26 Alte1289             1             2                    2
10    27 Alte1289             2             2                    2
# ℹ 104 more rows
# ℹ 12 more variables: `Diagonales Band` <dbl>, `Grat diagonales Band` <dbl>,
#   `Unteres Ende` <dbl>, `Spitze unteres Ende` <dbl>, Kanten <dbl>,
#   Rückseite <dbl>, Nadelrast <dbl>, Nadelhalter <dbl>, Nadel <dbl>,
#   `Gesamtabnutzung ohne Nadelkontruktion` <dbl>, Gesamtabnutzung <dbl>,
#   `Anzahl von Werten` <chr>

$Tierfibeln
# A tibble: 11 × 17
      ID Grabnummer Fibelnummer `Kopf+Maul`  Hals Körper Vorderbeine Hinterbeine
   <dbl> <chr>            <dbl>       <dbl> <dbl>  <dbl>       <dbl>       <dbl>
 1     7 Aldi12               1           2     1      2           1           3
 2     1 Alte31               3           1     1      1           1           1
 3     2 Alte31               4          NA    NA     NA          NA           4
 4     3 AschW11              5           3     3      3           3           3
 5     8 Nere143              2           1     2      1           2           2
 6     4 Wein740              1           3    NA      3           3           3
 7     5 Wein740              2           3     3      3           3           3
 8     6 Wein745              1           3     3      3           3           3
 9    NA <NA>                NA          NA    NA     NA          NA          NA
10    NA <NA>                NA          NA    NA     NA          NA          NA
11    NA <NA>                NA          NA    NA     NA          NA          NA
# ℹ 9 more variables: Schwanz <dbl>, Kanten <dbl>, Rückseite <dbl>,
#   Nadelrast <dbl>, Nadelhalter <dbl>, Nadel <lgl>,
#   `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>, Gesamtabnutzung <dbl>,
#   `Anzahl von Werten` <chr>

$Vogelfibeln
# A tibble: 119 × 17
      ID Grabnummer Fibelnummer Schnabel  Kopf Körper Flügel  Füße Schwanz
   <dbl> <chr>            <dbl>    <dbl> <dbl>  <dbl>  <dbl> <dbl>   <dbl>
 1    96 Aldi1                3        1     2      1      1     2       1
 2    97 Aldi1                4        1     2      1      1     1       1
 3    14 Alte1135             1        2     2      3      2     3       3
 4    15 Alte1135             2        2     2      2      2     2       3
 5    16 Alte1299             2        1     2      3      2     2       2
 6    17 Alte1299             3        2     3      2      2     3       1
 7    50 Alte130              1        2     3      2      3     3       3
 8    51 Alte130              2        2     3      2      2     2       2
 9    18 Alte1332             1        1     2      2      2     3       3
10    56 Alte1332             2        2     2      2      4     3       3
# ℹ 109 more rows
# ℹ 8 more variables: Kanten <dbl>, Rückseite <dbl>, Nadelrast <dbl>,
#   Nadelhalter <dbl>, Nadel <dbl>,
#   `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>, Gesamtabnutzung <dbl>,
#   `Anzahl von Werten` <chr>

$Zikadenfibeln
# A tibble: 7 × 14
     ID Grabnummer Fibelnummer  Kopf Körper Flügel Kanten Rückseite Nadelrast
  <dbl> <chr>            <dbl> <dbl>  <dbl>  <dbl>  <dbl>     <dbl>     <dbl>
1     3 Aldi18               3     1      1      1      1         2         1
2     4 Aldi18               4     1      1      1      1         2         1
3     1 Alte26               1     3      3      3      3         2         4
4     2 Alte26               2     3      3      3      3         2        NA
5    NA <NA>                NA    NA     NA     NA     NA        NA        NA
6    NA <NA>                NA    NA     NA     NA     NA        NA        NA
7    NA <NA>                NA    NA     NA     NA     NA        NA        NA
# ℹ 5 more variables: Nadelhalter <dbl>, Nadel <dbl>,
#   `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>, Gesamtabnutzung <dbl>,
#   `Anzahl von Werten` <chr>
# die einzelnen Blätter sind nun unter ihrem Namen ansprechbar und auswertbar, z.B.
Sorg_sheets$Fibeln
# A tibble: 836 × 22
      ID Grabkürzel Fibelnummer Fibeltyp   Aufnahme `Abnutzung laut Bearbeiter` 
   <dbl> <chr>            <dbl> <chr>      <chr>    <chr>                       
 1   755 Aldi1                1 Bügelfibel Ja       Nadel fehlt, sonst gut erha…
 2   756 Aldi1                2 Bügelfibel Ja       Nadel fehlt, sonst gut erha…
 3   757 Aldi1                3 Vogelfibel Ja       Nadel und Teile der Spiralk…
 4   758 Aldi1                4 Vogelfibel Ja       Nadel und Teile der Spiralk…
 5   759 Aldi11               1 Bügelfibel Ja       Nadelhalter wenig abgenutzt…
 6   760 Aldi11               2 Bügelfibel Ja       Nadelhalter wenig abgenutzt…
 7   721 Aldi12               1 Tierfibel  Ja       Abnutzungsspuren            
 8   761 Aldi15               1 Bügelfibel Ja       An Bügel und Knöpfen Abnutz…
 9   762 Aldi15               2 Bügelfibel Ja       An Bügel und Knöpfen Abnutz…
10   763 Aldi18               1 Bügelfibel Ja       Starke Abnutzungsspuren am …
# ℹ 826 more rows
# ℹ 16 more variables: `Gesamtabnutzung, exakt` <dbl>,
#   `Gesamtabnutzung, gerundet` <dbl>, `Gesamtabnutzung, ganze Zahl` <dbl>,
#   `Gesamtabnutzung ohne Nadelkonstruktion` <dbl>,
#   `Gesamtabnutzung, gleichmäßig verteilt` <dbl>,
#   `Anzahl der untersuchten Areale` <dbl>, Gewicht <dbl>, Länge <chr>,
#   Vierfibelkombination <chr>, `Lage Fibel 1` <chr>, `Lage Fibel 2` <chr>, …
# Umgehen der Länge als Textcodierung:
mydf <- cbind(Sorg_sheets$Fibeln, Sorg_sheets$lang)
head(mydf)
   ID Grabkürzel Fibelnummer   Fibeltyp Aufnahme
1 755      Aldi1           1 Bügelfibel       Ja
2 756      Aldi1           2 Bügelfibel       Ja
3 757      Aldi1           3 Vogelfibel       Ja
4 758      Aldi1           4 Vogelfibel       Ja
5 759     Aldi11           1 Bügelfibel       Ja
6 760     Aldi11           2 Bügelfibel       Ja
                                                Abnutzung laut Bearbeiter
1                                         Nadel fehlt, sonst gut erhalten
2                                         Nadel fehlt, sonst gut erhalten
3       Nadel und Teile der Spiralkonstruktion fehlen, sonst gut erhalten
4       Nadel und Teile der Spiralkonstruktion fehlen, sonst gut erhalten
5 Nadelhalter wenig abgenutzt, Vergoldung an den Knöpfen stark abgerieben
6 Nadelhalter wenig abgenutzt, Vergoldung an den Knöpfen stark abgerieben
  Gesamtabnutzung, exakt Gesamtabnutzung, gerundet Gesamtabnutzung, ganze Zahl
1               1.428571                  1.428571                    1.428571
2               1.357143                  1.357143                    1.357143
3               1.400000                  1.400000                    1.400000
4               1.200000                  1.200000                    1.200000
5               1.750000                  1.750000                    1.750000
6               1.875000                  1.875000                    1.875000
  Gesamtabnutzung ohne Nadelkonstruktion Gesamtabnutzung, gleichmäßig verteilt
1                               1.333333                                     1
2                               1.250000                                     1
3                               1.375000                                     1
4                               1.250000                                     1
5                               1.785714                                     2
6                               1.857143                                     2
  Anzahl der untersuchten Areale Gewicht Länge Vierfibelkombination
1                             14    28.2   7,8                   ja
2                             14    29.7   7,9                   ja
3                             10     2.8   2,5                   ja
4                             10     3.1   2,5                   ja
5                             16    16.8   7,5                 <NA>
6                             16    17.1   7,5                 <NA>
            Lage Fibel 1                  Lage Fibel 2         Lage Fibel 3
1          In Bauchmitte                          <NA>                 <NA>
2                   <NA>        Am linken Oberschenkel                 <NA>
3                   <NA>                          <NA> Auf der linken Brust
4                   <NA>                          <NA>                 <NA>
5 Auf dem rechten Becken                          <NA>                 <NA>
6                   <NA> Unterhalb des rechten Beckens                 <NA>
     Lage Fibel 4 Metallanalyse Aufbewahrungsort
1            <NA>            NA              WLM
2            <NA>            NA              WLM
3            <NA>            NA              WLM
4 Am rechten Knie            NA              WLM
5            <NA>            NA              WLM
6            <NA>            NA              WLM
                                                                                                                                         Sonstiges
1                                                                                                                                             <NA>
2                                                                                                                    Bruchlinien an der Nadelrast.
3                                                                                                                                             <NA>
4                                                                                               Größerer Rest der Spirale am Nadelhalter erhalten.
5 Auf Zeichnung hufeisenförmige Delle (?) neben der Nadelrast. Kopfplattenrückseite mit Kreuzschraffur. Beschriftung: Aldingen Grab 11/2 F 83,110.
6                      Auf Zeichnung 2 Kerben auf Fußrückseite. Kopfplattenrückseite mit Kreuzschraffur. Beschriftung: Aldingen Grab 11/1 F83,110.
  lang
1  7.8
2  7.9
3  2.5
4  2.5
5  7.5
6  7.5

Der Datensatz “mydf” (my data file) enthält nun alle Informationen aus dem Sorgschen Blatt “Fibeln” plus als “lang” die zahlenkodierte Länge der Fibeln. Aus diesem Blatt lese ich die Bügelfibeln heraus und speichere sie als “mydf2”. Bei Sichtung der Variable “Gewicht” bemerkt man, dass eine fehlende Beobachtung “es liegt keine Gewichtsangabe vor” von Sorg als “0” = Null Gramm Gewicht abgelegt wurde. Da es nachfolgend zunächst um das Gewicht der Bügelfibeln geht, reduziere ich den Datensatz um alle Stücke, die 0 gr Gewicht aufweisen.

mydf2 <- mydf[mydf$Fibeltyp == "Bügelfibel", ]
head(mydf2)
   ID Grabkürzel Fibelnummer   Fibeltyp Aufnahme
1 755      Aldi1           1 Bügelfibel       Ja
2 756      Aldi1           2 Bügelfibel       Ja
5 759     Aldi11           1 Bügelfibel       Ja
6 760     Aldi11           2 Bügelfibel       Ja
8 761     Aldi15           1 Bügelfibel       Ja
9 762     Aldi15           2 Bügelfibel       Ja
                                                Abnutzung laut Bearbeiter
1                                         Nadel fehlt, sonst gut erhalten
2                                         Nadel fehlt, sonst gut erhalten
5 Nadelhalter wenig abgenutzt, Vergoldung an den Knöpfen stark abgerieben
6 Nadelhalter wenig abgenutzt, Vergoldung an den Knöpfen stark abgerieben
8                                   An Bügel und Knöpfen Abnutzungsspuren
9                                   An Bügel und Knöpfen Abnutzungsspuren
  Gesamtabnutzung, exakt Gesamtabnutzung, gerundet Gesamtabnutzung, ganze Zahl
1               1.428571                  1.428571                    1.428571
2               1.357143                  1.357143                    1.357143
5               1.750000                  1.750000                    1.750000
6               1.875000                  1.875000                    1.875000
8               2.428571                  2.428571                    2.428571
9               2.692308                  2.692308                    2.692308
  Gesamtabnutzung ohne Nadelkonstruktion Gesamtabnutzung, gleichmäßig verteilt
1                               1.333333                                     1
2                               1.250000                                     1
5                               1.785714                                     2
6                               1.857143                                     2
8                               2.416667                                     2
9                               2.727273                                     3
  Anzahl der untersuchten Areale Gewicht Länge Vierfibelkombination
1                             14    28.2   7,8                   ja
2                             14    29.7   7,9                   ja
5                             16    16.8   7,5                 <NA>
6                             16    17.1   7,5                 <NA>
8                             14    24.3   7,1                 <NA>
9                             13    26.1   7,2                 <NA>
            Lage Fibel 1                  Lage Fibel 2 Lage Fibel 3
1          In Bauchmitte                          <NA>         <NA>
2                   <NA>        Am linken Oberschenkel         <NA>
5 Auf dem rechten Becken                          <NA>         <NA>
6                   <NA> Unterhalb des rechten Beckens         <NA>
8  Auf dem linken Becken                          <NA>         <NA>
9                   <NA>         Auf dem linken Becken         <NA>
  Lage Fibel 4 Metallanalyse Aufbewahrungsort
1         <NA>            NA              WLM
2         <NA>            NA              WLM
5         <NA>            NA              WLM
6         <NA>            NA              WLM
8         <NA>            NA              WLM
9         <NA>            NA              WLM
                                                                                                                                         Sonstiges
1                                                                                                                                             <NA>
2                                                                                                                    Bruchlinien an der Nadelrast.
5 Auf Zeichnung hufeisenförmige Delle (?) neben der Nadelrast. Kopfplattenrückseite mit Kreuzschraffur. Beschriftung: Aldingen Grab 11/2 F 83,110.
6                      Auf Zeichnung 2 Kerben auf Fußrückseite. Kopfplattenrückseite mit Kreuzschraffur. Beschriftung: Aldingen Grab 11/1 F83,110.
8                                                                                                          Weniger Textilreste um den Nadelhalter.
9                           Viele Textilreste um den Nadelhalter. Nach Zeichnung Reihe aus Doppelpunkten entlang der Mittellinie der Fußrückseite.
  lang
1  7.8
2  7.9
5  7.5
6  7.5
8  7.1
9  7.2
#
mydf3 <- mydf2[mydf2$Gewicht > 0, ]
View(mydf3)
#
mydf3 <- mydf3[!is.na(mydf3$ID), ]
View(mydf3)
#
summary(mydf3)
       ID         Grabkürzel         Fibelnummer      Fibeltyp        
 Min.   :  1.0   Length:81          Min.   :1.000   Length:81         
 1st Qu.:131.0   Class :character   1st Qu.:1.000   Class :character  
 Median :198.0   Mode  :character   Median :2.000   Mode  :character  
 Mean   :340.1                      Mean   :1.679                     
 3rd Qu.:720.0                      3rd Qu.:2.000                     
 Max.   :804.0                      Max.   :4.000                     
                                                                      
   Aufnahme         Abnutzung laut Bearbeiter Gesamtabnutzung, exakt
 Length:81          Length:81                 Min.   :0.000         
 Class :character   Class :character          1st Qu.:0.000         
 Mode  :character   Mode  :character          Median :2.111         
                                              Mean   :1.646         
                                              3rd Qu.:2.667         
                                              Max.   :3.462         
                                                                    
 Gesamtabnutzung, gerundet Gesamtabnutzung, ganze Zahl
 Min.   :0.000             Min.   :0.000              
 1st Qu.:0.000             1st Qu.:0.000              
 Median :2.111             Median :2.111              
 Mean   :1.646             Mean   :1.646              
 3rd Qu.:2.667             3rd Qu.:2.667              
 Max.   :3.462             Max.   :3.462              
                                                      
 Gesamtabnutzung ohne Nadelkonstruktion Gesamtabnutzung, gleichmäßig verteilt
 Min.   :0.000                          Min.   :1.0                          
 1st Qu.:0.000                          1st Qu.:2.0                          
 Median :2.077                          Median :3.0                          
 Mean   :1.628                          Mean   :2.5                          
 3rd Qu.:2.727                          3rd Qu.:3.0                          
 Max.   :3.364                          Max.   :4.0                          
                                        NA's   :27                           
 Anzahl der untersuchten Areale    Gewicht          Länge          
 Min.   : 0.000                 Min.   :  3.40   Length:81         
 1st Qu.: 0.000                 1st Qu.: 12.25   Class :character  
 Median :13.000                 Median : 16.30   Mode  :character  
 Mean   : 9.321                 Mean   : 25.64                     
 3rd Qu.:14.000                 3rd Qu.: 26.10                     
 Max.   :18.000                 Max.   :140.00                     
                                                                   
 Vierfibelkombination Lage Fibel 1       Lage Fibel 2       Lage Fibel 3      
 Length:81            Length:81          Length:81          Length:81         
 Class :character     Class :character   Class :character   Class :character  
 Mode  :character     Mode  :character   Mode  :character   Mode  :character  
                                                                              
                                                                              
                                                                              
                                                                              
 Lage Fibel 4       Metallanalyse  Aufbewahrungsort    Sonstiges        
 Length:81          Mode:logical   Length:81          Length:81         
 Class :character   NA's:81        Class :character   Class :character  
 Mode  :character                  Mode  :character   Mode  :character  
                                                                        
                                                                        
                                                                        
                                                                        
      lang      
 Min.   : 3.65  
 1st Qu.: 6.10  
 Median : 7.20  
 Mean   : 7.72  
 3rd Qu.: 8.50  
 Max.   :16.20  
                

Gewicht der Bügelfibeln

Danach enthält der Datensatz 81 Bügelfibeln, zu denen das Gewicht bekannt ist. Als für solche Daten übliche Darstellungsweise wähle ich ein Histogramm.

library(ggplot2)
ggplot(mydf3, aes(x=Gewicht)) +
  geom_histogram(colour="white", fill="blue", alpha=0.7) +
    labs(title="Gewicht Bügelfibeln",
       x="Gewicht (in gr)",
       y="Anzahl")

Das Histogramm bestätigt die Ausführungen von Sorg (2022, 103ff. mit Anm. 655), wonach Bügelfibeln schwerer als 35 Gramm Ausreißer sind und die weitere Detailanalyse stören. Ich schließe sie daher aus dem Datensatz aus und zeichne erneut ein Histogramm:

mydf4 <- mydf3[mydf3$Gewicht < 35.0, ]
nrow(mydf4)
[1] 71
#
ggplot(mydf4, aes(x=Gewicht)) +
  geom_histogram(binwidth=1, colour="white", fill="blue", alpha=0.7) +
  scale_x_continuous(breaks=seq(0, 35, 1)) +
  labs(title="Gewicht Bügelfibeln",
       subtitle = "ohne Bügelfibeln > 35 gr",
       x="Gewicht (in gr)",
       y="Anzahl")

Dieses Bild möchte ich als Abbildung für den Druck verwenden, es braucht daher zusätzlich einige Anpassungen:

opar <- par(no.readonly=TRUE)   # speichert die originalen par-Parameter
par(pin=c(11/2.54, 6.2/2.54))   # legt die Bildgröße auf 11 zu 6.2 cm fest
par(mai=c(0.85, 0.85, 0.85, 0.85))  # setzt die Bildränder: c(bottom, left, top, right), in inch
#
# tiff(file="Abb_1.tif", width=110, height=62, units="mm", res=300)
#
ggplot(mydf4, aes(x=Gewicht)) +
  geom_histogram(binwidth=1, colour="white", fill="blue", alpha=0.6) +
  scale_x_continuous(breaks=seq(0, 34, 2)) +
  labs(title="",
       x="Gewicht (in gr)",
       y="Anzahl Fibeln") +
  theme(axis.title.x = element_text(size =11)) +
  theme(axis.text.x = element_text(size = 9)) +
  theme(axis.title.y = element_text(size =9)) +
  theme(axis.text.y = element_text(size = 7))

par(opar)   # liest die ursprünglichen par-Einstellungen wieder zurück

Als Darstellungsalternative gebe ich die gleichen Daten als Dichtekurve aus:

opar <- par(no.readonly=TRUE)   # speichert die originalen par-Parameter
par(pin=c(11/2.54, 6.2/2.54))   # legt die Bildgröße auf 11 zu 6.2 cm fest
par(mai=c(0.85, 0.85, 0.85, 0.85))  # setzt die Bildränder: c(bottom, left, top, right), in inch
#
# tiff(file="Abb_2.tif", width=110, height=62, units="mm", res=300)
#
ggplot(mydf4, aes(x=Gewicht)) +
  geom_density(fill="blue", alpha=.4, bw=.8) +
  scale_x_continuous(breaks=seq(0, 36, 2)) +
  labs(title="",
       x="Gewicht (in gr)",
       y="EDF") +
  theme(axis.title.x = element_text(size =11)) +
  theme(axis.text.x = element_text(size = 9)) +
  theme(axis.title.y = element_text(size =9)) +
  theme(axis.text.y = element_text(size = 7))

par(opar)   # liest die ursprünglichen par-Einstellungen wieder zurück

Zusammenhang Länge und Gewicht bei Bügelfibeln

Nachfolgend eine kurze Analyse des Zusammenhangs zwischen der Länge und dem Gewicht der Bügelfibeln – ein Aspekt, der in der o.g. Rezension nicht näher behandelt wird. Sorg sieht diesen Zusammenhang als nicht gegeben an.

ggplot(data=mydf4, mapping=aes(x=Gewicht, y=lang)) +
  scale_x_continuous(breaks=seq(0, 36, 1)) +
  scale_y_continuous(breaks=seq(0, 13, 1)) +                 
  geom_point(alpha=0.4, col="blue", shape=19, size=2.5) +
  labs(title = "Bügelfibeln bis 35 gr",
       x = "Gewicht (gr)",
       y = "Länge (cm)")

#
cor.test(mydf4$Gewicht, mydf4$lang, method="kendall")

    Kendall's rank correlation tau

data:  mydf4$Gewicht and mydf4$lang
z = 8.4502, p-value < 2.2e-16
alternative hypothesis: true tau is not equal to 0
sample estimates:
      tau 
0.6918942 
#
Modell.1 <- lm(Gewicht ~ lang, data=mydf4)
Modell.1

Call:
lm(formula = Gewicht ~ lang, data = mydf4)

Coefficients:
(Intercept)         lang  
     -8.361        3.584  
summary(Modell.1)

Call:
lm(formula = Gewicht ~ lang, data = mydf4)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.1715 -3.0934 -0.7524  2.7338  9.7479 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -8.3606     1.9578   -4.27 6.11e-05 ***
lang          3.5839     0.2689   13.33  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.163 on 69 degrees of freedom
Multiple R-squared:  0.7202,    Adjusted R-squared:  0.7162 
F-statistic: 177.6 on 1 and 69 DF,  p-value: < 2.2e-16

Das Streuungsdiagramm zeigt, dass der Zusammenhang (wie erwartet) gegeben und recht deutlich ist. Die Regressionsrechnung besagt, dass der Zusammenhanbg statistisch hochsignifikant ist. Mit der Formel “Länge mal 3,58 minus 8,36” kann man das Gewicht einer Bügelfibel schätzen, die Hälfte aller resultierenden Schätzungen haben einen Schätzfehler zwischen -3,1 und plus 2,7 Gramm. Die Stärke des Zusammenhangs beträgt 0,72 (“R-Squared”), was ein relativ starker / enger Zusammenhang ist.

Abnutzung von Fibeln

Nachfolgend betrachte ich alle Gräber mit abgenutzten Fibeln, gehe also (wie Sorg) über die Bügelfibeln hinaus. Für übergreifende Betrachtungen hat Sorg im Datenblatt “Gräber” aus den Abnutzungswerten der einzelnen Fibeln eines Grabes einen Mittelwert errechnet, von ihr als “Abnutzungsgrad je Grab, exakt” bezeichnet. Auch hier sind vor der Auswertung wieder diverse Datenbereinigungen und -aufbereitungen nötig: Ich fokussiere auf die klar und relativ genau definierten anthropologischen Altersklassen und entferne die anthropologisch erheblich ungenauer bestimmten “Zwischenstufen”, die de fakto zwei oder gar mehr Altersklassen umfassen. Zudem entferne ich alle alters-unbestimmten Grabinventare aus dem Datensatz, wonach noch 2.734 Fälle übrig bleiben.

mydf5 <- Sorg_sheets$Gräber
head(mydf5)
# A tibble: 6 × 25
     ID Gräberfeld Grabnummer Beraubung Störung `Fibeln vorhanden`
  <dbl> <chr>      <chr>      <chr>     <chr>   <chr>             
1   796 Aldingen   Aldi1      <NA>      <NA>    Ja                
2   797 Aldingen   Aldi11     <NA>      <NA>    Ja                
3   771 Aldingen   Aldi12     ja        antik   Ja                
4   798 Aldingen   Aldi15     <NA>      <NA>    Ja                
5   875 Aldingen   Aldi17     <NA>      <NA>    Nein              
6   799 Aldingen   Aldi18     <NA>      <NA>    Ja                
# ℹ 19 more variables: `Anzahl Fibeln` <dbl>, Vierfibelkombination <chr>,
#   `Typ Fibel 1` <chr>, `Typ Fibel 2` <chr>, `Typ Fibel 3` <chr>,
#   `Typ Fibel 4` <chr>, `Typ Fibel 5` <chr>,
#   `Abnutzungsgrad je Grab, exakt` <dbl>,
#   `Abnutzungsgrad je Grab, gerundet` <dbl>,
#   `Abnutzungsgrad je Grab, ganze Zahl` <dbl>,
#   `Abnutzungsgrad je Grab, gleichmäßig verteilt` <dbl>, …
View(mydf5)
#
mydf5$Alter <- mydf5$Altersziffer
# 
mydf5 <- within(mydf5,{
  Alter <- NA
  Alter[Altersziffer == 1] <- "1:infans I"
  Alter[Altersziffer == 2] <- "2:infans II"
  Alter[Altersziffer == 3] <- "3:juvenil"
  Alter[Altersziffer == 4] <- "4:adult"
  Alter[Altersziffer == 5] <- "5:matur"
  Alter[Altersziffer == 6] <- "6:senil"
  })
#
mydf5 <- mydf5[!is.na(mydf5$Alter), ]
nrow(mydf5)
[1] 2734
#
table(mydf5$Alter)

 1:infans I 2:infans II   3:juvenil     4:adult     5:matur     6:senil 
        205         173         203        1382         555         216 
barplot(table(mydf5$Alter))

Sodann benenne ich die Variable “Abnutzungsgrad je Grab, exakt” um in “Abnutzung” und entferne alle Gräber aus dem Datensatz, zu dem diese Kennzahl nicht vorliegt (bei Sorg als “0” kodiert).

names(mydf5)[14] <- "Abnutzung"
#
mydf5 <- mydf5[mydf5$Abnutzung > 0.5, ]
nrow(mydf5)
[1] 282
summary(mydf5$Abnutzung)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   2.032   2.466   2.461   2.855   4.000 
sd(mydf5$Abnutzung)
[1] 0.5471537

Es verbleiben 282 Gräber mit einem mittleren Abnutzungsgrab pro Grab, zu dem anthropologische Altersbestimmungen hinreichender Qualität vorliegen. Der mittlere Abnutzungsgrad in der gesamten Stichprobe liegt bei 2,46, die Standardabweichung beträgt 0,55, d. h. ca. zwei Drittel aller Beobachtungen liegen im Intervall 1,9 bis 3,0. Der Median beträgt 2,47, die 50 %-Spanne beträgt 2,03 - 2,86. Die Nähe von Mittelwert und Median deuten eine weitgehend symmetrische Verteilung an. Zur Visualisierung bestelle ich ein Histogramm:

opar <- par(no.readonly=TRUE)   # speichert die originalen par-Parameter
par(pin=c(11/2.54, 6.2/2.54))   # legt die Bildgröße auf 11 zu 6.2 cm fest
par(mai=c(0.85, 0.85, 0.85, 0.85))  # setzt die Bildränder: c(bottom, left, top, right), in inch
#
# tiff(file="Abb_3.tif", width=110, height=62, units="mm", res=300)
#
ggplot(mydf5, aes(x=Abnutzung)) +
  geom_histogram(binwidth=.25, colour="white", fill="blue", alpha=0.7) +
  scale_x_continuous(breaks=seq(1, 4, .5),
                     minor_breaks=seq(1, 4, .1)) +
  labs(title="",
       x="Mittelwert Abnutzungsgrad Grab",
       y="Anzahl Fibeln") +
  theme(axis.title.x = element_text(size =11)) +
  theme(axis.text.x = element_text(size = 9)) +
  theme(axis.title.y = element_text(size =9)) +
  theme(axis.text.y = element_text(size = 7))

par(opar)

Alternativ wieder als Dichtekurve visualisiert:

ggplot(mydf5, aes(x=Abnutzung)) +
  geom_density(fill="blue", alpha=.4, bw=.075) +
  scale_x_continuous(breaks=seq(1, 4, .5),
                     minor_breaks=seq(1, 4, .1)) +
  labs(title="",
       x="Mittelwert Abnutzungsgrad Grab",
       y="Anzahl Fibeln")

Mit Hilfe des R-Pakets “hdrcde” bestimme ich genauer, wo die “Berge” in der Dichtekurve der Abnutzung liegen. Danach fallen 50 % aller Beobachtungen auf der Skala von 1,0 bis 4,0 in die drei recht eng definierten Bereich 1,95 bis 2,06 (1. Gipfel), den Bereich 2,33 bis 2,72 (2. Gipfel) und den Bereich 2,97 bis 3,04 (3. Gipfel).

# install.packages('hdrcde', dependencies = TRUE)
library(hdrcde)
#
hdr.den(mydf5$Abnutzung, h=0.05)

$hdr
         [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]   [,8]
99% 0.9530958 1.069203 1.102738 1.180978 1.225750 3.538118 3.640325 3.7321
95% 1.3579134 1.562867 1.609704 3.456406       NA       NA       NA     NA
50% 1.9535887 2.055734 2.331125 2.721462 2.970897 3.038299       NA     NA
        [,9]    [,10]
99% 3.825354 3.859674
95%       NA       NA
50%       NA       NA

$mode
[1] 2.0017

$falpha
        1%         5%        50% 
0.05474208 0.08689683 0.65325657 

Zusammenhang von Abnutzung und Alter

Zur Visulaisierung des Zusammenhangs von mittlerem Abnutzungsgrad pro Grab und Alter der Verstorbenen wird nun pro Altersklasse eine Dichtekurze gezeichnet:

opar <- par(no.readonly=TRUE)   # speichert die originalen par-Parameter
par(pin=c(16/2.54, 12/2.54))   # legt die Bildgröße auf 16 x 12 cm fest
par(mai=c(0.85, 0.85, 0.85, 0.85))  # setzt die Bildränder: c(bottom, left, top, right), in inch
#
# tiff(file="Abb_4.tif", width=160, height=120, units="mm", res=300)
#
#
ggplot(mydf5, aes(x=Abnutzung, group=Alter)) +
  geom_density(fill="blue", alpha=0.4, bw=.075) +
  facet_wrap(~Alter , dir="v")  +
  geom_vline(xintercept = 2.0, color="red", lty=3, lwd=1.2) +
  geom_vline(xintercept = 2.5, color="blue", lty=3, lwd=1.2) +
  geom_vline(xintercept = 3.0, color="black", lty=3, lwd=1.2) +
  labs(x="mittlerer Abnutzungsgrab je Grab", y="Dichte (EDF)",
       title="") +
  theme(axis.title.x = element_text(size =12)) +
  theme(axis.text.x = element_text(size = 11)) +
  theme(axis.title.y = element_text(size =11)) +
  theme(axis.text.y = element_text(size = 9)) +
  theme(strip.text.x = element_text(size = 12))

par(opar)

Test auf Altersabhängigkeit des Abnutzungsgrades

Zunächst gewinnen der Kennzahlen pro Altersklasse:

library(psych)
mydf5$Alter <- as.factor(mydf5$Alter)
table(mydf5$Alter)

 1:infans I 2:infans II   3:juvenil     4:adult     5:matur     6:senil 
         16          19          17         155          48          27 
#
psych::describeBy(mydf5$Abnutzung, group=mydf5$Alter, 
                              digits=2, mat=TRUE)
    item      group1 vars   n mean   sd median trimmed  mad  min  max range
X11    1  1:infans I    1  16 2.32 0.53   2.34    2.31 0.50 1.50 3.29  1.79
X12    2 2:infans II    1  19 2.35 0.50   2.31    2.36 0.69 1.40 3.11  1.71
X13    3   3:juvenil    1  17 2.23 0.52   2.11    2.23 0.49 1.25 3.33  2.08
X14    4     4:adult    1 155 2.46 0.54   2.44    2.46 0.54 1.00 4.00  3.00
X15    5     5:matur    1  48 2.61 0.52   2.63    2.64 0.51 1.14 3.43  2.29
X16    6     6:senil    1  27 2.49 0.67   2.56    2.51 0.55 1.13 3.75  2.62
     skew kurtosis   se
X11  0.04    -1.18 0.13
X12  0.05    -1.29 0.12
X13  0.30    -0.51 0.13
X14  0.10     0.51 0.04
X15 -0.65     0.07 0.08
X16 -0.36    -0.70 0.13

Anschließend ein Kruskal-Wallis-Test auf Signifikanz der Unterschiede, zunächst für die gesamte Stichprobe, d. h. alle Altersklassen inklusive infans I und infans II:

kruskal.test(Abnutzung ~ Alter, data=mydf5)

    Kruskal-Wallis rank sum test

data:  Abnutzung by Alter
Kruskal-Wallis chi-squared = 10.646, df = 5, p-value = 0.05888

Im zweiten Schritt führe ich den gleichen Test aus für den um die Altersklassen “infans I” und “infans II” reduzierten Datensatz, d. h. für die vier Altersklassen juvenil, adult, matur und senil.

mydf6 <- mydf5[mydf5$Alter != "1:infans I" & mydf5$Alter != "2:infans II", ]
nrow(mydf6)
[1] 247
head(mydf6)
# A tibble: 6 × 26
     ID Gräberfeld Grabnummer Beraubung Störung `Fibeln vorhanden`
  <dbl> <chr>      <chr>      <chr>     <chr>   <chr>             
1   797 Aldingen   Aldi11     <NA>      <NA>    Ja                
2   771 Aldingen   Aldi12     ja        antik   Ja                
3   798 Aldingen   Aldi15     <NA>      <NA>    Ja                
4   799 Aldingen   Aldi18     <NA>      <NA>    Ja                
5   769 Aldingen   Aldi8      <NA>      <NA>    Ja                
6   770 Aldingen   Aldi9      <NA>      <NA>    Ja                
# ℹ 20 more variables: `Anzahl Fibeln` <dbl>, Vierfibelkombination <chr>,
#   `Typ Fibel 1` <chr>, `Typ Fibel 2` <chr>, `Typ Fibel 3` <chr>,
#   `Typ Fibel 4` <chr>, `Typ Fibel 5` <chr>, Abnutzung <dbl>,
#   `Abnutzungsgrad je Grab, gerundet` <dbl>,
#   `Abnutzungsgrad je Grab, ganze Zahl` <dbl>,
#   `Abnutzungsgrad je Grab, gleichmäßig verteilt` <dbl>,
#   `Geschlechtsbestimmung, archäologisch` <chr>, …
#
kruskal.test(Abnutzung ~ Alter, data=mydf6)

    Kruskal-Wallis rank sum test

data:  Abnutzung by Alter
Kruskal-Wallis chi-squared = 8.2625, df = 3, p-value = 0.04089

Ergebnis: bei den Altersklassen juvenil bis senil sind die Unterschiede im Abnutzungsgrad statistisch signifikant.

Literatur

Sorg, M. (2022). Fibelausstattung und Lebensalter in der Merowingerzeit: Studien zu Abnutzung und Gebrauch frühmittelalterlicher Bügelfibeln. (RGA Erg.bd., 129). Berlin: de Gruyter. https://doi.org/10.1515/9783110754810

Siegmund, F. (2023). Rezension zu: Sorg, M. (2022). Fibelausstattung und Lebensalter in der Merowingerzeit: Studien zu Abnutzung und Gebrauch frühmittelalterlicher Bügelfibeln. (RGA Erg.bd., 129). Berlin: de Gruyter. Archäologische Informationen 46, Early View, online publiziert 5. Mai 2023. https://dguf.de/fileadmin/AI/archinf-ev_siegmund4.pdf