Khởi động trong khoa học dữ liệu

Có một số cách chúng ta có thể gặp vấn đề bằng cách sử dụng các phương pháp thống kê tham số và phi tham số truyền thống. Ví dụ. kích thước mẫu của chúng tôi có thể quá nhỏ để định lý giới hạn trung tâm chắc chắn rằng các phương tiện mẫu được phân phối bình thường, vì vậy các giới hạn tin cậy được tính toán theo kiểu cổ điển có thể không chính xác. Chúng tôi không thể muốn sử dụng các thử nghiệm phi tham số có hiệu suất thấp. Chúng tôi có thể quan tâm đến một hệ thống thống kê mà phân phối lý thuyết cơ bản không được xác định. Nếu không có phân phối, chúng ta không thể tính toán khoảng tin cậy, giá trị p hoặc giá trị tới giới hạn

Các bài viết liên quan

  • Thu thập dữ liệu trong nghiên cứu
  • Resampling(Lấy lại mẫu) dữ liệu không cân bằng
  • Đường cong ROC(Receiver Operator Characteristic)
  • Thống kê Cohen's Kappa
  • Confusion Matrix là gì?
  • Kiểm tra giả thuyết(Hypothesis Testing) trong R
  • Google Biểu mẫu. hướng dẫn chi tiết
  • Cách chèn code html vào wordpress
  • All-pairs Testing trong kiểm thử phần mềm
  • Kiểm tra lỗi bảo mật Server-side Template Injection

Phương pháp lấy mẫu lại là một trong những giải pháp cho những vấn đề này và chúng có một số ưu điểm. Chúng linh hoạt và trực quan. Chúng thường có sức mạnh lớn hơn các phương pháp không tham số, và chúng tiếp cận và đôi khi vượt quá sức mạnh của các phương pháp tham số. Hai trong số chúng (bootstrap, jackknife) không đưa ra giả định nào về định dạng của mẹ phân phối, ngoại trừ việc mẫu là phản ánh tốt của phân phối đó, điều này sẽ xảy ra nếu bạn thu thập một mẫu ngẫu nhiên thông tin . Hai điều này cũng có thể được áp dụng cho bất kỳ vấn đề nào, ngay cả khi không có phân phối lý thuyết của thống kê. Chúng ít nhạy cảm hơn với các giá trị ngoại lai so với các phương pháp tham số. Mối quan hệ (các quan sát có cùng giá trị) không đặt ra vấn đề mà chúng thực hiện trong các phương pháp phi tham số

Có một số hạn chế đối với phương pháp resampling. Khó khăn chính là chúng có thể khó thực hiện hơn một bài kiểm tra tham số hoặc phi tham số truyền thống. Họ ít quen thuộc hơn đối với một số nhà khoa học, điều này có thể gây ra vấn đề trong việc chấp nhận của họ, mặc dù điều này đang trở nên ít vấn đề hơn. Các phương pháp này ít được tiêu chuẩn hóa hơn so với các bài kiểm tra tham số và phi tham số, và đôi khi chúng rất tốn kém về mặt tính toán

Có bốn loại phương pháp lấy lại mẫu chính. ngẫu nhiên hóa, Monte Carlo, bootstrap và jackknife. Các phương pháp này có thể được sử dụng để xây dựng hệ thống phân phối dựa trên dữ liệu của chúng tôi, sau đó có thể được sử dụng để tạo khoảng tin cậy dựa trên ước tính tham số. Ngoài ra, chúng có thể được sử dụng để xây dựng hệ thống phân phối dựa trên giả thuyết trống rỗng, có thể được sử dụng để tạo giá trị p hoặc giá trị tới hạn

Tóm tắt nội dung

Monte Carlo

Các phương pháp Monte Carlo thường được sử dụng trong các mô phỏng trong đó các mẹ phân phối được biết đến hoặc được giả định. Nói không ngoa, tôi đã sử dụng phương pháp Monte Carlo trong suốt quá trình học tập để minh họa cách thức hoạt động của các kỹ thuật thống kê

