PDA

View Full Version : Hỏi về toán statistic


Koala
08-10-2007, 02:26 PM
Hôm nọ em liếc thấy có topic hỏi về toán mà hôm nay tìm mãi không thấy, cho em mở tạm cái này nhé:
- Nếu em có một data set (em có thể tính được standard deviation), em làm triplicate, em có 3 tập data sets kết quả thí nghiệm. Em muốn tính final standard deviation thì em làm thế nào ạ: 1, Gộp cả 3 cái đấy vào tính 1 stdev hoặc: 2, tính mean value của từng set, rồi tính stdev của 3 cái mean values ấy?

Hic, ai biết chỉ em với, em cảm ơn ạ
Koala

Tuanbass
08-10-2007, 03:03 PM
Anh vẫn chưa hiểu mục đích của em tính Standard deviation để làm gì trong bài toán trên, vì phải biết ý nghĩa của nó biết nên cần tính cái gì? SD là để đo độ tán xạ của mẫu, theo anh hiểu thì cần tính SD cho từng mẫu, mục đích là cho từng mẫu, còn việc tính một cái SD chung hoặc trung bình chung cho 3 cái tập data sets đấy chả có ý nghĩa gì cả...

gasenngo
08-10-2007, 03:33 PM
Đồng ý với Bát. Cái cần làm là so sánh kết quả của 3 cái set đấy với nhau, hình như dùng Vôva hay Alôva gì đấy. Cái này hồi chưa vợ anh thạo lắm, bây giờ quên hết rồi

[QUOTE=Tuanbass]còn việc tính một cái SD chung hoặc trung bình trung cho 3 cái tập data sets đấy chả có ý nghĩa gì cả...[/QUOTE]

