ฉันไม่แน่ใจว่าหัวหน้าของคุณคิดว่า "คาดการณ์ได้มากกว่า" หมายความว่าอย่างไร หลายคนเชื่ออย่างไม่ถูกต้องว่าค่าต่ำกว่าหมายถึงรูปแบบการทำนายที่ดีขึ้น  นั่นคือไม่จำเป็นจริง (เป็นกรณีในจุดนี้) อย่างไรก็ตามการเรียงลำดับตัวแปรทั้งสองอย่างเป็นอิสระล่วงหน้าจะรับประกันค่าต่ำกว่า ในอีกทางหนึ่งเราสามารถประเมินความแม่นยำในการทำนายของแบบจำลองโดยการเปรียบเทียบการทำนายกับข้อมูลใหม่ที่สร้างขึ้นโดยกระบวนการเดียวกัน ฉันทำอย่างนั้นในตัวอย่างง่ายๆ (เขียนด้วย)  พีพีพีR
  
options(digits=3)                       # for cleaner output
set.seed(9149)                          # this makes the example exactly reproducible
B1 = .3
N  = 50                                 # 50 data
x  = rnorm(N, mean=0, sd=1)             # standard normal X
y  = 0 + B1*x + rnorm(N, mean=0, sd=1)  # cor(x, y) = .31
sx = sort(x)                            # sorted independently
sy = sort(y)
cor(x,y)    # [1] 0.309
cor(sx,sy)  # [1] 0.993
model.u = lm(y~x)
model.s = lm(sy~sx)
summary(model.u)$coefficients
#             Estimate Std. Error t value Pr(>|t|)
# (Intercept)    0.021      0.139   0.151    0.881
# x              0.340      0.151   2.251    0.029  # significant
summary(model.s)$coefficients
#             Estimate Std. Error t value Pr(>|t|)
# (Intercept)    0.162     0.0168    9.68 7.37e-13
# sx             1.094     0.0183   59.86 9.31e-47  # wildly significant
u.error = vector(length=N)              # these will hold the output
s.error = vector(length=N)
for(i in 1:N){
  new.x      = rnorm(1, mean=0, sd=1)   # data generated in exactly the same way
  new.y      = 0 + B1*x + rnorm(N, mean=0, sd=1)
  pred.u     = predict(model.u, newdata=data.frame(x=new.x))
  pred.s     = predict(model.s, newdata=data.frame(x=new.x))
  u.error[i] = abs(pred.u-new.y)        # these are the absolute values of
  s.error[i] = abs(pred.s-new.y)        #  the predictive errors
};  rm(i, new.x, new.y, pred.u, pred.s)
u.s = u.error-s.error                   # negative values means the original
                                        # yielded more accurate predictions
mean(u.error)  # [1] 1.1
mean(s.error)  # [1] 1.98
mean(u.s<0)    # [1] 0.68
windows()
  layout(matrix(1:4, nrow=2, byrow=TRUE))
  plot(x, y,   main="Original data")
  abline(model.u, col="blue")
  plot(sx, sy, main="Sorted data")
  abline(model.s, col="red")
  h.u = hist(u.error, breaks=10, plot=FALSE)
  h.s = hist(s.error, breaks=9,  plot=FALSE)
  plot(h.u, xlim=c(0,5), ylim=c(0,11), main="Histogram of prediction errors",
       xlab="Magnitude of prediction error", col=rgb(0,0,1,1/2))
  plot(h.s, col=rgb(1,0,0,1/4), add=TRUE)
  legend("topright", legend=c("original","sorted"), pch=15, 
         col=c(rgb(0,0,1,1/2),rgb(1,0,0,1/4)))
  dotchart(u.s, color=ifelse(u.s<0, "blue", "red"), lcolor="white",
           main="Difference between predictive errors")
  abline(v=0, col="gray")
  legend("topright", legend=c("u better", "s better"), pch=1, col=c("blue","red"))

