Main Content

datasample

데이터에서 무작위 복원추출 또는 비복원추출

설명

예제

y = datasample(data,k)는 data의 데이터에서 균일하게 무작위 복원추출된 k개 관측값을 반환합니다.

예제

y = datasample(data,k,dim)data의 차원 dim에서 추출된 표본을 반환합니다.

예제

y = datasample(___,Name,Value)는 하나 이상의 이름-값 쌍의 인수로 지정된 추가 옵션을 사용하여 위에 열거된 구문의 모든 입력 인수에 대한 표본을 반환합니다. 예를 들어, 'Replace',false는 비복원추출을 지정합니다.

예제

y = datasample(s,___)는 난수 스트림 s를 사용하여 난수를 생성합니다. 옵션 s는 위에 열거된 구문의 입력 인수 앞에 들어갈 수 있습니다.

예제

[y,idx] = datasample(___)은 위에 열거된 구문의 입력 인수를 사용하여 data에서 추출된 값 datasample을 나타내는 인덱스 벡터도 반환합니다.

예제

모두 축소

재현이 가능하도록 난수 스트림을 생성합니다.

s = RandStream('mlfg6331_64'); 

정수 110 사이에 있는 고유한 값을 5개 추출합니다.

y = datasample(s,1:10,5,'Replace',false)
y = 1×5

     9     8     3     6     2

재현이 가능하도록 난수 스트림을 생성합니다.

s = RandStream('mlfg6331_64');

지정된 확률에 따라 수열 ACGT에서 48개의 임의 문자를 생성합니다.

seq = datasample(s,'ACGT',48,'Weights',[0.15 0.35 0.35 0.15])
seq = 
'GGCGGCGCAAGGCGCCGGACCTGGCTGCACGCCGTTCCCTGCTACTCG'

결과 재현이 가능하도록 난수 시드값을 설정합니다.

rng(10,'twister') 

10개의 행과 1000개의 열로 구성된 행렬을 생성합니다.

X = randn(10,1000);

datasample 내에서 재현이 가능하도록 난수 스트림을 생성합니다.

s = RandStream('mlfg6331_64');

X에서 고유한 열 5개를 임의로 선택합니다.

Y = datasample(s,X,5,2,'Replace',false)
Y = 10×5

    0.4317   -0.3327    0.9112   -2.3244    0.9559
    0.6977   -0.7422    0.4578   -1.3745   -0.8634
   -0.8543   -0.3105    0.9836   -0.6434   -0.4457
    0.1686    0.6609   -0.0553   -0.1202   -1.3699
   -1.7649   -1.1607   -0.3513   -1.5533    0.0597
   -0.3821    0.5696   -1.6264   -0.2104   -1.5486
   -1.6844    0.7148   -0.6876   -0.4447   -1.4615
   -0.4170    1.3696    1.1874   -0.9901    0.5875
   -0.2410    1.4703   -2.5003   -1.1321   -1.8451
    0.6212    1.4118   -0.4518    0.8697    0.8093

dataset형 배열에서 관측값을 재추출하여 부트스트랩 반복 실험 데이터 세트를 생성합니다. 부트스트랩에 대한 자세한 내용은 Bootstrap Resampling 항목을 참조하십시오.

표본 데이터 세트를 불러옵니다.

load hospital

hospital 데이터 세트와 크기가 동일하며 hospital 데이터 세트에서 복원추출을 통해 선택된 임의 표본을 포함하는 데이터 세트를 생성합니다.

y = datasample(hospital,size(hospital,1));

다른 벡터에서 선택된 표본의 인덱스를 기준으로 데이터에서 표본을 선택합니다.

두 개의 확률 벡터를 생성합니다.

x1 = randn(100,1);
x2 = randn(100,1);

벡터 x1에서 10개의 요소로 구성된 표본을 선택하고 벡터 idx로 표본의 인덱스를 반환합니다.

[y1,idx] = datasample(x1,10);

벡터 idx의 인덱스를 사용하여 벡터 x2에서 10개의 요소로 구성된 표본을 선택합니다.

y2 = x2(idx);

입력 인수

모두 축소

표본을 추출할 입력 데이터로, 벡터, 행렬, 다차원 배열, 테이블 또는 dataset형 배열로 지정됩니다. 기본적으로 datasampledata의 첫 번째 비한원소 차원에서 표본을 추출합니다. 예를 들어, data가 행렬인 경우 datasample은 행에서 표본을 추출합니다. 이 동작은 dim 입력 인수를 사용하여 변경할 수 있습니다.

데이터형: single | double | logical | char | string | table

표본 개수로, 양의 정수로 지정됩니다.

예: datasample(data,100)data에 포함된 데이터에서 균일하게 무작위 추출된 100개의 관측값을 반환합니다.

데이터형: single | double

표본을 추출할 차원으로, 양의 정수로 지정됩니다. 예를 들어, data가 행렬이고 dim2인 경우, ydata의 특정 열을 포함합니다. data가 테이블 또는 dataset형 배열이고 dim2인 경우, ydata의 특정 변수를 포함합니다. data가 벡터, 행렬 또는 N차원 배열 여부에 무관하게 특정 차원에서 표본을 추출하려면 dim을 사용하십시오.

데이터형: single | double