Koala
08-10-2007, 03:36 PM
Hi`, thanks bác Bát, cụ thể thế này ạ: Em làm thí nghiệm, sau đó chọn random ra 10 mẫu vật, tính toán lăng nhăng, được một cái average với 1 cái stdev.

Củ chuối là cái bọn review nó bảo em phải làm triplicate, thế là em làm thí nghiệm thêm 2 lần nữa, cuối cùng em có 3 cái average với 3 cái stdev.

Giờ phải làm 1 cái figure, average thì em cứ lấy average của 3 cái trên nhưng còn cái error bar em đang không biết làm thế nào. Giáo em bảo mày thử tìm hiểu xem, chứ tao cũng không biết.

A, thêm một câu hỏi của chã nữa ạ: Standard error of the mean là cái gì thế ạ? Nó khác gì stdev ạ? Em search google mà không hiểu.

Tặng bác cái ảnh:

http://img372.imageshack.us/img372/4/overlayjo7.jpg

Koala
08-10-2007, 03:38 PM
Úi, sorry bác, to quá, mà em lười resize quá :D Em nói cái ảnh, em cứ để đấy nhá

Tuanbass
08-10-2007, 03:46 PM
À anh hiểu cái ý nghĩa này rồi, chạy trên nhiều mẫu để lấy kết quả, rồi tìm trung bình để lấy kết quả tin cậy, như vậy ý nghĩa ở đây chỉ cần tìm giá trị trung bình, em cứ lấy error bar bằng cách lấy trung bình 3 cái Standard error.

Cái Standard error of the mean là đo độ tán xạ của từng giá trị trung bình của từng mẫu (qua các mẫu khác nhau), tất nhiên cái này phải ổn định hơn cái Standar deviation kia nhiều (cái này là tán xạ của các giá trị trên một mẫu so với mean của mẫu đó)

Koala
08-10-2007, 03:50 PM
Hi`, cảm ơn bác ạ (chụt chụt :D) hi`, em vẫn thắc mắc 1 tí nữa với ạ, thế cũng cái thí nghiệm trên nếu em muốn cái error bar là standard error of the mean thì em tính thế nào (hic, em lấy final mean/sqrt(3) hay là lấy mean của mỗi thí nghiệm riêng/sqrt(10) rồi tính average của 3 cái standar error đấy?)

Căn bản là đúng như bác nói đấy, hi vọng là cái standard error sẽ bé bé chứ nếu em lấy error bar là cái stdev thì error bar overlap toán loạn cả, nhìn figure mà buồn gì đó ghê gớm :D

Tuanbass
08-10-2007, 04:00 PM
tính sqrt(variance của mỗi thí nghiệm) rồi tính average của 3 cái standar error đấy, vì anh hiểu em cần tìm một giá trị trung bình mang tính đại diện, tức là làm nhiều lần để chọn ra số đại diện, như vậy đơn giản thì cộng vào chia 3.
Còn nếu tính SD của cả mẫu to gồm 3 mẫu gộp lại thì về mặt nào đó cũng được, nhưng nó không đại diện cho tính độc lập của mỗi set riêng biệt, tức là việc tìm SD cho mỗi mẫu không có nghĩa gì cả
SD of means thì đương nhiên là bé theo lý thuyết rồi..:D

Koala
08-10-2007, 05:11 PM
Vâng, done, em cảm ơn bác nhiều ạ, hi vọng mấy ông bà proof readers của em không giỏi toán, không vặn vẹo linh tinh em.

platypus
08-10-2007, 10:55 PM
Thằng Bát dạy các em cộng trừ nhân chia standard deviation thế này thì chếtttttttttt. Cái này thực ra rất đơn giản:

Gọi mean, std của 3 set lần lượt là (m1, std1), (m2, std2), (m3, std3). Overall mean của cả 3 set:
m = (m1 + m2 + m3)/3

Application of propagation law of variances, std của m sẽ là (assuming no correlation between m1, m2, m3):
std_m^2 = (std1^2 + std2^2 + std3^2 )/3

Hay std_m = sqrt((std1^2 + std2^2 + std3^2 )/3)

Standard error of mean là trường hợp đặc biệt, std1 = std2 = std3 = std:
std_m = std/sqrt(3)

thayboibeo
09-10-2007, 03:07 AM
Tiện topic Toán, em ké một câu hỏi về Toán luôn:
Làm thế nào để fit một đống data vào một cái hàm sin dạng f(x)=A.sin(Bx+C) ?
Về cơ bản là em có một đống data, graph ra thì nó giống một hàm sin, nhưng giờ không biết làm thế nào để dự đoán cái dạng của cái hàm đấy cả.
Cảm ơn mọi người :)

para
09-10-2007, 04:30 AM
[QUOTE=thayboibeo]Tiện topic Toán, em ké một câu hỏi về Toán luôn:
Làm thế nào để fit một đống data vào một cái hàm sin dạng f(x)=A.sin(Bx+C) ?
Về cơ bản là em có một đống data, graph ra thì nó giống một hàm sin, nhưng giờ không biết làm thế nào để dự đoán cái dạng của cái hàm đấy cả.
Cảm ơn mọi người :)[/QUOTE]

Đơn giản nhất là least-squares fit. Chịu khó google một chút đi.

Koala
09-10-2007, 06:45 AM
Ha, cảm ơn bác Platypus, em phải save vào làm cẩm nang cho toàn lab mới được :) G'd day bác.

Hai mươi ba
09-10-2007, 07:42 AM
[QUOTE=Koala]Hôm nọ em liếc thấy có topic hỏi về toán mà hôm nay tìm mãi không thấy, cho em mở tạm cái này nhé:
- Nếu em có một data set (em có thể tính được standard deviation), em làm triplicate, em có 3 tập data sets kết quả thí nghiệm. Em muốn tính final standard deviation thì em làm thế nào ạ: 1, Gộp cả 3 cái đấy vào tính 1 stdev hoặc: 2, tính mean value của từng set, rồi tính stdev của 3 cái mean values ấy?

Hic, ai biết chỉ em với, em cảm ơn ạ
Koala[/QUOTE]


Mình không biết sao chứ trong Chem thì mình thường làm thế này.

Giả sử làm cùng 1 method, làm 2 lần có 2 data sets.
Lần 1 làm n1 lần. Tương đương có n1 kết quả. Tính ra mean1, stdev1(s1)
Lần 2 làm n2 lần. Tương đương có n2 kết quả. Tình ra mean2, stdev2(s2)

Bây giờ muốn compare replicate measurments thì đầu tiên tính s_pooled ( pooled standard deviation), s_pooled = sqrt{[s1^2*(n1-1)+s2^2*(n2-1)]/(n1+n2-2)}

Có s_pooled rồi sẽ tính
t_calculate = (abs(mean1 - mean2)/s_spooled)*sqrt(n1n2/(n1+n2)
Có t_calculate rồi, n1-n2-2 là degree of freedom, chọn thêm confident interval nữa (95% chẳng hạn), rồi compare cái t_calculate đó với t_table. Nếu t_calculate > t_table thì 2 cái data sets được xem như là khác nhau (không khớp).

PS: t-table nằm trong cái bảng mà cột đọc là degree of freedom, cột ngang là confident interval. Trước khi tính cái này thì xài Q-test (Q = gap/range) để bỏ ra những data nào không hợp lý.
Range là total spread of data. Gap là difference giữa questionable data với data liền trước nó.

Có cái bảng compare Q calculate với Q (90% confidence)
(Q-number of observations): (0.76-4, 0.64-5, 0.56-6, 0.51-7, 0.47-8, 0.44-9, 0.41-10)

Koala
09-10-2007, 09:48 AM
Hic, cảm ơn Hai Mươi Ba, cơ mà em đọc không hiểu gì cả. Em làm 3 lần thí nghiệm, và mục tiêu của 3 cái triplicates đấy là pull out a final representative data để so sánh với 1 thằng khác cũng được làm 3 lần như thế, chứ không cần so sánh ba cái đấy với nhau ạ. Hic, bác bẩu em phải làm sao giờ ạ?

Hai mươi ba
09-10-2007, 10:16 AM
[QUOTE=Koala]Hic, cảm ơn Hai Mươi Ba, cơ mà em đọc không hiểu gì cả. Em làm 3 lần thí nghiệm, và mục tiêu của 3 cái triplicates đấy là pull out a final representative data để so sánh với 1 thằng khác cũng được làm 3 lần như thế, chứ không cần so sánh ba cái đấy với nhau ạ. Hic, bác bẩu em phải làm sao giờ ạ?[/QUOTE]

Như Tuanbass nói trên là stdev (stdev^2 = variance) là how close the data are clustered about the mean. Stdev cho each set of data thì có nghĩa, chứ stdev cho cả 3 sets thì meaningless, trừ khi muốn lấy cái stdev đó để so sánh với một cái data set thứ 4.

Nếu muốn tìm stdev cho cả 3 sets chung thì làm như platypus đã post.

Làm xong mà để đó thì vô nghĩa. Làm xong thì lấy cái stdev đó, rồi tính t-calcualte giống như mình nói để so sánh với cái data set khác (data set thứ 4). t là student's t, định nghĩa của nó là "a statistic tool used most frequently to express confident intervals and the compare results from different experiments".

PS: Data set 4 có thể là triplicate hoặc hơn, làm bởi 1 người khác, hoặc làm ở lab khác ...

thayboibeo
09-10-2007, 03:25 PM
[QUOTE=para]Đơn giản nhất là least-squares fit. Chịu khó google một chút đi.[/QUOTE]
Hehe, cảm ơn bác. Đã google sine curve fitting rồi, nhưng nó ra nhiều thứ quá mà background math của em yếu, đọc không hiểu. Bác vứt cho cái exact method thế này thì search focus được hơn.

Koala
09-10-2007, 03:35 PM
Cảm ơn bác Hai Mươi Ba, bác trả lời tận tình thế này tớ cảm động lắm. Hì, cái post đầu tiên của bác theo tớ hiểu thì để so sánh xem 2 tập data có tương thích không, tớ thường chỉ run a ttest bằng excel trên 2 tập giá trị, tails là 1, 1.

Hì, nếu mọi thứ đúng như tớ mong đợi thì nhất định tớ sẽ quay lại uni, enrol học vài units về statistic cho bõ ghét :D

Tuanbass
09-10-2007, 03:41 PM
[QUOTE=thayboibeo]Hehe, cảm ơn bác. Đã google sine curve fitting rồi, nhưng nó ra nhiều thứ quá mà background math của em yếu, đọc không hiểu. Bác vứt cho cái exact method thế này thì search focus được hơn.[/QUOTE]

Hehe việc xác định function form là phải căn cứ từ tính chất của data, data quan hệ với nhau như thế nào, lý thuyết gì, từ đó tập hợp lại để justify cho cái việc xây dựng cái function form đấy. Còn statistics chỉ là công cụ để tìm giá trị hệ số (cụ thể ở đây là A, B, C) sao cho nó fit, vàtest lại cái hệ số đấy..

Cụ thể trong ví dụ của bạn, bạn cho rằng nó quan hệ hàm Sin vì nó là data được lấy từ quan sát các dữ liệu ví dụ các loại dao động chẳng hạn, mà theo lý thuyết thì nó có dạng Sin, nên ta xây dựng function form như trên. Có thể ước lượng các hệ số A, B, C theo nhiều cách, thông thường dùng OLS. Mình chỉ quen làm với đa thức, chứ cũng không rõ với hàm sin trên thì sẽ ước lượng kiểu gì. Nhưng có một cách là bạn có thể khai triển cái Sin trên thành đa thức (dùng chuỗi Taylor chẳng hạn), sau đó dùng lệnh Regression (trong Stata, hoặc exel) để xác định các hệ số của đa thức này, thay ngược trở lại là ra A, B, C. Ngoài ra xem các test thống kê có ý nghĩa không để có thể tin cậy được giả thiết vè function form

DYM
09-10-2007, 04:12 PM
[QUOTE=thayboibeo]Tiện topic Toán, em ké một câu hỏi về Toán luôn:
Làm thế nào để fit một đống data vào một cái hàm sin dạng f(x)=A.sin(Bx+C) ?
Về cơ bản là em có một đống data, graph ra thì nó giống một hàm sin, nhưng giờ không biết làm thế nào để dự đoán cái dạng của cái hàm đấy cả.
Cảm ơn mọi người :)[/QUOTE]

Cái này dùng Matlab thì sẽ rất dễ.

%Làm 1 file matlab function func.m
function [f] = func(co)
global x y
trial = co(1) *sin(co(2)*x + co(3));
f = norm(trial - y);

%Làm 1 cái main script
global x y
% load data của bác vào x và y, nếu ở dưới dạng 2 cột rồi thì làm như sau
data = load('datafile.txt');
x = data(:,1);
y = data(:,2);
initial_guess = [.1 2 0.5]; % Initial guess value for A, B & C
[co] = fmins('func', initial_guess);

% Giá trị initial guess càng gần giá trị thật thì kết quả càng chính xác. Có thể suy ra từ cái graph mà bác đã vẽ được.

platypus
09-10-2007, 05:17 PM
thayboibeo vào Matlab gõ cftool (curve fitting toolbox). Cái hàm A*sin(Bx +C) có sẵn trong library rồi, mục Fitting/Type of fit/Sum of Sin Function.

Fumbler
09-10-2007, 06:55 PM
Thằng Platypus để cho các em nó suy nghĩ nhé. :-p

platypus
09-10-2007, 06:58 PM
Thôi em giả lại anh Făm giải quyết, em lượn.

Lich
09-10-2007, 07:22 PM
Bạn Kaola, tớ dốt toán, để diễn giải các phép toán cụ thể ra thí tớ chịu, tớ chỉ biết copy and paste

Tớ hay phải làm thống kê sinh học nên trong trường hợp của cậu theo tớ:

-chạy Hovtest=levene cho cả bộ mẫu (3 lần nhắc lại (repetitions) và mỗi lần lại gồm 10 mẫu nhắc lại (replications)) để tính xem độ đồng nhất của các biến (variance homogeneity). --> nếu đạt độ đồng nhất thì sau đó có thể gộp toàn bộ các kết quả của cả 3 lần nhắc lại và kiểm tra sự khác biệt của các công thức thí nghiệm. Nếu không đồng nhất thì phải xử lý mẫu riêng lẻ của mỗi lần nhắc lại.

Về dùng SD hay SE thì SD sẽ chỉ rõ độ lệch chuẩn của mẫu hơn và thường được khuyên dùng chứ không phải là SE. tham khảo thêm http://www.uq.edu.au/~hmrburge/stats/index.html

Koala
09-10-2007, 07:34 PM
[QUOTE=Lich]

-chạy Hovtest=levene cho cả bộ mẫu (3 lần nhắc lại (repetitions) và mỗi lần lại gồm 10 mẫu nhắc lại (replications)) để tính xem độ đồng nhất của các biến (variance homogeneity). --> nếu đạt độ đồng nhất thì sau đó có thể gộp toàn bộ các kết quả của cả 3 lần nhắc lại và kiểm tra sự khác biệt của các công thức thí nghiệm. Nếu không đồng nhất thì phải xử lý mẫu riêng lẻ của mỗi lần nhắc lại.

http://www.uq.edu.au/~hmrburge/stats/index.html[/QUOTE]

chay cai nay la chay tren chuong trinh gi ha bac? (Sorry em khong go duoc tieng Viet)

Lich
09-10-2007, 08:38 PM
Dùng chức năng tính Hovtest trong phép tính Anova hay GLM ấy. Tớ hay dùng chương trình SAS để chạy thống kê. Không biết Anova/GLM của các chương trình khác có cùng chức năng phụ này không. Nếu dùng chương trình khác cậu tìm hiểu về 'test of homogeneity'. (à, mà tớ nghĩ là cậu đang dùng 1 chương trình thống kê để phân tích mẫu chứ không phải là đang tính means+SD trong excel chứ??)

thayboibeo
10-10-2007, 03:44 AM
[QUOTE=platypus]thayboibeo vào Matlab gõ cftool (curve fitting toolbox). Cái hàm A*sin(Bx +C) có sẵn trong library rồi, mục Fitting/Type of fit/Sum of Sin Function.[/QUOTE]

Cám ơn các bác đã hướng dẫn. Em đang code cái sine curve đấy trong Java, nên không dùng được Matlab. Em đã giải quyết vấn đề bằng một cách mapping sine curve rất thô thiển: f(x) = Asin(Bx +C), rồi tính A dùng trung bình của tất cả optimum, tính B và C dùng khoảng cách của zero crossing.

Koala
10-10-2007, 07:10 AM
[QUOTE=Lich]Dùng chức năng tính Hovtest trong phép tính Anova hay GLM ấy. Tớ hay dùng chương trình SAS để chạy thống kê. Không biết Anova/GLM của các chương trình khác có cùng chức năng phụ này không. Nếu dùng chương trình khác cậu tìm hiểu về 'test of homogeneity'. (à, mà tớ nghĩ là cậu đang dùng 1 chương trình thống kê để phân tích mẫu chứ không phải là đang tính means+SD trong excel chứ??)[/QUOTE]
Hi`, đúng là em đang tính mean với SD excel :>> mọi người ở đây làm thoáng lắm, có em thích vặn vẹo "tại sao lại thế?" nên nó mới rắc rối thế. Thanks bác ạ.