Ví dụ. giả sử chúng ta muốn mô phỏng bảng phân phối của F cho hai mẫu được rút ra từ phân phối chuẩn. Chúng tôi sẽ chỉ định giá trị trung bình và phương sai của phân phối chuẩn, tạo hai mẫu có kích thước định mức cao nhất và tính toán tỷ lệ phương sai của chúng tôi. Chúng tôi sẽ lặp lại quá trình này nhiều lần để tạo ra tần suất phân bổ của bảng thống kê F, từ đó chúng tôi có thể tính toán giá trị p hoặc giá tới hạn

Đây là một ví dụ về Monte Carlo trong R. Đầu tiên khối mã tạo ra một hàm Rate F của hai mẫu, với kích thước mẫu n1 và n2. Khối mã thứ hai khai báo các kích thước mẫu mà chúng ta muốn mô phỏng, sau đó gọi hàm của chúng ta nhiều lần để xây dựng phân phối các giá trị F

simulateOneF <- function(n1, n2) {
  data1 <- rnorm(n1)
  data2 <- rnorm(n2)
  F <- var(data1) / var(data2)
  F
}

n1 <- 12
n2 <- 25
F <- replicate(10000, simulateOneF(n1, n2))

Chúng ta có thể tính toán giá trị p bằng cách tìm phần trăm giá trị F của chúng ta bằng hoặc vượt quá một bảng thống kê F quan sát được (trong ví dụ này là 3,5)

Fobserved <- 3.5
pValue <- length(F[F >= Fobserved]) / length(F)
pValue

Điều này cho thấy tỷ lệ giá trị F vượt quá mức quan trọng của F là 3,5, vì vậy nó là giá trị p một bên. Để nhận được giá trị p hai phía, hãy nhân đôi hiệu suất này

Vì giá trị p có thể được tính như thế này cho dự kiến ​​phân phối của bất kỳ hệ thống thống kê nào, nên chúng tôi có thể viết hàm tính giá trị p cho hệ thống kê cho bất kỳ phân phối nào được tạo bằng phương pháp lấy

pvalue <- function(x, observed, tails=1) {
  nExtreme <- length(x[ x>= observed])
  nTotal <- length(x)
  p <- nExtreme / nTotal * tails
  p
}

Call this thing rất đơn giản. đối số đầu tiên là phân phối được cung cấp bởi Monte Carlo (hoặc một phương pháp lấy lại mẫu khác) và đối số thứ hai là thống kê được quan sát. Theo mặc định, nó sẽ tính giá trị p bên (bên phải); . Việc gọi một hàm tự tạo như thế này tạo ra mã dễ đọc hơn và dễ hiểu hơn

pvalue(F, Fobserved)

Tóm tắt lại, có ba bước để có một Monte Carlo

  • mô phỏng các quan sát dựa trên phân tán lý thuyết
  • nhiều lần tính toán thống kê quan tâm để xây dựng phân phối của nó dựa trên giả thuyết trống rỗng
  • sử dụng phân phối của bảng thống kê để tìm giá trị p hoặc giá trị tới giới hạn

ngẫu nhiên hóa

Ngẫu nhiên hóa là một phương pháp lấy lại mẫu đơn giản và mô hình suy nghĩ minh họa cho cách tiếp cận. Giả sử chúng ta có hai mẫu A và B, trên đó chúng ta đã đo lường một thống kê (ví dụ:. giá trị trung bình). Một cách để hỏi liệu hai mẫu có phương tiện khác nhau đáng kể hay không là câu hỏi khả năng chúng ta quan sát thấy sự khác biệt về phương tiện của họ như thế nào nếu các quan sát được phân ngẫu nhiên cho hai nhóm. Chúng tôi có thể mô phỏng điều đó bằng cách chỉ định ngẫu nhiên từng quan sát cho nhóm A hoặc B, tính toán sự khác biệt của các tiện ích phương tiện và lặp lại quá trình này cho đến khi chúng tôi xây dựng sự phân phối của chúng tôi. . Bằng cách này, chúng tôi đang xây dựng sự phân bố của sự khác biệt về phương tiện theo giả thuyết không cho rằng hai mẫu đến từ một tập hợp

