2020-10-02, 16:46
  #1
Medlem
Hallå alla flashbackare och andra basementdwellers.

Jag har en liten fundering, försöker förstå mig på ttest2 i matlab men oavsett om jag läser docs på svenska eller engelska så sätter det sig inte riktigt, någon vänlig själ som kan förklara för mig vad:

Om vi använder ttest2, på två olika variabler, där vi har en persons kondition innan och efter,

Vad är P värdet? Dvs, jag har fått ut ett P värde på ett test jag gjort, där fick jag värdet 0.0133, samt H värde till 1, hur vet jag om det är en "improvement" eller inte så att säga?

Jag ska ge ett mer konkret exempel, vi har laddat in en persons data som har löpt/sprungit i ett helt år, först jämför vi dom första 182 dagarna, därefter resterande dagar på året. Jag får ut ett P värde och ett H värde, hur vet jag om personen har förbättrat sin vilopuls eller inte?

Vad är null hypothesis på ren svenska? 5 % av vad?

Hoppas någon kan ge mig en bra förklaring, kan visa kod och lite annat om så behövs för att förklara men vill helst bara förstå hur jag kan använda ttest2 till min fördel för att veta vad som är "bäst" med andra ord.


//xx1
Citera
2020-10-02, 17:49
  #2
Medlem
Först och främst tror jag du missförstått när du ska använda ett "ttest2".
Nu var det länge sedan jag använde matlab (men använder R nästan dagligen) "ttest2" är enligt manualen
ett "Two-Sample t-Test for Equal Means". Detta innebär att du kan använda det det då du har två oberoende stickprov.
I ditt fall är dina stickprov i högsta grad beroende då du har värden på samma person före och efter.
Det du vill använda är ttest vilket är ett "Paired-Sample t-Test".

Till din andra fråga. P-värdet står för sannolikheten att observera det vi observerat eller något ännu mer extremt givet att nollhypotesen är korrekt. Då nollhypotesen i ditt fall skulle formuleras som att det inte finns någon träningseffekt/ ingen skillnad mellan före och efter så kan man mycket löst förklara det som hur troligt det är att det inte finns någon tränings effekt.

De 5 % du frågar efter är signifikansnivån. Den gräns du jämför ditt p-värde emot. Är p-värdet mindre än 5% (0.05) så förkastar man nollhypotesen och säger att träningen förbättrar konditionen.

Signifikansnivån kallas också alpha och du kan välja den själv men du måste definiera den före du genomför ett test. Den reglerar hur vanligt det kommer vara med typ-l-fel (förkasta en sann nollhypotes). Viktigt att belysa är att 5% är standard (men det är en godtycklig gräns).

H är inte något man vanligtvis använder i den mening matlab använder det. Men i den utskrivet du får från matlab anger H om du kan förkasta nollhypotesen på en

"The returned value of h = 1 indicates that ttest rejects the null hypothesis at the 5% significance level, in favor of the alternate hypothesis"
Citera
2020-10-03, 11:52
  #3
Medlem
Citat:
Ursprungligen postat av sneez11
Först och främst tror jag du missförstått när du ska använda ett "ttest2".
Nu var det länge sedan jag använde matlab (men använder R nästan dagligen) "ttest2" är enligt manualen
ett "Two-Sample t-Test for Equal Means". Detta innebär att du kan använda det det då du har två oberoende stickprov.
I ditt fall är dina stickprov i högsta grad beroende då du har värden på samma person före och efter.
Det du vill använda är ttest vilket är ett "Paired-Sample t-Test".

Till din andra fråga. P-värdet står för sannolikheten att observera det vi observerat eller något ännu mer extremt givet att nollhypotesen är korrekt. Då nollhypotesen i ditt fall skulle formuleras som att det inte finns någon träningseffekt/ ingen skillnad mellan före och efter så kan man mycket löst förklara det som hur troligt det är att det inte finns någon tränings effekt.