gasenngo
10-10-2007, 07:24 PM
Nhân tiện cho mình hỏi cái Curve fitting tool box này có fitting được cho số liệu nhiều biến không.

Có mấy cái add-on trong Excel nhưng chỉ thấy đến 2 biến là kịch. Hình như Minitab cũng làm được mấy cái này, bác nào thạo vào confirm hộ phát. Cài Matlab thì hơi ngại

[QUOTE=platypus]thayboibeo vào Matlab gõ cftool (curve fitting toolbox). Cái hàm A*sin(Bx +C) có sẵn trong library rồi, mục Fitting/Type of fit/Sum of Sin Function.[/QUOTE]

para
11-10-2007, 02:23 AM
[QUOTE=thayboibeo]Cám ơn các bác đã hướng dẫn. Em đang code cái sine curve đấy trong Java, nên không dùng được Matlab. Em đã giải quyết vấn đề bằng một cách mapping sine curve rất thô thiển: f(x) = Asin(Bx +C), rồi tính A dùng trung bình của tất cả optimum, tính B và C dùng khoảng cách của zero crossing.[/QUOTE]

Hàm đơn giản thế này thì lập trình cũng nhanh. Nếu dùng least squares fit thì cứ theo cách cổ điển chân phương mà làm
min G= sum_i 1/2(y_i - f(x_i))^2
G sẽ thỏa mãn điều kiện
dG/dA = 0
dG/dB = 0
dG /dC = 0