Từ phân phối này, chúng tôi có thể tìm thấy các giá trị quan trọng mà chúng tôi có thể so sánh các giá trị khác biệt về giá trị trung bình. Chúng tôi cũng có thể sử dụng phân phối này để tính toán giá trị p của hệ thống thống kê quan sát

Các bước thiết yếu trong Ngẫu nhiên hóa là

  • xáo trộn các quan sát giữa các nhóm
  • tính toán nhiều lần các quan tâm thống kê
  • sử dụng phân phối đó của thống kê để tìm các giá trị quan trọng hoặc giá trị p

Đây là một ví dụ về việc thực hiện một phép ngẫu nhiên để đánh giá sự khác biệt về phương tiện của hai mẫu

# The data
x <- c(0.36, 1.07, 1.81, 1.67, 1.16, 0.18, 1.26, 0.61, 0.08, 1.29)
y <- c(1.34, 0.32, 0.34, 0.29, 0.64, 0.20, 0.50, 0.85, 0.38, 0.31, 2.50, 0.69, 0.41, 1.73, 0.62)

# Function for calculating one randomized difference in means
randomizedDifferenceInMeans <- function(x, y) {
  nx <- length(x)
  ny <- length(y)

  # combine the data
  combined <- c(x, y)
  ncom <- length(combined)
  indices <- 1:ncom

  # initially assign all observations to y group
  group <- rep('y', ncom)

  # assign a subsample to to x group
  xsub <- sample(indices, nx)
  group[xsub] <- 'x'

  # calculate the means
  meanX <- mean(combined[group=='x'])
  meanY <- mean(combined[group=='y'])
  differenceInMeans <- meanX - meanY
  differenceInMeans
}

# Repeat that function many times to build the distribution
diffMeans <- replicate(10000, randomizedDifferenceInMeans(x, y))

Tại thời điểm này, chúng tôi có thể làm một số điều. Bởi vì chúng tôi có một nhà phân phối cho thuyết giả rỗng, chúng tôi có thể so sánh sự khác biệt quan sát về giá trị trung bình với các giá trị tới hai phía. Từ đó, chúng ta có thể chấp nhận hoặc bác bỏ giả thuyết không có sự khác biệt về phương tiện. Hàm quantile () giúp việc tìm kiếm các giá trị về giới hạn trở nên dễ dàng

observedDifference <- mean(x) - mean(y)
alpha <- 0.05
quantile(diffMeans, alpha/2)
quantile(diffMeans, 1-alpha/2)

Đôi khi, sẽ hữu ích nếu hiển thị phân phối với các giá trị giới hạn và giá trị quan sát. Điều này cho phép người dùng hiểu được hình dạng của phân phối và cấu hình giá trị quan sát được giảm xuống so với các giá trị tới hạn ở đâu.

hist(diffMeans, breaks=50, col='gray', xlab='Difference of Means', main='')

observedDifference <- mean(x) - mean(y)
abline(v=observedDifference, lwd=4, col='black')

alpha <- 0.05
abline(v=quantile(diffMeans, alpha/2), col='red', lwd=2)
abline(v=quantile(diffMeans, 1-alpha/2), col='red', lwd=2)

Thay vì các giá trị tới giới hạn, chúng ta có thể tính toán giá trị p hai bên cho sự khác biệt quan sát được về phương tiện, bằng cách sử dụng hàm giá trị p mà chúng ta đã tạo ở trên

observedDifference <- mean(x) - mean(y)
pvalue(diffMeans, observedDifference, tails=2)

Bootstrap

Bootstrap là một kỹ thuật mạnh mẽ, linh hoạt và trực quan để xây dựng khoảng tin cậy. Cái tên bootstrap xuất phát từ ý tưởng “nâng cao bản thân bằng chính bootstraps của bạn”. nó xây dựng các giới hạn tin cậy từ việc phân phối dữ liệu. Giả định chính là dữ liệu là một mô tả tốt về sự phân bố tần suất của dân số và sẽ đúng nếu bạn thu thập một mẫu ngẫu nhiên bằng cách quét theo thiết kế lấy mẫu tốt

