2013-03-19 39 views
5

Tôi có câu hỏi liên quan đến phân phối bình thường (với mu = 0sigma = 1).thao tác dữ liệu để phù hợp hơn với Gaussian Distribution

Hãy nói rằng tôi trước hết là gọi randn hoặc normrnd cách này

x = normrnd(0,1,[4096,1]); % x = randn(4096,1) 

Bây giờ, để đánh giá như thế nào tốt các giá trị x phù hợp với sự phân bố bình thường, tôi gọi

[a,b] = normfit(x); 

và có một sự hỗ trợ đồ họa

histfit(x) 

Bây giờ, hãy đến phần cốt lõi của câu hỏi: nếu tôi không hài lòng về cách x phù hợp với phân phối chuẩn nhất định, làm thế nào tôi có thể tối ưu hóa x để tốt hơn phù hợp với phân phối chuẩn dự kiến ​​ với 0 có nghĩa là1 độ lệch chuẩn ?? Đôi khi vì trong số ít các giá trị đại diện (ví dụ trong trường hợp này), x phù hợp thực sự kém dự kiến ​​Gaussian, vì vậy mà tôi muốn thao tác x (tuyến tính hay không, nó không thực sự quan trọng trong giai đoạn này) để tập thể dục tốt hơn.

Tôi muốn nhận xét rằng tôi có quyền truy cập vào hộp công cụ thống kê.

EDIT

  1. tôi làm ví dụ với normrndrandn gây dữ liệu của tôi có nghĩa vụ và dự kiến ​​sẽ có phân phối chuẩn. Nhưng, trong câu hỏi, những chức năng này chỉ hữu ích để hiểu rõ hơn về mối quan tâm của tôi.

  2. Bạn có thể sử dụng một phụ kiện nhỏ nhất không?

  3. Nói chung sự phân bố tôi nhận được là tương tự như sau: enter image description here

My

+1

Có thể bạn sẽ may mắn hơn với số bán ngẫu nhiên so với số giả ngẫu nhiên nếu tập dữ liệu của bạn nhỏ. http://www.mathworks.com/help/stats/generating-quasi-random-numbers.html – Dan

+0

Nếu bạn cho chúng tôi biết giao diện của bạn trông như thế nào, điều đó sẽ hữu ích. – Memming

+0

nội dung bạn đã tải lên có vẻ phù hợp với tôi. Bạn có thể chỉ cần nhiều mẫu hơn. – Memming

Trả lời

3

Có lẽ, bạn có thể thử để chuẩn hóa dữ liệu đầu vào của bạn có nghĩa là = 0 và sigma = 1 . Như thế này:

y=(x-mean(x))/std(x); 
+0

Tôi đang chơi xung quanh với các thủ thuật tầm thường này, không thực sự giải quyết được câu hỏi. btw, cảm ơn sự hỗ trợ – fpe

+2

Bạn nên chuẩn hóa bằng 'std' chứ không phải' var'. Cũng chỉ có thể sử dụng 'zscore'. – Memming

+1

Bạn hoàn toàn đúng. – tashuhka

1

Nếu bạn đang tìm kiếm một sự biến đổi phi tuyến mà có thể làm phân phối của bạn trông bình thường, trước tiên bạn có thể ước tính phân phối tích lũy, sau đó lấy hàm hợp với nghịch đảo của tiêu chuẩn bình thường CDF. Bằng cách này, bạn có thể chuyển đổi hầu như bất kỳ phân phối nào thành bình thường thông qua chuyển đổi không thể đảo ngược. Hãy xem mã ví dụ bên dưới.

x = randn(1000, 1) + 4 * (rand(1000, 1) < 0.5); % some funky bimodal distribution 
xr = linspace(-5, 9, 2000); 
cdf = cumsum(ksdensity(x, xr, 'width', 0.5)); cdf = cdf/cdf(end); % you many want to use a better smoother 
c = interp1(xr, cdf, x); % function composition step 1 
y = norminv(c); % function composition step 2 
% take a look at the result 
figure; 
subplot(2,1,1); hist(x, 100); 
subplot(2,1,2); hist(y, 100); 
+0

Nếu bạn không làm mịn CDF thực nghiệm, nó sẽ hoàn toàn bình thường, nhưng điều gì sẽ là điểm thực hiện thao tác như vậy? :) – Memming

Các vấn đề liên quan