Chịu khó ngồi lập hệ phương trình một chút, lấy derivatives của hàm sin có vẻ không khó lắm ;-).
Mà nên đổi sang C++ tính toán cho nhanh, có nhiều library hỗ trợ, ví dụ thằng này support least squares fitting
http://www.gnu.org/software/gsl/.

Nhưng nhanh nhất vẫn là dùng Matlab, dùng 1 cái script ngắn tý của bác DYM đại tướng kia là ổn. Luời nữa thì curve fitting toolbox

thayboibeo
17-10-2007, 11:29 PM
Thanks bác para. Nhưng em phải dùng Java, tại vì cái này là part của một cái chương trình lớn rồi.
Em đã match được cái data với sine, chính xác hơn là set of sine functions.
Em lại hỏi câu nữa, với sine functions thì ở mặt phẳng là y = Asin(Bx+C). Thế trong không gian thì functions cơ bản của một cái sine plane sẽ có dạng thế nào ạ?

Koala
30-10-2007, 12:44 PM
Hì, em muốn hỏi hơi dài dòng tí, đầu tiên em có data, tại mỗi time point x, em có khoảng 9,10 giá trị y khác nhau, sau khi plot trên 1 cái graph, em phải vẽ được một cái đường so-called "smoothing spline fits"
Mẫu đây ạ: http://img524.imageshack.us/img524/2131/curvesbp2.jpg

