Ein Vertreter einer Verkaufsabteilung kauft Handtücher von einem Verkäufer, um sie auf Messen zu verschenken. Der Außendienstmitarbeiter möchte einen Stichprobenplan umsetzen, so dass die gesamte Charge Handtücher entweder angenommen oder abgelehnt wird. Die Anzahl für die Analyse ist die Anzahl der Fehler. Jedes Handtuch kann mehr als einen Defekt aufweisen, z. B. einen gezogenen Faden oder eine Farbabweichung. Der Außendienstmitarbeiter und der Lieferant vereinbaren folgende Anforderungen:
  • Der AQL für den Stichprobenplan beträgt 0,01. Das Alpha für die Analyse beträgt 0,05. Die Wahrscheinlichkeit, ein Los mit 1 Defekt pro 100 Handtücher anzunehmen, liegt bei mindestens 95%.
  • Der RQL beträgt 0,06. Das Beta für die Analyse liegt bei 0,10. Die Wahrscheinlichkeit, ein Los mit 6 Mängeln pro 100 Handtücher abzulehnen, liegt bei mindestens 90%.

Das Skript nähert sich den Werten aus der Minitab Statistical Software für die Stichprobenabnahme von Attributen an, wenn der Messtyp die Anzahl der Fehler und die Einheit für Qualitätsstufen Fehler pro Einheit ist.

Das Beispielskript R veranschaulicht die folgenden Funktionen der Integration:
  • Lesen von Werten aus Spalten in Minitab Statistical Software.
  • Senden Sie eine Tabelle mit Werten an den Minitab-Ausgabebereich.
  • Zeigen Sie Warnungen und Meldungen von R-Standardfehlern im Minitab-Ausgabebereich an.
Verwenden Sie die folgenden Dateien, um die Schritte in diesem Abschnitt auszuführen:
Datei Beschreibung
acceptance_sampling.R Ein R Skript, das Spezifikationen aus Spalten in einem Minitab-Arbeitsblatt übernimmt und eine Tabelle mit Werten für die OC-Kurve anzeigt.

Alle Dateien, auf die in diesem Handbuch verwiesen wird, sind in dieser .ZIP-Datei verfügbar: r_guide_files.zip.

Voraussetzungen

  • Das Skript stützt sich auf die Spaltennamen, um die Spezifikationen für die Analyse anzugeben: AQL, alpha, RQL, aeta.

  • Das R-Skript im folgenden Beispiel erfordert die folgenden R-Pakete:
    mtbr
    Das R-Paket, das Minitab und R integriert. Im Beispiel übertragen Funktionen aus diesem Modul R-Ergebnisse an Minitab. Informationen zum Installieren des Minitab-Pakets R finden Sie in Schritt 2: Installieren Sie mtbr.

Schritte zum Ausführen des Beispiels

  1. Stellen Sie sicher, dass Sie die erforderlichen Module installiert haben: mtbr.
  2. Speichern Sie die R-Skriptdatei, acceptance_sampling.R in Ihrem Minitab-Standardspeicherort für Dateien. Weitere Informationen dazu, wo Minitab nach R-Skriptdateien sucht, finden Sie unter Standardordner für R-Dateien für Minitab.
  3. Öffnen Sie den Beispieldatensatz R_Annahmestichprobenprüfung.MWX.
  4. Geben Sie im Minitab-Fenster Befehlszeile RSCR "acceptance_sampling.R" ein.
  5. Wählen Sie Durchlauf aus.

acceptance_sampling. R

# Load necessary library
#Original code by Valentina Tillman
library(mtbr)

# Define Parameters
AQL <- mtb_get_column("AQL")  # Acceptable Quality Level
alpha <- mtb_get_column("alpha")  # Producer's risk
RQL <- mtb_get_column("RQL")  # Rejectable Quality Level
beta <- mtb_get_column("beta")  # Consumer's risk

# ---- Validate inputs ----

# Validate AQL and RQL
if (is.null(AQL) || length(AQL) != 1 || is.na(AQL)) {
  warning("Define the AQL with a value in the first row of a column with the title AQL.")
}
if (is.null(RQL) || length(RQL) != 1 || is.na(RQL)) {
  warning("Define the RQL with a value in the first row of a column with the title RQL.")
}

# Validate alpha
if (is.null(alpha) || length(alpha) != 1 || is.na(alpha)) {
  alpha <- 0.05
  message("Missing or multiple values for alpha. The analysis uses 0.05. To specify alpha, enter a value in the first row of a column with the title alpha.")
}

# Validate beta
if (is.null(beta) || length(beta) != 1 || is.na(beta)) {
  beta <- 0.10
  message("Missing or multiple values for beta. The analysis uses 0.10. To specify beta, enter a value in the first row of a column with the title beta.")
}

#Simple comparison of AQL and RQL
if (AQL >= RQL) {
  stop("Specify an RQL that is greater than the AQL.")
}

# ---- Calculations ----
# Use algorithm to find n,c for the Poisson distribution
found <- FALSE
for (n in 10:5000) {
  lamA <- n*AQL
  lamR <- n*RQL
  for (c in 0:n) {
    p_accept_AQL <- ppois(c, lamA)
    p_accept_RQL <- ppois(c, lamR)
    if (p_accept_AQL >= 1 - alpha && p_accept_RQL <= beta) {
      found <- TRUE
      break
    }
  }
  if (found) break
}

if (found != TRUE) { 
  mtb_add_message ("No solution found. Results are for the largest values of n and c in the search.")
  }

# Generate OC curve values for number of defects per unit
p_vals <- seq(0.003, 0.117, by = 0.006)
lambda_vals <- p_vals * n
OC_vals <- ppois(c, lambda_vals)

# ---- Outputs ----
#Display analysis inputs
show_AQL <- sprintf("AQL: %s", sub("\\.?0+$", "", formatC(AQL, format = "f", digits = 6)))
mtb_add_message(show_AQL)
show_RQL <- sprintf("RQL: %s", sub("\\.?0+$", "", formatC(RQL, format = "f", digits = 6)))
mtb_add_message(show_RQL)
show_alpha <- sprintf("alpha: %s", sub("\\.?0+$", "", formatC(alpha, format = "f", digits = 6)))
mtb_add_message(show_alpha)
show_beta <- sprintf("beta: %s", sub("\\.?0+$", "", formatC(beta, format = "f", digits = 6)))
mtb_add_message(show_beta)

#Display calculated solutions
show_sample_size <- sprintf("Sample size: %d", n)
mtb_add_message(show_sample_size)
show_defects <- sprintf("Acceptance number: %d", c)
mtb_add_message(show_defects)

# OC Curve Table
oc_table <- data.frame("Lot_Defects_per_Unit" = p_vals, "Probability_of_Acceptance" = OC_vals)
head(oc_table, 10)

mytitle <- "OC Table" 
myheaders <- names(oc_table)
mtb_add_table(columns = oc_table, headers = myheaders, title = mytitle)

Ergebnisse

R Script

Diese Ergebnisse stammen von externer Software.
AQL: 0.01
RQL: 0.06
alpha: 0.05
beta: 0.1
Sample size: 112
Acceptance number: 3

OC Table

Lot_Defects_per_UnitProbability_of_Acceptance
0.0030.999593
0.0090.980517
0.0150.909779
0.0210.788694
0.0270.641855
0.0330.494988
0.0390.365054
0.0450.259456
0.0510.178812
0.0570.120085
0.0630.078892
0.0690.050862
0.0750.032260
0.0810.020172
0.0870.012457
0.0930.007607
0.0990.004600
0.1050.002757
0.1110.001639
0.1170.000968