Nguyên tắc phía sau bootstrap là Rút ra một tập hợp các quan sát từ dữ liệu để tạo ra một mẫu mô phỏng có cùng kích thước với mẫu ban đầu. Việc lấy mẫu này được thực hiện tương tự với công việc thay thế, có nghĩa là một công cụ quan sát có thể lấy mẫu ngẫu nhiên nhiều lần trong một thử nghiệm cụ thể, trong khi các công cụ quan sát khác có thể hoàn toàn không lấy được . Thống kê được tính toán trên khởi động này và quá trình này đã được lặp lại nhiều lần (hàng đếm lần trở lại) để xây dựng phân phối cho hệ thống thống kê. Giá trị trung bình của các giá trị khởi động này là ước tính của tham số

Việc phân phối các giá trị khởi động được sử dụng để xây dựng khoảng tin cậy trên ước tính tham số. Để làm điều này, các giá trị khởi động được sắp xếp từ thấp nhất đến cao nhất. Phần tử 1-α / 2% (ví dụ. 0,025%) và phần tử α / 2% (ví dụ. 0,975%) tương ứng với giới hạn tin cậy dưới và trên. Ví dụ. if we tôi tính toán thống kê của mình 10. 000 lần và muốn có giới hạn tin cậy 95%, chúng tôi sẽ tìm thấy các phần tử ở hàng 250 và 9750 của sắp xếp sắp xếp của hệ thống kê khai. Hàm quantile () thực hiện tất cả những điều này một cách tự động, giúp chúng ta không gặp rắc rối về xác định và tìm điểm cắt

Độ tin cậy của bootstrap đã được cải thiện với số lượng bản sao bootstrap. Việc tăng số lượng bản sao sẽ làm tăng thời gian tính toán, nhưng đây mới là vấn đề như trước đây

Bootstrap một biến

Ví dụ này minh họa một sơ đồ khởi động của mô hình chu trình. Điều này có thể được sửa đổi và thay đổi dễ dàng đối với bất kỳ bảng thống kê nào được tính toán trên một biến duy nhất. Bước đầu tiên là xây dựng một hàm tính toán một hệ thống khởi động từ dữ liệu. Tiếp theo, hàm replica() được sử dụng để gọi hàm này nhiều lần trên dữ liệu của chúng tôi để xây dựng hệ thống phân phối khởi động

________số 8

Giá trị trung bình của phân phối các mẫu khởi động này là ước tính của chúng tôi về tham số. Use quantile() và độ tin cậy của bạn (alpha) để tính khoảng tin cậy trên ước tính tham số đó. Độ chính xác của các ước tính này có thể được tăng lên bằng cách thực hiện một số lượng lớn hơn các bản sao, nhưng với chi phí tăng thời gian tính toán

parameterEstimate <- mean(sd)
alpha <- 0.05
lowerCL <- quantile(sd, alpha/2)
upperCL <- quantile(sd, 1-alpha/2)

Bootstrap hai biến

Bootstrap cũng có thể được sử dụng trên một hệ thống thống kê dựa trên hai biến, chẳng hạn như hệ số tương quan hoặc độ dốc. Điều này chỉ phức tạp hơn một chút so với ví dụ trước, bởi vì chúng ta cần lấy mẫu các hàng dữ liệu, nghĩa là vẽ ngẫu nhiên cả hai biến tương ứng với một điểm dữ liệu hoặc quan sát duy nhất. Chọn độc lập một phần tử cho mỗi biến là một sai phổ biến khi xây dựng khoảng tin cậy, vì nó phá hủy cấu trúc tương quan trong tệp dữ liệu. Người ta có thể làm điều này theo cách có chủ ý, điều này sẽ xây dựng một phân phối cho giả thuyết rỗng (nghĩa là các giá trị không tương quan) và điều này có thể được sử dụng để tính toán các giá trị quan . Cách tiếp cận phổ biến hơn nhiều là phương pháp hiển thị bên dưới, vì nó được sử dụng để ước tính tham số và khoảng tin cậy trên chúng

Fobserved <- 3.5
pValue <- length(F[F >= Fobserved]) / length(F)
pValue
0