Cái đường "smoothing spline fits" được vẽ bằng "Priism software for Linux" em có down load cái Priism - vâng 2 chữ i ạ, nhưng không máy nào ở đây chạy được, em muốn hỏi:

1. Có chương trình nào có thể vẽ được cái đường đó chạy trên window bình thường không ạ? (quả thật em có nghe tên Linux chứ cũng không biết nó là cái gì).

2. Giả sử em vẽ được cái đường đó, rồi có cái phương trình của đường đó dạng y=1/exp(t*x). Trong một published paper, họ miêu tả: correlation decay time value corresponds to the time it takes the correlation to reach a value of 0.37 (1/e). Theo em hiểu tức là họ tìm x tại đó y=1/e. Em nghĩ chắc nó có liên quan gì đến tích phân (derivative???) bậc 1 của cái hàm trên (liên quan đến slope luôn), em chỉ muốn hỏi có ai hiểu em vừa viết cái gì không ạ? Có thể giải thích cho em được không :D ?

Híc, em chỉ có một ước muốn, ước muốn tột bậc lúc này của em là quay lại uni học toán, chẹp. Em cảm ơn ai trả lời em ạ :B<<

Koala
31-10-2007, 12:48 PM
Em kéo cái này lên, có ai biết trả lời em với, tình hình vẫn rất chi là tình hình :(