พล็อตซ้ายบนแสดงข้อมูลดั้งเดิม มีความสัมพันธ์ระหว่างและ (กล่าวคือมีความสัมพันธ์กันประมาณ ) พล็อตขวาบนแสดงให้เห็นว่าข้อมูลมีลักษณะอย่างไรหลังจากเรียงลำดับตัวแปรทั้งสองอย่างเป็นอิสระ คุณสามารถเห็นได้อย่างง่ายดายว่าความแข็งแรงของความสัมพันธ์เพิ่มขึ้นอย่างมาก (ตอนนี้ประมาณ ) อย่างไรก็ตามในแปลงที่ต่ำกว่าเราจะเห็นว่าการแจกแจงข้อผิดพลาดการทำนายนั้นใกล้เคียงกับสำหรับโมเดลที่ได้รับการฝึกอบรมกับข้อมูลดั้งเดิม (ไม่ได้เรียง) ข้อผิดพลาดการคาดการณ์ค่าสัมบูรณ์แบบสัมบูรณ์สำหรับแบบจำลองที่ใช้ข้อมูลดั้งเดิมคือในขณะที่ค่าความผิดพลาดแบบสัมบูรณ์แบบทำนายค่าเฉลี่ยสำหรับแบบจำลองที่ฝึกบนข้อมูลที่เรียงลำดับคือyxy0.99 0 1.1 1.98 Y 68 %.31.9901.11.98- ใหญ่เป็นสองเท่า นั่นหมายถึงการทำนายของตัวแบบข้อมูลที่เรียงลำดับนั้นมากไปกว่าค่าที่ถูกต้อง พล็อตในด้านล่างขวาคือพล็อตจุด จะแสดงความแตกต่างระหว่างข้อผิดพลาดการคาดการณ์กับข้อมูลต้นฉบับและข้อมูลที่เรียงลำดับ สิ่งนี้ช่วยให้คุณเปรียบเทียบการทำนายที่สอดคล้องกันสองแบบสำหรับการสังเกตการณ์ใหม่แต่ละครั้ง จุดสีฟ้าทางด้านซ้ายเป็นเวลาที่ข้อมูลต้นฉบับใกล้เคียงกับค่าใหม่และจุดสีแดงทางด้านขวาเป็นเวลาที่ข้อมูลที่เรียงลำดับให้การคาดการณ์ที่ดีขึ้น มีการทำนายที่แม่นยำจากแบบจำลองที่ฝึกกับข้อมูลดั้งเดิมของเวลา  y68%
ระดับที่การเรียงลำดับจะทำให้เกิดปัญหาเหล่านี้คือฟังก์ชันของความสัมพันธ์เชิงเส้นที่มีอยู่ในข้อมูลของคุณ หากความสัมพันธ์ระหว่างและเป็นแล้วการเรียงลำดับจะไม่มีผลและไม่เป็นอันตราย ในทางตรงกันข้ามถ้าความสัมพันธ์เป็นy ที่1.0 - 1.0xy1.0−1.0การเรียงลำดับจะย้อนกลับความสัมพันธ์อย่างสมบูรณ์ทำให้โมเดลไม่ถูกต้องเท่าที่จะเป็นไปได้ หากข้อมูลไม่ได้ถูกเชื่อมโยงอย่างสมบูรณ์ในตอนแรกการเรียงลำดับจะมีระดับกลาง แต่ยังคงมีผลกระทบที่ค่อนข้างใหญ่และเป็นอันตรายต่อความแม่นยำในการทำนายแบบจำลองของผลลัพธ์ เนื่องจากคุณพูดถึงว่าข้อมูลของคุณมีความสัมพันธ์กันโดยทั่วไปฉันสงสัยว่าได้ให้การป้องกันอันตรายบางประการกับกระบวนการนี้ อย่างไรก็ตามการเรียงลำดับก่อนเป็นอันตรายอย่างแน่นอน ในการสำรวจความเป็นไปได้เหล่านี้เราสามารถเรียกใช้โค้ดข้างต้นใหม่ด้วยค่าที่แตกต่างกันสำหรับB1(ใช้เมล็ดพันธุ์เดียวกันสำหรับการทำซ้ำ) และตรวจสอบผลลัพธ์:  
- B1 = -5:
 - cor(x,y)                            # [1] -0.978
summary(model.u)$coefficients[2,4]  # [1]  1.6e-34  # (i.e., the p-value)
summary(model.s)$coefficients[2,4]  # [1]  1.82e-42
mean(u.error)                       # [1]  7.27
mean(s.error)                       # [1] 15.4
mean(u.s<0)                         # [1]  0.98
 
- B1 = 0:
 - cor(x,y)                            # [1] 0.0385
summary(model.u)$coefficients[2,4]  # [1] 0.791
summary(model.s)$coefficients[2,4]  # [1] 4.42e-36
mean(u.error)                       # [1] 0.908
mean(s.error)                       # [1] 2.12
mean(u.s<0)                         # [1] 0.82
 
- B1 = 5:
 - cor(x,y)                            # [1] 0.979
summary(model.u)$coefficients[2,4]  # [1] 7.62e-35
summary(model.s)$coefficients[2,4]  # [1] 3e-49
mean(u.error)                       # [1] 7.55
mean(s.error)                       # [1] 6.33
mean(u.s<0)                         # [1] 0.44