Một bootstrap hai biến được minh họa ở đây cho một số tương quan. Như trước đây, bước đầu tiên là viết một hàm tính toán giá trị khởi động duy nhất của hệ số tương quan. Trong hàm này, sample () được sử dụng để vẽ một mẫu có cùng kích thước với mẫu ban đầu, nhưng với một tập hợp các quan sát được chọn ngẫu nhiên từ dữ liệu. Bảo đảm đặt Replace = TRUE nếu không điều này sẽ luôn tạo ra chính xác ban đầu tập dữ liệu ban đầu, làm cho tất cả các giá trị khởi động giống nhau. Sau hàm, sử dụng bản sao () để khởi động khởi động hệ thống phân phối

Fobserved <- 3.5
pValue <- length(F[F >= Fobserved]) / length(F)
pValue
1

Tham số tính toán và khoảng cách tin cậy của nó được tìm thấy theo cùng một cách với bootstrap một biến

Bootstrap đa biến

Cách tiếp cận hai biến có thể được tổng hợp hóa cho dữ liệu đa biến. Để tạo khoảng tin cậy, hãy chọn ngẫu nhiên một hàng của khung dữ liệu như được thực hiện trong trường hợp hai biến và sử dụng tất cả các quan sát cho trường hợp đó khi khởi động mẫu được tạo. Nếu muốn các giá trị p và giá trị tới hạn, hãy chọn ngẫu nhiên các quan sát của từng biến, nghĩa là các biến không thiết yếu nhất phải từ cùng một hàng của khung dữ liệu

Một số phương pháp (bất hạn như tỷ lệ chia tỷ lệ tối đa không theo hệ thống mét) không cho phép các trường hợp giống nhau và điều này sẽ gây ra sự cố cho một bootstrap đa biến. Một giải pháp phổ biến là thêm một số ngẫu nhiên rất nhỏ vào mỗi giá trị khi trường hợp đó được chọn và điều này sẽ ngăn chặn vấn đề về các trường hợp giống nhau. Ví dụ. if the data value is in the distance from 1–10, thì Random number may be at thang điểm 0,001;

Tóm tắt

Tóm tắt, một bootstrap có ba bước

  • mô phỏng các quan sát dựa trên việc lấy mẫu với sự thay thế từ dữ liệu
  • tính toán nhiều lần các quan tâm thống kê
  • sử dụng phân phối đó để ước tính tham số và khoảng tin cậy

Nên sử dụng bootstrap một cách thận trọng khi kích thước mẫu nhỏ, vì dữ liệu không thể đại diện đầy đủ cho phân phối của tập hợp, vi phạm định dạng duy nhất của bootstrap

Bootstrap là một kỹ thuật cực kỳ linh hoạt. Tất cả các nhà khoa học nên biết làm thế nào để thực hiện một

dao xếp