De 5 % du frågar efter är signifikansnivån. Den gräns du jämför ditt p-värde emot. Är p-värdet mindre än 5% (0.05) så förkastar man nollhypotesen och säger att träningen förbättrar konditionen.

Signifikansnivån kallas också alpha och du kan välja den själv men du måste definiera den före du genomför ett test. Den reglerar hur vanligt det kommer vara med typ-l-fel (förkasta en sann nollhypotes). Viktigt att belysa är att 5% är standard (men det är en godtycklig gräns).

H är inte något man vanligtvis använder i den mening matlab använder det. Men i den utskrivet du får från matlab anger H om du kan förkasta nollhypotesen på en

"The returned value of h = 1 indicates that ttest rejects the null hypothesis at the 5% significance level, in favor of the alternate hypothesis"

Tack för ditt svar! Spännande att du kommer in med ditt 5e inlägg på 9 år för att hjälpa mig!

Om jag har tolkat dig rätt så betyder det att, tekniskt sett kan vi ignorera H värdet totalt och om p värdet är under 0.05 betyder det att det har skett en förändring?

Vi har ju två variabler i vårt ttest, x och y, betyder det att det är y värdet som är förbättringen då? Alltså att den andra variabeln kommer att vara relaterad till p värdet? För vi jämför ju två scenarion, så hur vet vi vilket som är det bättre scenariot? Sorry om jag förklarar lite luddigt, fortfarande svårt att greppa tycker jag, tack så mycket för ditt svar.
Citera
2020-10-08, 17:04
  #4
Medlem
Precis, det är bara p-värdets storlek som är intressant. Understiger det signifikansnivån kan du förkasta nollhypotesen och du har därmed visat på effekt.

Nja, om y är värdet efter träningsperioden är så är det differensen x-y som är träningseffekten.
Du får egentligen en "ny" variabel du kan kalla för d=x-y för differensen. Det är den matlab kommer använda för att beräkna p-värdet.

Den här sidan är ganska pedagogisk: https://www.statisticshowto.com/probability-and-statistics/t-test/

Sent svar men det kanske de kan ha överseende med med tanke på min flashbackhistorik...
Citera
2020-10-08, 18:58
  #5
Medlem
Protons avatar
Övriga språk --> Fysik, matematik och teknologi: allmänt
/Moderator
Citera
2020-10-11, 00:42
  #6
Medlem
Citat:
Ursprungligen postat av sneez11
Först och främst tror jag du missförstått när du ska använda ett "ttest2".
Nu var det länge sedan jag använde matlab (men använder R nästan dagligen) "ttest2" är enligt manualen
ett "Two-Sample t-Test for Equal Means". Detta innebär att du kan använda det det då du har två oberoende stickprov.
I ditt fall är dina stickprov i högsta grad beroende då du har värden på samma person före och efter.
Det du vill använda är ttest vilket är ett "Paired-Sample t-Test".
[/i]

Ja jag tänkte så med först, men så läste jag lite mer noga vad han skrev. Han menar nog att en person sprungit vissa sträckor till exempel januari till juni. Sen även juli-december (eller ja i alla fall i 365 dagar då). Sen vill han avgöra om han statistiskt kan säkerställa att personens vilopuls ändrat andra delen av året jämfört med första. I så fall är det ju ändå inte i par. Då ska ju ttest2 användas ändå i så fall. Det är ju inte så att 18 Februari och 18 Augusti har något unikt samband med varandra.


Citat:
Ursprungligen postat av XX1
Tack för ditt svar! Spännande att du kommer in med ditt 5e inlägg på 9 år för att hjälpa mig!

Om jag har tolkat dig rätt så betyder det att, tekniskt sett kan vi ignorera H värdet totalt och om p värdet är under 0.05 betyder det att det har skett en förändring?

