清除日誌() ;
/ ***************************************************** ****************
此JMP和R Integration腳本和示例使用
阿拉斯加管道數據包括現場超聲
測量阿拉斯加管道中缺陷的深度。
然後在實驗室中重新測量缺陷的深度。
這些測量分六批進行。
分析數據以校準場的偏差
測量相對於實驗室測量。
在此分析中,現場測量是響應變量
而實驗室測量值是預測變量。
這些數據由哈里·伯格(Harry Berger)提供,他當時是研究所所長辦公室的科學家
材料研究學院(現為材料科學與工程學院)
NIST。
這些數據用於對材料進行的研究
美國運輸部運輸局。
數據來源來自以下鏈接
http://www.itl.nist.gov/div898/handbook/pmd/section6/pmd621.htm
****************************************************** ************* /
R Init(); / *開始與R * /的連接
R提交(“ \ [
#加載包
圖書館(格子)
##阿拉斯加管道超聲波校準案例研究
##創建具有因變量,場缺陷大小的向量
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)
##創建具有自變量,實驗室缺陷大小的向量
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)
##使用批處理指示器創建向量
蝙蝠= 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,2,2,3,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)
##將數據保存在數據框中並確定觀察次數
批次<-as.factor(bat)
df <-data.frame(fdef,ldef,Batch)
len <-length(批)
xax =“實驗室缺陷大小”
yax =“場缺陷大小”
title =“阿拉斯加管道超聲波校準數據”
情節(ldef,fdef,xlab = xax,ylab = yax,main = title,col =“ blue”)
##生成條件圖
trellis.device(new = TRUE,col = FALSE)
圖= xyplot(fdef〜ldef | Batch,
數據= DF
主要=標題,
layout = c(3,2),col = 4,
xlab = list(xax,cex = 1.1),ylab = list(yax,cex = 1.1),
strip = function(...)strip.default(...,strip.names = c(T,T)))
圖
##批次分析
x = ldef
y = fdef
xydf = data.frame(x,y,Batch)
out = by(xydf,xydf $ Batch,function(x)lm(y〜x,data = x))
lapply(輸出,摘要)
#>殘留標準誤差:5個自由度上為1.35
#>多個R平方:0.9956,已調整R平方:0.9947
#> F統計量:1和5 DF上為1128,p值:4.401e-07
##保存批次回歸結果
outs = sapply(輸出,摘要)
outc = sapply(out,coef)
fitse = t(輸出[6,])
fitse = c(fitse [[1]],fitse [[2]],fitse [[3]],fitse [[4]],fitse [[5]],fitse [[6]])
r2 = t(輸出[8,])
r2 = c(r2 [[1]],r2 [[2]],r2 [[3]],r2 [[4]],r2 [[5]],r2 [[6]])
b0 = t(outc [1,])
b1 = t(outc [2,])
##批處理圖
par(mfrow = c(2,2))
id = c(1:長度(b0))
xax2 =“批號”
情節(id,r2,xlab = xax2,ylab =“ Correlation”,ylim = c(.8,1),col =“ blue”,pch = 16,cex = 1.25)
絕對值(h =平均值(r2))
plot(id,b0 [1,],xlab = xax2,ylab =“ Intercept”,ylim = c(0,8),col =“ blue”,pch = 16,cex = 1.25)
abline(h =平均值(b0))
plot(id,b1 [1,],xlab = xax2,ylab =“ Slope”,ylim = c(.5,.9),col =“ blue”,pch = 16,cex = 1.25)
abline(h =平均值(b1))
情節(id,fitse,xlab = xax2,ylab =“ RESSD”,ylim = c(0,7),col =“ blue”,pch = 16,cex = 1.25)
abline(h =平均值(適合))
par(mfrow = c(1,1))
##直線回歸分析
輸出= lm(fdef〜ldef)
摘要(出)
##剩餘6幅圖
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 =“ Residuals vs Lab Defect Size”)
plot(out $ fitted.values,out $ residuals,ylab =“ Residuals”,xlab =“ Predicted”,
main =“ Residual vs Predicted”)
情節(out $ residuals [2:len],out $ residuals [1:len-1],ylab =“ Residuals”,
xlab =“滯後1個殘基”,main =“滯後圖”)
hist(out $ residuals,ylab =“ Frequency”,xlab =“ Residuals”,main =“ Histogram”)
qqnorm(out $ residuals,main =“正態概率圖”)
##使用疊加回歸函數生成原始數據圖
par(mfrow = c(1,1),cex = 1.25)
plot(ldef,fdef,ylab =“ Field Defect Size”,xlab =“ Lab Defect Size”,col =“ blue”)
abline(reg = out)
標題(“阿拉斯加管道超聲波校準數據”,第2行)
標題(“有不加權線”,第1行)
##繪製殘差與實驗室缺陷大小的關係
par(mfrow = c(1,1),cex = 1.25)
plot(ldef,out $ residuals,xlab =“ Lab Defect Size”,ylab =“ Residuals ,,
main =“阿拉斯加管道數據殘差-未加權擬合”,cex = 1.25,col =“ blue”)
背斜(h = 0)
##響應變量的轉換
lnfdef = log(fdef)
sqrtfdef = sqrt(fdef)
invfdef = 1 / fdef
##繪製轉換後的響應變量
par(mfrow = c(2,2))
xax =“實驗室缺陷大小”
情節(ldef,fdef,xlab = xax,ylab =“ Field Defect Size”,col =“ blue”)
情節(ldef,sqrtfdef,xlab = xax,ylab =“ Sqrt(Field Defect Size)”,col =“ blue”)
情節(ldef,lnfdef,xlab = xax,ylab =“ ln(Field Defect Size)”,col =“ blue”)
情節(ldef,invfdef,xlab = xax,ylab =“ 1 / Field Defect Size”,col =“ blue”)
title(main =“響應變量的轉換”,outer = TRUE,line = -2)
##預測變量的轉換
lnldef = log(ldef)
sqrtldef = sqrt(ldef)
invldef = 1 / ldef
##繪製轉換後的預測變量
par(mfrow = c(2,2))
yax =“ ln(場缺陷尺寸)”
圖(ldef,lnfdef,xlab =“ Lab Defect Size”,ylab = yax,col =“ blue”)
情節(sqrtldef,lnfdef,xlab =“ Sqrt(Lab Defect Size)”,ylab = yax,col =“ blue”)
情節(lnldef,lnfdef,xlab =“ ln(Lab Defect Size)”,ylab = yax,col =“ blue”)
情節(invldef,lnfdef,xlab =“ 1 / Lab Defect Size”,ylab = yax,col =“ blue”)
title(main =“ Predictor變量的轉換”,outer = TRUE,line = -2)
] \“);
/ *從R個數據幀創建JMP數據表* /
Rdf = R Get(df);
Rdf << NewDataView <<設置名稱(“ R數據幀表”);
/ **在dtrdf上使用Graph Builder生成散點圖** /
/ *設置“批次”列的“值排序”屬性,以便它
匹配顯示R中的網格圖
* /
Rdf:Batch << Set Property(“ Value Ordering”,Eval({4,5,6,1,2,3}))<<
價值標籤(
{1 =“批處理:1”,2 =“批處理:2”,3 =“批處理:3”,4 =“批處理:4”,5 =
“批次:5”,6 =“批次:6”}
)<<
使用價值標籤(1)
;
/ **使用行狀態將圖標記從實線更改為空白以匹配R圖*** /
Rdf <<設置行狀態(
[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 <<圖形生成器(
大小(457,408),
顯示控制面板(0),
變量(X(:ldef),Y(:fdef),Wrap(:Batch,每行級別(3))),
Elements(點(X,Y,Legend(3))),
SendToReport(
調度(
{},
“圖標題”,
TextEditBox,
{設置文本(“ Alsaka管道超聲校準數據-JMP”)}
),
Dispatch({},“ X title”,TextEditBox,{Set Text(“ Lab Defect Size”)}),
調度(
{},
“ Y標題”,
TextEditBox,
{設置文本(“ ln(場缺陷大小)”)}
),
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}})
)
);
/ *使用JMP Analysis平台生成圖和回歸擬合* /
/ *從R中獲取FIG圖並顯示在JMP中
* /
R提交(“ \ [
##生成條件圖
trellis.device(new = TRUE,col = FALSE)
圖= xyplot(fdef〜ldef | Batch,
數據= DF
主要=標題,
layout = c(3,2),col = 4,
xlab = list(xax,cex = 1.1),ylab = list(yax,cex = 1.1),
strip = function(...)strip.default(...,strip.names = c(T,T)))
圖
] \“);
圖片= R Get Graphics(“ png”);
新窗口(“從R到JMP的阿拉斯加管道超聲波校準數據”,圖片);
等待(10);
/ * Box-Cox線性圖* /
R提交(“ \ [
##預測變量的轉換
lnldef = log(ldef)
sqrtldef = sqrt(ldef)
invldef = 1 / ldef
## Box-Cox線性圖
對於(i in(0:100)){
alpha = -2 + 4 * i / 100
如果(alpha!= 0){
tx =(((ldef ** alpha)-1)/ alpha
溫度= lm(lnfdef〜tx)
臨時=摘要(臨時)
if(i == 0){rsq = temps $ r.squared
alp = alpha}
否則{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 =“ Correlation”,
main =“ Box-Cox線性圖ln(Field)Lab”,
ylim = c(.6,1),col =“ blue”)
#將相關和Alpha向量創建到BCP數據幀中
Corr <-as.vector(rcor)
Alpha <-as.vector(alp)
BCP <-data.frame(Corr,Alpha)
] \“);
RBCP = R Get(BCP);
RBCP << NewDataView <<設置名稱(“ Alpha-Correlation表的R數據幀”);
/ *來自Graph Builder的Graph Box-Cox線性圖* /
RBCP <<圖形生成器(
大小(421,362),
顯示控制面板(0),
變量(X(:Alpha),Y(:Corr)),
Elements(更平滑(X,Y,Legend(4))),
SendToReport(
調度(
{},
“圖標題”,
TextEditBox,
{設置文本(“ Box-Cox線性圖ln(Field)-JMP”)}
),
Dispatch({},“ Y title”,TextEditBox,{Set Text(“ Correlation”)})
)
);
BoxCox = R獲取圖形(“ png”);
新窗口(“ Box-Cox線性圖ln(Field)Lab-從R開始”,BoxCox);
等待(10);
/ *****
Rxydf <<
圖形生成器(
大小(533,454),
顯示控制面板(0),
變量(X(:x),Y(:y)),
Elements(點(X,Y,Legend(3))),
SendToReport(
調度(
{},
“ y”,
ScaleBox,
{標籤行(標籤方向(“水平”))}
),
調度(
{},
“圖標題”,
TextEditBox,
{設置文本(“阿拉斯加管道超聲波校準數據-JMP”)}
),
Dispatch({},“ X title”,TextEditBox,{Set Text(“ Lab Defect Size”)})),
調度(
{},
“ Y標題”,
TextEditBox,
{旋轉文本(“左”),設置文本(“字段缺陷大小”))}
)
)
);
*** /
/ **對數據進行第一個初始回歸直線模型擬合
Rxydf <<雙變量(
Y(:y),
X(:x),
擬合線({Line Color({57,177,67})}),
SendToReport(
調度({“線性擬合”},“缺乏擬合”,OutlineBox,{Close(0}}))
)
);
** /
R Term(); / *終止與R的連接* /