난수 스트림으로, 전역 스트림 또는 RandStream으로 지정됩니다. 예를 들어, s = RandStream('mlfg6331_64')는 승산식 시차 피보나치 수열(Multiplicative Lagged Fibonacci) 생성기 알고리즘을 사용하는 난수 스트림을 생성합니다. 자세한 내용은 난수 스트림을 만들고 제어하기 항목을 참조하십시오.

rng 함수는 전역 스트림을 제어할 수 있는 간단한 방법을 제공합니다. 예를 들어, rng(seed)는 음이 아닌 정수 시드값을 사용하여 난수 생성기에 시드값을 지정합니다. 자세한 내용은 RandStream을 사용하여 전역 스트림 관리하기 항목을 참조하십시오.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'Replace',false,'Weights',ones(datasize,1)Weights의 요소에 비례하는 확률로 비복원추출합니다. 여기서 datasize는 표본을 추출하는 차원의 크기입니다.

복원추출을 나타내는 표시자로, 'Replace'와 함께 true 또는 false가 쉼표로 구분되어 지정됩니다.

'Replace'true인 경우 복원추출을 선택하고, 'Replace'false인 경우 비복원추출을 선택합니다. 'Replace'false인 경우 k는 표본이 추출되는 차원의 크기보다 크지 않아야 합니다. 예를 들어, data = [1 3 Inf; 2 4 5]이고 y = datasample(data,k,'Replace',false)인 경우 k2보다 클 수 없습니다.

데이터형: logical

표본 추출 가중치로, 'Weights'와 함께 음이 아닌 숫자형 값으로 구성된 벡터가 쉼표로 구분되어 지정됩니다. 벡터의 크기는 datasize이며, 여기서 datasize는 표본이 추출되는 차원의 크기입니다. 벡터는 하나 이상의 양수 값을 가져야 하며 NaN 값을 포함할 수 없습니다. datasample 함수는 'Weights'의 요소에 비례하는 확률로 표본을 추출합니다.

예: 'Weights',[0.1 0.5 0.35 0.46]

데이터형: single | double

출력 인수

모두 축소

표본으로, 벡터, 행렬, 다차원 배열, 테이블 또는 dataset형 배열로 반환됩니다.

  • data가 벡터인 경우, ydata에서 선택된 k개 요소를 포함하는 벡터입니다.

  • data가 행렬이고 dim = 1인 경우, ydata에서 선택된 k개 행을 포함하는 행렬입니다. 또는, dim = 2인 경우, ydata에서 선택된 k개 열을 포함하는 행렬입니다.

  • data가 N차원 배열이고 dim = 1인 경우, ydata의 첫 번째 비한원소 차원을 따라 추출된 표본으로 구성된 N차원 배열입니다. 또는, dim 이름-값 쌍의 인수의 값을 지정할 경우, datasample은 차원 dim에서 표본을 추출합니다.

  • data가 테이블이고 dim = 1인 경우, ydata에서 선택된 k개 행을 포함하는 테이블입니다. 또는, dim = 2인 경우, ydata에서 선택된 k개 변수를 포함하는 테이블입니다.

  • data가 dataset형 배열이고 dim = 1인 경우, ydata에서 선택된 k개 행을 포함하는 dataset형 배열입니다. 또는, dim = 2인 경우, ydata에서 선택된 k개 변수를 포함하는 dataset형 배열입니다.

입력값 dataNaN 값으로 표현된 누락된 관측값을 포함하는 경우, datasampleNaN 값을 포함한 전체 입력값에서 표본을 추출합니다. 예를 들어, y = datasample([NaN 6 14],2)y = NaN 14를 반환할 수 있습니다.

복원추출을 수행하는 경우(디폴트 값), ydata의 반복된 관측값을 포함할 수 있습니다. 비복원추출을 수행하려면 Replace 이름-값 쌍의 인수를 false로 설정하십시오.

인덱스로, y를 생성하기 위해 datasampledata에서 어떤 요소를 선택하는지를 나타내는 벡터로 반환됩니다. 예를 들면 다음과 같습니다.

  • data가 벡터이면 y = data(idx)입니다.

  • data가 행렬이고 dim = 1이면 y = data(idx,:)입니다.

  • data가 행렬이고 dim = 2이면 y = data(:,idx)입니다.

  • 어떠한 범위에서 정수형 난수를 복원추출하려면 randi를 사용하십시오.

  • 정수형 난수를 비복원추출하려면 randperm 또는 datasample을 사용하십시오.

  • 데이터에서 무작위로 복원추출 또는 비복원추출을 수행하려면 datasample을 사용하십시오.

알고리즘

datasamplerandperm, rand 또는 randi를 사용하여 난수 값을 생성합니다. 따라서, datasample은 MATLAB® 전역 난수 생성기의 상태를 변경합니다. rng를 사용하여 난수 생성기를 제어하십시오.

가중 비복원추출을 선택하는 경우 datasample은 웡(Wong)과 이스턴(Easton)의 알고리즘 [1]을 사용합니다.

대체 기능

randi 또는 randperm을 사용하여 각각 무작위 복원추출 또는 무작위 비복원추출에 대한 인덱스를 생성할 수 있습니다. 그러나, datasample이 데이터에서 직접 표본을 추출하기 때문에 더 편리할 수 있습니다. datasample은 가중 추출도 허용합니다.

참고 문헌

[1] Wong, C. K. and M. C. Easton. "An Efficient Method for Weighted Sampling Without Replacement." SIAM Journal of Computing 9(1), pp. 111–113, 1980.

확장 기능

버전 내역

R2011b에 개발됨

참고 항목

| | | | |