effacer le journal ();
/ ************************************************* ****************
Ce script et cet exemple d'intégration JMP et R utilise le
Données du pipeline de l'Alaska consistant en ultrasons sur le terrain
mesures de la profondeur des défauts dans le pipeline de l'Alaska.
La profondeur des défauts a ensuite été re-mesurée en laboratoire.
Ces mesures ont été effectuées en six lots différents.
Les données ont été analysées pour calibrer le biais du terrain
mesures relatives aux mesures de laboratoire.
Dans cette analyse, la mesure sur le terrain est la variable de réponse
et la mesure en laboratoire est la variable prédictive.
Ces données ont été fournies par Harry Berger, qui était alors scientifique pour le Bureau du Directeur de l'Institut
de la recherche sur les matériaux (maintenant la science et l'ingénierie des matériaux
Laboratoire) du NIST.
Ces données ont été utilisées pour une étude menée pour les matériaux
Bureau des transports du Département américain des transports.
La source des données provient du lien suivant
http://www.itl.nist.gov/div898/handbook/pmd/section6/pmd621.htm
************************************************** ************* /
R Init (); / * démarre la connexion à R * /
R Soumettre ("\ [
# charger des packages
bibliothèque (treillis)
## Étude de cas d'étalonnage ultrasonique du pipeline Alaska
## Créer un vecteur avec variable dépendante, taille de défaut de champ
fdef = c (18,38,15,20,18,36,20,43,45,65,43,38,33,10,50,10,50,15,53,60,18, 38,15,
20,18,36,20,43,45,65,43,38,33,10,50,10,50,15,53,15,37,15, 18,11,35,20,40,50, 36,
50,38,10,75,10,85,13,50,58,58,48,12,63,10, 63,13,28,35,63,13,45,9,20,18,35, 20,
38,50,70,40,21,19,10,33,16,5, 32,23,30,45,33,25,12,53,36,5,63,43,25,73,45, 52,
9,30,22,56,15,45)
## Créer un vecteur avec une variable indépendante, la taille du défaut de laboratoire
ldef = c (20,2,56,0,12,5,21,2,15,5,39,0,21,0,38,2,55,6,81,9,39,5,56,4,40,5,
14,3,81,5,13,7,81,5,20,5,56,0,80,7,20,0,56,5,12,1,19,6,15,5,38,8, 19,5,38,0,
55,0,80,0,38,5,55,8,38,8,12,5,80,4,12,7,80,9,20,5,55,0, 19,0,55,5,12,3,18,4,
11,5,38,0,18,5,38,0,55,3,38,7,54,5,38,0,12,0, 81,7,11,5,80,0,18,3,55,3,80,2,
80,7,55,8,15,0,81,0,12,0,81,4,12,5, 38,2,54,2,79,3,18,2,55,5,11,4,19,5,15,5,
37,5,19,5,37,5,55,5,80,0, 37,5,15,5,23,7,9,8,40,8,17,5,4,3,36,5,26,3,30,4,50,2,
30.1,25.5, 13.8,58.9,40.0,6.0,72.5,38.8,19.4,81.5,77.4,54.6,6.8,32.6,19.8,
58,8,12,9,49,0)
## Créer un vecteur avec indicateur de lot
bat = c (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,
2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, 3,4,4,4,4,4,4,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,
5,6,6,6,6,6,6,6)
## Enregistrer les données dans un bloc de données et déterminer le nombre d'observations
Lot <- comme facteur (chauve-souris)
df <- data.frame (fdef, ldef, lot)
len <- longueur (lot)
xax = "Taille des défauts de laboratoire"
yax = "Taille de défaut de champ"
title = "Données d'étalonnage ultrasonique du pipeline Alaska"
plot (ldef, fdef, xlab = xax, ylab = yax, main = title, col = "blue")
## Générer un tracé conditionnel
trellis.device (new = TRUE, col = FALSE)
FIG = xyplot (fdef ~ ldef | Lot,
données = df,
main = titre,
layout = c (3,2), col = 4,
xlab = liste (xax, cex = 1.1), ylab = liste (yax, cex = 1.1),
strip = fonction (...) strip.default (..., strip.names = c (T, T)))
FIGURE
## Analyse par lots
x = ldef
y = fdef
xydf = data.frame (x, y, lot)
out = by (xydf, xydf $ Batch, fonction (x) lm (y ~ x, données = x))
lapply (sortie, résumé)
#> Erreur standard résiduelle: 1,35 sur 5 degrés de liberté
#> R-carré multiple: 0,9956, R-carré ajusté: 0,9947
#> Statistique F: 1128 sur 1 et 5 DF, valeur p: 4.401e-07
## Enregistrer les résultats de la régression par lots
outs = sapply (out, résumé)
outc = sapply (out, coef)
fitse = t (sorties [6,])
fitse = c (fitse [[1]], fitse [[2]], fitse [[3]], fitse [[4]], fitse [[5]], fitse [[6]])
r2 = t (sorties [8,])
r2 = c (r2 [[1]], r2 [[2]], r2 [[3]], r2 [[4]], r2 [[5]], r2 [[6]])
b0 = t (outc [1,])
b1 = t (outc [2,])
## Graphiques par lots
par (mfrow = c (2,2))
id = c (1: longueur (b0))
xax2 = "Numéro de lot"
plot (id, r2, xlab = xax2, ylab = "Corrélation", ylim = c (.8,1), col = "blue", pch = 16, cex = 1.25)
abline (h = moyenne (r2))
plot (id, b0 [1,], xlab = xax2, ylab = "Intercepter", ylim = c (0,8), col = "bleu", pch = 16, cex = 1,25)
abline (h = moyenne (b0))
plot (id, b1 [1,], xlab = xax2, ylab = "Slope", ylim = c (.5, .9), col = "blue", pch = 16, cex = 1.25)
abline (h = moyenne (b1))
plot (id, fitse, xlab = xax2, ylab = "RESSD", ylim = c (0,7), col = "blue", pch = 16, cex = 1.25)
abline (h = moyenne (fitse))
par (mfrow = c (1,1))
## Analyse de régression en ligne droite
out = lm (fdef ~ ldef)
résumé (sortie)
## 6 parcelles résiduelles
par (mfrow = c (3,2))
plot (ldef, fdef, xlab = "Lab Defect Size",
ylab = "Field Defect Size", main = "Field Defect Size vs Lab Defect Size")
abline (reg = out)
plot (ldef, out $ residuals, ylab = "Residuals", xlab = "Lab Defect Size",
main = "Résidus vs Taille des défauts de laboratoire")
plot (out $ fit.values, out $ residuals, ylab = "Residuals", xlab = "Predicted",
main = "Résiduel vs prévu")
plot (out $ residuals [2: len], out $ residuals [1: len-1], ylab = "Residuals",
xlab = "Lag 1 Residuals", main = "Lag Plot")
hist (out $ residuals, ylab = "Frequency", xlab = "Residuals", main = "Histogramme")
qqnorm (out $ résidus, main = "Diagramme de probabilité normale")
## Générer un tracé de données brutes avec une fonction de régression superposée
par (mfrow = c (1,1), cex = 1,25)
plot (ldef, fdef, ylab = "Field Defect Size", xlab = "Lab Defect Size", col = "blue")
abline (reg = out)
title ("Données d'étalonnage ultrasonique du pipeline Alaska", ligne = 2)
title ("Avec ligne non pondérée", ligne = 1)
## Tracer les résidus en fonction de la taille des défauts de laboratoire
par (mfrow = c (1,1), cex = 1,25)
plot (ldef, out $ résiduels, xlab = "Lab Defect Size", ylab = "Residuals",
main = "Alaska Pipeline Data Residuals - Unweighted Fit", cex = 1.25, col = "blue")
abline (h = 0)
## Transformations de la variable de réponse
lnfdef = journal (fdef)
sqrtfdef = sqrt (fdef)
invfdef = 1 / fdef
## Tracer la variable de réponse transformée
par (mfrow = c (2,2))
xax = "Taille des défauts de laboratoire"
plot (ldef, fdef, xlab = xax, ylab = "Field Defect Size", col = "blue")
plot (ldef, sqrtfdef, xlab = xax, ylab = "Sqrt (Field Defect Size)", col = "blue")
plot (ldef, lnfdef, xlab = xax, ylab = "ln (Field Defect Size)", col = "blue")
plot (ldef, invfdef, xlab = xax, ylab = "1 / Field Defect Size", col = "blue")
title (main = "Transformations de la variable de réponse", externe = TRUE, ligne = -2)
## Transformations de la variable prédictive
lnldef = log (ldef)
sqrtldef = sqrt (ldef)
invldef = 1 / ldef
## Tracer la variable prédictive transformée
par (mfrow = c (2,2))
yax = "ln (Taille de défaut de champ)"
plot (ldef, lnfdef, xlab = "Lab Defect Size", ylab = yax, col = "blue")
plot (sqrtldef, lnfdef, xlab = "Sqrt (Lab Defect Size)", ylab = yax, col = "blue")
plot (lnldef, lnfdef, xlab = "ln (Lab Defect Size)", ylab = yax, col = "blue")
plot (invldef, lnfdef, xlab = "1 / Lab Defect Size", ylab = yax, col = "blue")
title (main = "Transformations de la variable de prédiction", externe = TRUE, ligne = -2)
] \ ");
/ * Créer une table de données JMP à partir des trames de données R * /
Rdf = R Get (df);
Rdf << NewDataView << Set Name ("R Data frame Table");
/ ** Utilisez Graph Builder sur dtrdf pour produire des nuages de points ** /
/ * Définissez la propriété de classement des valeurs pour la colonne Batch afin qu'elle
correspond à l'affichage du graphique en treillis dans R
* /
Rdf: Batch << Définir la propriété ("Ordre des valeurs", Eval ({4, 5, 6, 1, 2, 3})) <<
Étiquettes de valeur (
{1 = "Lot: 1", 2 = "Lot: 2", 3 = "Lot: 3", 4 = "Lot: 4", 5 =
"Lot: 5", 6 = "Lot: 6"}
) <<
Utiliser des étiquettes de valeur (1)
;
/ ** utiliser les états de ligne pour changer les marqueurs de tracé de solide à vide pour correspondre au tracé R *** /
Rdf << Définir les états de ligne (
[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
128, 128]
)
;
Rdf << Générateur de graphes (
Taille (457, 408),
Afficher le panneau de configuration (0),
Variables (X (: ldef), Y (: fdef), Wrap (: Batch, Niveaux par ligne (3))),
Éléments (Points (X, Y, Légende (3))),
SendToReport (
Envoi(
{},
"titre du graphique",
TextEditBox,
{Set Text ("Alsaka Pipeline Ultrasonic Calibration Data - JMP")}
),
Dispatch ({}, "X title", TextEditBox, {Set Text ("Lab Defect Size")}),
Envoi(
{},
"Titre Y",
TextEditBox,
{Set Text ("ln (Field Defect Size)")}
),
Dispatch ({}, "Graph Builder", FrameBox (1), {Marker Size (1)}),
Dispatch ({}, "Graph Builder", FrameBox (2), {Marker Size (1)}),
Dispatch ({}, "Graph Builder", FrameBox (3), {Marker Size (1)}),
Dispatch ({}, "Graph Builder", FrameBox (4), {Marker Size (1)}),
Dispatch ({}, "Graph Builder", FrameBox (5), {Marker Size (1)}),
Dispatch ({}, "Graph Builder", FrameBox (6), {Marker Size (1)})
)
);
/ * Produire des graphiques et des ajustements de régression avec les plates-formes d'analyse JMP * /
/ * Obtenir le graphique FIG de R et l'afficher dans JMP
* /
R Soumettre ("\ [
## Générer un tracé conditionnel
trellis.device (new = TRUE, col = FALSE)
FIG = xyplot (fdef ~ ldef | Lot,
données = df,
main = titre,
layout = c (3,2), col = 4,
xlab = liste (xax, cex = 1.1), ylab = liste (yax, cex = 1.1),
strip = fonction (...) strip.default (..., strip.names = c (T, T)))
FIGURE
] \ ");
image = R Obtenir des graphiques ("png");
Nouvelle fenêtre ("Alaska Pipeline Ultrasonic Calibration Data from R into JMP", photo);
Attendez (10);
/ * Diagramme de linéarité Box-Cox * /
R Soumettre ("\ [
## Transformations de la variable prédictive
lnldef = log (ldef)
sqrtldef = sqrt (ldef)
invldef = 1 / ldef
## Graphique de linéarité de Box-Cox
pour (i dans (0: 100)) {
alpha = -2 + 4 * i / 100
si (alpha! = 0) {
tx = ((ldef ** alpha) - 1) / alpha
temp = lm (lnfdef ~ tx)
temps = résumé (temp)
si (i == 0) {rsq = temps $ r.squared
alp = alpha}
else {rsq = rbind (rsq, temps $ r.squared)
alp = rbind (alp, alpha)}
}}
rcor = sqrt (rsq)
par (mfrow = c (1,1), cex = 1,25)
plot (alp, rcor, type = "l", xlab = "Alpha", ylab = "Corrélation",
main = "Tracé de linéarité Box-Cox dans le laboratoire (terrain)",
ylim = c (.6,1), col = "bleu")
#creaate Corrélation et vecteurs Alpha dans la trame de données BCP
Corr <- as.vector (rcor)
Alpha <- comme.vecteur (alp)
BCP <- data.frame (Corr, Alpha)
] \ ");
RBCP = R Get (BCP);
RBCP << NewDataView << Nom du jeu ("Trame de données R de la table de corrélation alpha");
/ * Graphique de linéarité Box-Cox de Graph Builder * /
RBCP << Graph Builder (
Taille (421, 362),
Afficher le panneau de configuration (0),
Variables (X (: Alpha), Y (: Corr)),
Éléments (plus lisses (X, Y, Légende (4))),
SendToReport (
Envoi(
{},
"titre du graphique",
TextEditBox,
{Set Text ("Box-Cox Linearity Plot ln (Field) - JMP")}
),
Dispatch ({}, "Y title", TextEditBox, {Set Text ("Correlation")})
)
);
BoxCox = R Obtenir des graphiques ("png");
Nouvelle fenêtre ("Box-Cox Linearity Plot ln (Field) Lab - From R", BoxCox);
Attendez (10);
/ *****
Rxydf <<
Générateur de graphes (
Taille (533, 454),
Afficher le panneau de configuration (0),
Variables (X (: x), Y (: y)),
Éléments (Points (X, Y, Légende (3))),
SendToReport (
Envoi(
{},
"y",
ScaleBox,
{Ligne d'étiquette (Orientation de l'étiquette ("Horizontale"))}
),
Envoi(
{},
"titre du graphique",
TextEditBox,
{Set Text ("Alaskan Pipeline Ultrasonic Calibration Data - JMP")}
),
Dispatch ({}, "X title", TextEditBox, {Set Text ("Lab Defect Size")}),
Envoi(
{},
"Titre Y",
TextEditBox,
{Rotation du texte ("Gauche"), Définir le texte ("Taille du champ défectueux")}
)
)
);
*** /
/ ** Effectuer un premier modèle linéaire de régression initial adapté aux données
Rxydf << Bivarié (
Y (: y),
X (: x),
Ajuster la ligne ({Couleur de la ligne ({57, 177, 67})}),
SendToReport (
Dispatch ({"Linear Fit"}, "Manque d'ajustement", OutlineBox, {Close (0)})
)
);
** /
R Terme (); / * met fin à la connexion à R * /