Vi har ju två variabler i vårt ttest, x och y, betyder det att det är y värdet som är förbättringen då? Alltså att den andra variabeln kommer att vara relaterad till p värdet? För vi jämför ju två scenarion, så hur vet vi vilket som är det bättre scenariot? Sorry om jag förklarar lite luddigt, fortfarande svårt att greppa tycker jag, tack så mycket för ditt svar.

Ja men tänk på H-värdet mer som svaret på frågan: "Kan vi förkasta nollhypotesen och därmed acceptera din alternativhypotes" under de förutsättningar du angivit. Om h=1 svarar MATLAB "Ja det kan vi", om h=0 svarar MATLAB "Nej det kan vi inte".
Citera
2020-10-11, 01:11
  #7
Medlem
Skapa gärna följande skript i MATLAB för att exemplifiera hur du kan göra



for k=1:182
INNAN(k)=floor(randn(1,1)*3.3+64);
EFTER(k)=floor(randn(1,1)*2.9+62.4);
end
INNAN
EFTER
[h,p,konfidensintervall,stats] = ttest2(INNAN,EFTER,'Alpha',0.05,'Tail','right')

% Ändra 0.05 till något annat om du vill ha olika konfidensgrad.
% Konfidensgrad är 1-Alpha, så här 0.95 (95%-ig).
% Om du bara skrivit ttest2(INNAN,EFTER) antar MATLAB Alpha=0.05 samt
% 'Tail' = 'both' alltså tvåsidigt test. Vill du hypotestesta ensidigt
% kan du göra det med 'right' om du vill se om han sänkt vilopulsen från
% INNAN till EFTER. Observera att p kan bli ett extremt litet värde
% om personen verkligen har visat en förbättring, kan fort då stå
% 3.2346e-08 eller nått vilket betyder att om han inte faktiskt förbättrat
% sig, så är det större chans att vinna på lotto om man spelar en enda gång
% att dessa tal av en slump skulle utvisa en så stor förbättring...




Detta kommer slumpa ett dataset som visar en viss förbättring, om än liten.
Lite beroende hur talen slumpas när du kör de kommer talen visa lite olika men om jag sparar skriptet som vilopuls.m och kör det en gång, kan det till exempel visa




>> vilopuls

INNAN =

Columns 1 through 19

65 66 64 64 62 59 63 62 65 66 68 68 60 68 65 61 64 65 59

Columns 20 through 38

63 59 60 58 66 62 66 64 70 62 66 65 67 63 64 63 67 66 69

Columns 39 through 57

61 56 58 61 66 63 66 68 67 63 63 59 62 62 59 59 65 60 65

Columns 58 through 76

66 61 64 66 64 60 65 58 66 67 61 66 64 62 66 62 62 63 59

Columns 77 through 95

66 61 67 64 65 67 64 70 67 67 62 62 57 65 62 70 61 58 64

Columns 96 through 114

64 66 62 58 60 64 68 61 68 60 61 60 70 64 58 63 62 63 64

Columns 115 through 133

66 69 65 69 67 67 63 62 62 63 61 61 61 69 65 70 67 63 61

Columns 134 through 152

66 62 66 60 63 67 57 60 63 69 63 64 65 60 62 66 61 54 68

Columns 153 through 171

63 72 63 61 58 62 59 63 63 60 61 65 65 61 64 57 62 62 68

Columns 172 through 182

65 67 70 65 61 61 63 69 57 62 65


EFTER =

Columns 1 through 19

63 65 63 65 65 64 63 62 64 63 63 67 59 61 66 59 62 63 61

Columns 20 through 38

55 64 63 63 65 59 62 65 59 62 66 61 64 64 67 66 60 65 58

Columns 39 through 57

62 57 64 71 64 61 65 66 62 59 63 61 62 61 59 63 56 61 63

Columns 58 through 76

58 58 60 57 56 62 63 63 60 60 62 63 64 64 57 65 60 65 64

Columns 77 through 95

63 59 63 62 63 64 65 63 59 60 64 56 58 60 59 61 63 60 68

Columns 96 through 114

