pulisci il registro() ;
/ ************************************************* ****************
Questo script ed esempio di integrazione JMP e R utilizza l'estensione
Dati del gasdotto dell'Alaska costituiti da ultrasuoni sul campo
misurazioni delle profondità dei difetti nel gasdotto dell'Alaska.
La profondità dei difetti è stata quindi misurata nuovamente in laboratorio.
Queste misurazioni sono state eseguite in sei diversi lotti.
I dati sono stati analizzati per calibrare il bias del campo
misurazioni relative alle misurazioni di laboratorio.
In questa analisi, la misura sul campo è la variabile di risposta
e la misurazione di laboratorio è la variabile predittiva.
Questi dati sono stati forniti da Harry Berger, che all'epoca era uno scienziato per l'Ufficio del Direttore dell'Istituto
of Materials Research (ora Materials Science and Engineering
Laboratorio) del NIST.
Questi dati sono stati utilizzati per uno studio condotto per i Materiali
Ufficio dei trasporti del Dipartimento dei trasporti degli Stati Uniti.
La fonte dei dati proviene dal seguente collegamento
http://www.itl.nist.gov/div898/handbook/pmd/section6/pmd621.htm
************************************************** ************* /
R Init (); / * avvia la connessione a R * /
R Invia ("\ [
# carica i pacchetti
libreria (reticolo)
## Caso di studio sulla calibrazione ultrasonica della pipeline dell'Alaska
## Crea vettore con variabile dipendente, dimensione del difetto di campo
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)
## Crea vettore con variabile indipendente, dimensione del difetto di laboratorio
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)
## Crea vettore con indicatore batch
bat = c (1,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,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)
## Salva i dati in un data frame e determina il numero di osservazioni
Lotto <- as.factor (pipistrello)
df <- data.frame (fdef, ldef, Batch)
len <- lunghezza (batch)
xax = "Dimensioni del difetto di laboratorio"
yax = "Dimensione difetto campo"
title = "Dati di calibrazione a ultrasuoni della pipeline dell'Alaska"
trama (ldef, fdef, xlab = xax, ylab = yax, main = title, col = "blue")
## Genera grafico condizionale
trellis.device (new = TRUE, col = FALSE)
FIG = xyplot (fdef ~ ldef | Batch,
data = df,
principale = titolo,
layout = c (3,2), col = 4,
xlab = lista (xax, cex = 1.1), ylab = lista (yax, cex = 1.1),
strip = funzione (...) strip.default (..., strip.names = c (T, T)))
FIGURA
## Analisi batch
x = ldef
y = fdef
xydf = data.frame (x, y, Batch)
out = by (xydf, xydf $ Batch, funzione (x) lm (y ~ x, data = x))
lapply (out, summary)
#> Errore standard residuo: 1,35 su 5 gradi di libertà
#> R quadrato multiplo: 0,9956, R quadrato rettificato: 0,9947
#> Statistica F: 1128 su 1 e 5 DF, valore p: 4.401e-07
## Salva i risultati della regressione batch
out = sapply (out, summary)
outc = sapply (out, coef)
fitse = t (outs [6,])
fitse = c (fitse [[1]], fitse [[2]], fitse [[3]], fitse [[4]], fitse [[5]], fitse [[6]])
r2 = t (outs [8,])
r2 = c (r2 [[1]], r2 [[2]], r2 [[3]], r2 [[4]], r2 [[5]], r2 [[6]])
b0 = t (outc [1,])
b1 = t (outc [2,])
## Grafici in batch
par (mfrow = c (2,2))
id = c (1: length (b0))
xax2 = "Numero batch"
trama (id, r2, xlab = xax2, ylab = "Correlation", ylim = c (.8,1), col = "blue", pch = 16, cex = 1.25)
abline (h = media (r2))
trama (id, b0 [1,], xlab = xax2, ylab = "Intercept", ylim = c (0,8), col = "blue", pch = 16, cex = 1.25)
abline (h = mean (b0))
plot (id, b1 [1,], xlab = xax2, ylab = "Slope", ylim = c (.5, .9), col = "blue", pch = 16, cex = 1.25)
abline (h = mean (b1))
grafico (id, fitse, xlab = xax2, ylab = "RESSD", ylim = c (0,7), col = "blue", pch = 16, cex = 1.25)
abline (h = mean (fitse))
par (mfrow = c (1,1))
## Analisi di regressione in linea retta
out = lm (fdef ~ ldef)
riepilogo (fuori)
## 6 trama residua
par (mfrow = c (3,2))
plot (ldef, fdef, xlab = "Lab Defect Size",
ylab = "Dimensione difetto campo", main = "Dimensione difetto campo vs Dimensione difetto laboratorio")
abline (reg = out)
plot (ldef, out $ residuals, ylab = "Residuals", xlab = "Lab Defect Size",
main = "Residui rispetto alle dimensioni dei difetti di laboratorio")
plot (out $ fitting.values, out $ residuals, ylab = "Residuals", xlab = "Predicted",
main = "Residuo vs previsto")
traccia (out $ residuals [2: len], out $ residuals [1: len-1], ylab = "Residuals",
xlab = "Residui intervallo 1", main = "Grafico intervallo")
hist (out $ residuals, ylab = "Frequency", xlab = "Residuals", main = "Histogram")
qqnorm (out $ residuals, main = "Normal Probability Plot")
## Genera grafico di dati grezzi con funzione di regressione sovrapposta
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 ("Alaska Pipeline Ultrasonic Calibration Data", line = 2)
title ("Con riga non ponderata", riga = 1)
## Traccia i residui rispetto alla dimensione del difetto di laboratorio
par (mfrow = c (1,1), cex = 1,25)
plot (ldef, out $ residuals, xlab = "Lab Defect Size", ylab = "Residuals",
main = "Alaska Pipeline Data Residuals - Unweighted Fit", cex = 1.25, col = "blue")
abline (h = 0)
## Trasformazioni della variabile di risposta
lnfdef = log (fdef)
sqrtfdef = sqrt (fdef)
invfdef = 1 / fdef
## Traccia la variabile di risposta trasformata
par (mfrow = c (2,2))
xax = "Dimensioni del difetto di laboratorio"
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 of Response Variable", outer = TRUE, line = -2)
## Trasformazioni della variabile predittore
lnldef = log (ldef)
sqrtldef = sqrt (ldef)
invldef = 1 / ldef
## Grafico variabile predittore trasformato
par (mfrow = c (2,2))
yax = "ln (Dimensione difetto campo)"
plot (ldef, lnfdef, xlab = "Lab Defect Size", ylab = yax, col = "blue")
grafico (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 of Predictor Variable", outer = TRUE, line = -2)
] \ ");
/ * Crea una tabella dati JMP dai frame di dati R * /
Rdf = R Get (df);
Rdf << NewDataView << Set Name ("R Data frame Table");
/ ** Usa Graph Builder su dtrdf per produrre grafici a dispersione ** /
/ * Imposta la proprietà Ordinamento valore per la colonna Batch in modo che
abbinato alla visualizzazione del Trellis Plot in R
* /
Rdf: Batch << Imposta proprietà ("Value Ordering", Eval ({4, 5, 6, 1, 2, 3})) <<
Etichette di valore (
{1 = "Batch: 1", 2 = "Batch: 2", 3 = "Batch: 3", 4 = "Batch: 4", 5 =
"Batch: 5", 6 = "Batch: 6"}
) <<
Usa etichette di valore (1)
;
/ ** usa gli stati delle righe per cambiare i marcatori del grafico da pieni a vuoti in modo che corrispondano al grafico R *** /
Rdf << Imposta stati riga (
[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 << Generatore di grafici (
Taglia (457, 408),
Mostra pannello di controllo (0),
Variabili (X (: ldef), Y (: fdef), A capo (: Batch, Livelli per riga (3))),
Elementi (Punti (X, Y, Legenda (3))),
SendToReport (
Spedizione(
{},
"titolo del grafico",
TextEditBox,
{Set Text ("Alsaka Pipeline Ultrasonic Calibration Data - JMP")}
),
Invio ({}, "X title", TextEditBox, {Set Text ("Lab Defect Size")}),
Spedizione(
{},
"Y titolo",
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)})
)
);
/ * Produci grafici e adattamenti di regressione con le piattaforme di analisi JMP * /
/ * Ottieni il grafico FIG da R e visualizzalo in JMP
* /
R Invia ("\ [
## Genera grafico condizionale
trellis.device (new = TRUE, col = FALSE)
FIG = xyplot (fdef ~ ldef | Batch,
data = df,
principale = titolo,
layout = c (3,2), col = 4,
xlab = lista (xax, cex = 1.1), ylab = lista (yax, cex = 1.1),
strip = funzione (...) strip.default (..., strip.names = c (T, T)))
FIGURA
] \ ");
immagine = R Ottieni grafica ("png");
Nuova finestra ("Dati di calibrazione a ultrasuoni della pipeline dell'Alaska da R a JMP", immagine);
Aspetta (10);
/ * Grafico di linearità Box-Cox * /
R Invia ("\ [
## Trasformazioni della variabile predittore
lnldef = log (ldef)
sqrtldef = sqrt (ldef)
invldef = 1 / ldef
## Grafico di linearità Box-Cox
for (i in (0: 100)) {
alfa = -2 + 4 * i / 100
if (alpha! = 0) {
tx = ((ldef ** alpha) - 1) / alpha
temp = lm (lnfdef ~ tx)
temps = summary (temp)
if (i == 0) {rsq = temps $ r.squared
alp = alpha}
altro {rsq = rbind (rsq, temps $ r.squared)
alp = rbind (alp, alpha)}
}}
rcor = sqrt (rsq)
par (mfrow = c (1,1), cex = 1,25)
trama (alp, rcor, type = "l", xlab = "Alpha", ylab = "Correlation",
main = "Box-Cox Linearity Plot ln (Field) Lab",
ylim = c (.6,1), col = "blu")
#creaate Correlazione e vettori alfa nel frame di dati BCP
Corr <- as.vector (rcor)
Alpha <- as.vector (alp)
BCP <- data.frame (Corr, Alpha)
] \ ");
RBCP = R Get (BCP);
RBCP << NewDataView << Set Name ("R Data Frame of Alpha-Correlation Table");
/ * Grafico di linearità Box-Cox da Graph Builder * /
RBCP << Generatore di grafici (
Taglia (421, 362),
Mostra pannello di controllo (0),
Variabili (X (: Alpha), Y (: Corr)),
Elementi (Smoother (X, Y, Legend (4))),
SendToReport (
Spedizione(
{},
"titolo del grafico",
TextEditBox,
{Set Text ("Box-Cox Linearity Plot ln (Field) - JMP")}
),
Dispatch ({}, "Y title", TextEditBox, {Set Text ("Correlation")})
)
);
BoxCox = R Ottieni grafica ("png");
Nuova finestra ("Box-Cox Linearity Plot ln (Field) Lab - From R", BoxCox);
Aspetta (10);
/ *****
Rxydf <<
Generatore di grafici (
Taglia (533, 454),
Mostra pannello di controllo (0),
Variabili (X (: x), Y (: y)),
Elementi (Punti (X, Y, Legenda (3))),
SendToReport (
Spedizione(
{},
"y",
ScaleBox,
{Riga etichetta (Orientamento etichetta ("Orizzontale"))}
),
Spedizione(
{},
"titolo del grafico",
TextEditBox,
{Set Text ("Alaskan Pipeline Ultrasonic Calibration Data - JMP")}
),
Invio ({}, "X title", TextEditBox, {Set Text ("Lab Defect Size")}),
Spedizione(
{},
"Y titolo",
TextEditBox,
{Ruota testo ("Sinistra"), Imposta testo ("Dimensioni difetto campo")}
)
)
);
*** /
/ ** Adatta ai dati un primo modello lineare di regressione iniziale
Rxydf << Bivariata (
Y (: y),
X (: x),
Linea adatta ({Colore linea ({57, 177, 67})}),
SendToReport (
Dispatch ({"Linear Fit"}, "Lack Of Fit", OutlineBox, {Close (0)})
)
);
** /
Termine R (); / * termina la connessione a R * /