Jackknife là một kỹ thuật khác để ước tính một tham số và đặt giới hạn tin cậy cho nó. Tên đề cập đến việc cắt dữ liệu, bởi vì tôi hoạt động bằng cách loại bỏ một quan sát duy nhất, tính toán thống kê không có giá trị đó, sau đó lặp lại quá trình đó cho mỗi quan sát (chỉ loại . Điều này tạo ra sự phân phối các giá trị jackknifed của hệ thống thống kê của chúng tôi, từ đó ước tính tham số và khoảng tin cậy được tính toán

Cụ thể, giả sử chúng ta quan tâm đến tham số K, nhưng chúng ta chỉ có một ước lượng về nó (thống kê k) dựa trên mẫu n quan sát của chúng ta

To make the first jackknifed sample bao gồm n-1 quan sát, hãy loại bỏ quan sát đầu tiên trong dữ liệu. Tính toán thống kê (được gọi là k-i) trên mẫu đó, trong đó chỉ số con -i có nghĩa là tất cả các quan sát ngoại trừ thứ i. Từ bảng kê này, hãy tính một đại lượng được gọi là giá trị giả κi

Khởi động trong khoa học dữ liệu

lặp lại quá trình này bằng cách thay thế lần quan sát đầu tiên và loại bỏ lần quan sát thứ hai, để tạo một mẫu mới có kích thước n-1. Tính toán thống kê và giá trị giả như trước đây. lặp lại điều này cho mọi quan sát có thể cho đến khi có n giá trị giả, mỗi giá trị có mẫu n-1. Từ giả định này, chúng ta có thể ước tính tham số, sai số chuẩn của nó và khoảng tin cậy

Kích hoạt tính toán của tham số K bằng giá trị trung bình của các giá trị giả

Khởi động trong khoa học dữ liệu

Sai số chuẩn của K bằng độ lệch chuẩn của các giá trị psuedoval chia cho bậc hai của mẫu (n)

Khởi động trong khoa học dữ liệu

Giới hạn tin cậy jackknifed dựa trên tính toán của K, sai số chuẩn và điểm t tới giới hạn hai phía với n-1 bậc tự do

Khởi động trong khoa học dữ liệu

Có hai lưu ý cho con dao. Đầu tiên, khoảng tin giả định rằng thống kê jackknifed được phân phối chuẩn, được chứng minh bằng định lý giới hạn trung tâm cho các mẫu lớn. Nếu kích thước mẫu của chúng ta nhỏ, định nghĩa giới hạn trung tâm có thể không đảm bảo tính chuẩn. Thứ hai, các giám đốc giả không độc lập, chúng nhất thiết phải tương quan

Đây là một minh chứng về một con dao nhỏ, trong đó hệ thống số liệu thống kê mà chúng tôi muốn nhấn con dao là mức độ bình thường. Mặc dù không cần thiết phải phản đối một vấn đề đơn giản như thế này, nhưng tôi đặt nó bên trong hàm allowStatistic () để nhấn mạnh rằng nếu chúng tôi muốn tạo ra một bảng thống kê khác, tất cả những gì chúng tôi phải làm là

Fobserved <- 3.5
pValue <- length(F[F >= Fobserved]) / length(F)
pValue
2

Fobserved <- 3.5
pValue <- length(F[F >= Fobserved]) / length(F)
pValue
3

Tiếp theo, tính toán các giá trị giả. Đầu tiên, tạo một góc để chứa các giá trị giả, tính toán thống kê (thống kê) trên tất cả dữ liệu. Tiếp theo, lặp lại dữ liệu, loại bỏ từng quan sát. Vòng lặp này sẽ thực hiện việc lặp lại tất cả các thao tác bên trong dấu ngoặc nhọn. Đầu tiên, tập tin jackknifed được trích xuất (jack), sau đó hệ thống thống kê được tính toán trên nó (jackStat), sau đó giá trị giả được lưu vào vector mà chúng tôi đã tạo ra. Trong lần đầu tiên vượt qua vòng lặp, tôi sẽ bằng 1 và nó sẽ được tăng thêm 1 trên mỗi lần vượt qua. Trên đường báo cuối cùng, nó sẽ có độ dài bằng (x), tức là kích thước mẫu của chúng tôi. Mỗi giá trị giả của chúng ta được lưu vào màn mà chúng ta đã tạo ở bước cuối cùng trong vòng lặp

Fobserved <- 3.5
pValue <- length(F[F >= Fobserved]) / length(F)
pValue
4

Lưu ý. nhiều người cho rằng nên tránh các vòng lặp trong R bằng mọi giá. Những gì tiếp theo trong khối tiếp theo là một cách để tính toán các giá trị giả mà không có vòng lặp. Như thường lệ, giải pháp là sử dụng apply () hoặc một trong những hàng hóa của nó. Ở đây, chúng tôi sử dụng sapply (), vì nó có thể được áp dụng cho một cái nhìn, trái ngược với áp dụng (), hoạt động trên một màn hình. Chúng tôi cung cấp hàm sapply () với một hàm ẩn danh (không được đặt tên) như một hàm đóng (trong dấu ngoặc kép), áp dụng các thao tác đó từng hàng một trong x. Việc đóng cửa sổ nhận y và tính toán từ môi trường của nó. Điều này khá cao, vì vậy nếu vòng lặp có ý nghĩa hơn đối với bạn, thì hãy sử dụng nó

Fobserved <- 3.5
pValue <- length(F[F >= Fobserved]) / length(F)
pValue
5

Bất kể chúng tôi sử dụng cách tiếp cận nào để tính toán các giá trị giả, chúng tôi có thể tính toán ước tính, sai số chuẩn và giới hạn tin cậy của mình theo cùng một cách.