63 65 63 63 61 59 60 64 62 65 56 66 63 57 64 60 61 59 63

Columns 115 through 133

60 61 61 61 61 65 61 61 56 63 60 62 58 60 59 62 64 63 62

Columns 134 through 152

60 61 59 61 64 59 57 58 61 64 58 63 61 66 62 62 67 63 62

Columns 153 through 171

60 67 61 66 59 59 64 60 62 61 64 61 59 60 62 59 61 64 65

Columns 172 through 182

65 64 61 61 59 58 60 63 65 57 65


h =

1


p =

1.4058e-07

konfidensintervall =

1.1441 Inf


stats =

struct with fields:

tstat: 5.2344
df: 362
sd: 3.0441



h=1 innebär att vi kan förkasta nollhypotesen och därmed dra slutsatsen att "Ja han har sänkt sin vilopuls".
p =1.4058e-07 innebär att om han ändå faktiskt inte har förbättrat sig (nollhypotesen sann) så är det ungefär 1 på 7 miljoner att denna skillnaden skulle uppstå av slumpen. Detta är ett löjligt bra p-värde och då accepterar man alternativhypotesen. Ofta brukar man kräva p<0.05 för att förkasta nollhypotes, men ju mindre p, desto bättre.

Så som vi skrev indata här så innebär

konfidensintervall =

1.1441 Inf

Att vi kan vara 95% säkra på att han MINST förbättrat sin vilopuls med 1.1441 (alltså lägre vilopuls så som vi angivit det) BRA GREJER!

struct with fields:

tstat: 5.2344
df: 362
sd: 3.0441


Skriver vi nu

>> mean(EFTER)-mean(INNAN)

i terminalen får jag

ans =

-1.6703

vilket då är genomsnittet av förbättrad vilopuls.

Som sagt om du kör programmet får du andra tal, då den slumpar. Men bara en demonstration hur du kan göra det.

EDIT: Men du ska ju naturligtvis använda din mätdata, inte slumpa de som jag gjorde, men det vet du ju helt säkert
__________________
Senast redigerad av GrindsMyGears 2020-10-11 kl. 01:13.
Citera
2020-10-11, 14:23
  #8
Medlem
Citat:
Ursprungligen postat av GrindsMyGears
Skapa gärna följande skript i MATLAB för att exemplifiera hur du kan göra



for k=1:182
INNAN(k)=floor(randn(1,1)*3.3+64);
EFTER(k)=floor(randn(1,1)*2.9+62.4);
end
INNAN
EFTER
[h,p,konfidensintervall,stats] = ttest2(INNAN,EFTER,'Alpha',0.05,'Tail','right')

% Ändra 0.05 till något annat om du vill ha olika konfidensgrad.
% Konfidensgrad är 1-Alpha, så här 0.95 (95%-ig).
% Om du bara skrivit ttest2(INNAN,EFTER) antar MATLAB Alpha=0.05 samt
% 'Tail' = 'both' alltså tvåsidigt test. Vill du hypotestesta ensidigt
% kan du göra det med 'right' om du vill se om han sänkt vilopulsen från
% INNAN till EFTER. Observera att p kan bli ett extremt litet värde
% om personen verkligen har visat en förbättring, kan fort då stå
% 3.2346e-08 eller nått vilket betyder att om han inte faktiskt förbättrat
% sig, så är det större chans att vinna på lotto om man spelar en enda gång
% att dessa tal av en slump skulle utvisa en så stor förbättring...




Detta kommer slumpa ett dataset som visar en viss förbättring, om än liten.
Lite beroende hur talen slumpas när du kör de kommer talen visa lite olika men om jag sparar skriptet som vilopuls.m och kör det en gång, kan det till exempel visa




>> vilopuls

INNAN =

Columns 1 through 19

65 66 64 64 62 59 63 62 65 66 68 68 60 68 65 61 64 65 59

Columns 20 through 38

63 59 60 58 66 62 66 64 70 62 66 65 67 63 64 63 67 66 69

Columns 39 through 57

61 56 58 61 66 63 66 68 67 63 63 59 62 62 59 59 65 60 65

Columns 58 through 76

66 61 64 66 64 60 65 58 66 67 61 66 64 62 66 62 62 63 59

Columns 77 through 95

66 61 67 64 65 67 64 70 67 67 62 62 57 65 62 70 61 58 64

Columns 96 through 114

64 66 62 58 60 64 68 61 68 60 61 60 70 64 58 63 62 63 64

Columns 115 through 133

66 69 65 69 67 67 63 62 62 63 61 61 61 69 65 70 67 63 61

Columns 134 through 152

66 62 66 60 63 67 57 60 63 69 63 64 65 60 62 66 61 54 68

Columns 153 through 171

63 72 63 61 58 62 59 63 63 60 61 65 65 61 64 57 62 62 68

Columns 172 through 182

65 67 70 65 61 61 63 69 57 62 65


EFTER =

Columns 1 through 19

63 65 63 65 65 64 63 62 64 63 63 67 59 61 66 59 62 63 61

Columns 20 through 38

55 64 63 63 65 59 62 65 59 62 66 61 64 64 67 66 60 65 58

Columns 39 through 57

62 57 64 71 64 61 65 66 62 59 63 61 62 61 59 63 56 61 63

Columns 58 through 76

58 58 60 57 56 62 63 63 60 60 62 63 64 64 57 65 60 65 64

Columns 77 through 95

63 59 63 62 63 64 65 63 59 60 64 56 58 60 59 61 63 60 68

Columns 96 through 114

63 65 63 63 61 59 60 64 62 65 56 66 63 57 64 60 61 59 63

Columns 115 through 133

60 61 61 61 61 65 61 61 56 63 60 62 58 60 59 62 64 63 62

Columns 134 through 152

60 61 59 61 64 59 57 58 61 64 58 63 61 66 62 62 67 63 62

Columns 153 through 171

60 67 61 66 59 59 64 60 62 61 64 61 59 60 62 59 61 64 65

Columns 172 through 182

65 64 61 61 59 58 60 63 65 57 65


h =

1


p =

1.4058e-07

konfidensintervall =

1.1441 Inf


stats =

struct with fields:

tstat: 5.2344
df: 362
sd: 3.0441



h=1 innebär att vi kan förkasta nollhypotesen och därmed dra slutsatsen att "Ja han har sänkt sin vilopuls".
p =1.4058e-07 innebär att om han ändå faktiskt inte har förbättrat sig (nollhypotesen sann) så är det ungefär 1 på 7 miljoner att denna skillnaden skulle uppstå av slumpen. Detta är ett löjligt bra p-värde och då accepterar man alternativhypotesen. Ofta brukar man kräva p<0.05 för att förkasta nollhypotes, men ju mindre p, desto bättre.

Så som vi skrev indata här så innebär

konfidensintervall =

1.1441 Inf

Att vi kan vara 95% säkra på att han MINST förbättrat sin vilopuls med 1.1441 (alltså lägre vilopuls så som vi angivit det) BRA GREJER!

struct with fields:

tstat: 5.2344
df: 362
sd: 3.0441


Skriver vi nu

>> mean(EFTER)-mean(INNAN)

i terminalen får jag

ans =

-1.6703

vilket då är genomsnittet av förbättrad vilopuls.

Som sagt om du kör programmet får du andra tal, då den slumpar. Men bara en demonstration hur du kan göra det.

EDIT: Men du ska ju naturligtvis använda din mätdata, inte slumpa de som jag gjorde, men det vet du ju helt säkert

Det var sjukt jävla bra förklarat, riktigt bra! Jag förstår precis vad du menar nu. Jag ska testa på det nu i dagarna eftersom att jag har lite annat plugg i vägen men jag kommer nog återkomma med svar.

Tackar!
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in