Model selection - TAU R Workshop 2015
Download
Report
Transcript Model selection - TAU R Workshop 2015
סטטיסטיקה בסיסית והסקה
סטטיסטית בR-
!!!Everything differs
"צפויים להימצא הבדלים בין xל "y-היא
אמירה טריוויאלית
הסטטיסטיקאי שבכם שואל "האם ההבדלים שנמצאו גדולים מהצפוי באקראי"
הביולוג שבכם שואל "למה ההבדלים הם לכיוון ובדרגה שמצאתי"
*מדדים לנטייה מרכזית
ממוצע.1
הרמוני, גיאומטרי,חשבוני
Arithmetic mean: Σxi/n
Geometric mean: (x1*x2*…*xn)1/n
Harmonic mean:
* = Moments of central tendency
R-מדדים לנטייה מרכזית ב
Arithmetic mean: Σxi/n
ממוצע חשבוני.1
“mean” הפונקציה
data<-c(2,3,4,5,6,7,8)
mean(data)
[1] 5
:דוגמא
Geometric mean: (x1*x2*…*xn)1/n
data<-c(2,3,4,5,6,7,8)
exp(mean(log(data)))
[1] 4.549163
:דוגמא
ממוצע גיאומטרי.2
*מדדים לנטייה מרכזית
)mean( ממוצע.א.1
)median( חציון.ב
)mode( שכיח.ג
* = Moments of central tendency
data<-c(2,3,4,5,6,7,8)
median(data)
[1] 5
:דוגמא
מדדים לנטייה מרכזית
http://www.statmethods.net/management/functions.html
.1ממוצע
.2שונות*
הממוצע הוא מדד טוב יותר למה שקורה
באוכלוסיה\מדגם כשהשונות קטנה או
גדולה?
*Variance = Σ(xi-μ)2 / n
דוגמא:
)data<-c(2,3,4,5,6,7,8
)var(data
[1] 4.666667
מדדים לנטייה מרכזית
.1ממוצע
.2שונות
המומנט השני של נטייה מרכזית הוא מדד
לפיזור הנתונים מסביב למומנט הראשון
דוגמאות למומנט השני הן ,למשל ,השונות ,סטיית התקן ,שגיאת התקן ,ה-
,coefficient of variationורווח הסמך (של 99% ,95 ,90או מה שלא יהיה)
מדדים לנטייה מרכזית
#for:
data<-c(2,3,4,5,6,7,8)
length(data)
var(data)
:גודל מדגם
:שונות
sd(data)
:סטיית תקן
se<-(sd(data)/length(data)^0.5)
se
[1] 0.8164966
:שגיאת תקן
CV<-sd(data)/mean(data)
CV
[1] 0.4320494
:coefficient of variation
מדדים לנטייה מרכזית
.1ממוצע
.2שונות
.3הטייה ()Skew
התפלגות שכיחויות מוטה אינה סימטרית!
האם בהתפלגות שכיחויות מוטה הממוצע החשבוני הוא מדד
טוב לנטייה מרכזית?
מהו השכר הממוצע של כל הסטודנטים פה ושל ביל גייטס?
מדדים לנטייה מרכזית
)Skew( הטייה
skew<-function(data){
m3<-sum((data-mean(data))^3)/length(data)
s3<-sqrt(var(data))^3
m3/s3}
skew(data)
sdskew<-function(x) sqrt(6/length(x))
:שגיאת תקן של הטיה
מדדים לנטייה מרכזית
.1ממוצע
.2שונות
.3הטייה ()Skew
.4קורטוזיס ()Kurtosis
מדדים לנטייה מרכזית
)Kurtosis( קורטוזיס.1
kurtosis<-function(x){
m4<-sum((x-mean(x))^4)/length(x)
s4<-var(x)^2
m4/s4-3 }
kurtosis(x)
sdkurtosis<-function(x) sqrt(24/length(x))
:שגיאת תקן של קורטוזיס
התפלגות נורמאלית יכולה לקבל כל ערך של ממוצע ושונות ,אבל
ה skewnessוהקורטוזיס שלה צריכים להיות שווים לאפס
לערכי skewוקורטוסיס יש שונות
משלהם – ואפס צריך להיות מחוץ
לרווח הסמך שלהם כדי שהם יהיו
שונים במובהק מאפס
Residuals
כשאנחנו עושים סטטיסטיקה אנחנו יוצרים מודלים של המציאות
אחד המודלים הפשוטים ביותר הוא הממוצע:
הגובה הממוצע של אזרחי ישראל הוא (נגיד) 173ס"מ
השכר הממוצע הוא ( ₪ 9302למ"ס ,נתוני מרץ )2013
והשירות הצבאי הממוצע הוא (אולי) 24חודשים
2.05מטר
דוב ליאור
שירת בצה"ל חודש אחד
₪ 46,699בחודש
(הערכת חסר ,ללא הטבות)
http://www.haaretz.co.il/1.2057452
Residuals
כשאנחנו עושים סטטיסטיקה אנחנו יוצרים מודלים של המציאות
כך שכאן ,המודלים שלנו 173 :ס"מ 24 ,₪ 9302 ,חודשים ,אינם
מוצלחים במיוחד
ה Residual-הוא הכמות בה ערך מסויים רחוק מהניבוי של המודל .כך
שליאור אליהו רחוק 32ס"מ מהמודל "ישראלי = ,"173ורחוק 29ס"מ
מהמודל המורכב יותר "גבר ישראלי = ,177אישה ישראלית = ."168
Residual = ₪37397
Residual = 32 cm
Residual = -23 month
IDF service
Residuals
כשאנחנו עושים סטטיסטיקה אנחנו יוצרים מודלים של המציאות
model<-lm(size~Species+sex+Latitude+Longitude)
out<-model$residuals
write.table(out, file =
"residuals.txt",sep="\t",col.names=F,row.names=F)
#note that residual values are in the order entered (i.e., not
alphabetic, not by residual size – first in, first out)
Residual = ₪37397
Residual = 32 cm
Residual = -23 month service
סטטיסטיקה תיאורית והסקה סטטיסטית
כשיש לנו נתונים בשלב הראשון כדאי שנתאר אותם :נצייר
גרפים ,נחשב ממוצע וכדומה
בהסקה סטטיסטית אנו בוחנים את התנהגותם של הנתונים שלנו
אל מול השערה (היפותזה) מסויימת
את ההשערה שלנו אנו יכולים להציג כמודל סטטיסטי
למשל:
• התפלגות גבהים היא נורמאלית
• מספר המינים הולך ועולה עם העליה בשטח
• מספר המינים הולך ועולה עם העליה בשטח על פי power
functionשלו מעריך חזקה השווה ל0.25-
איזה מבחן נבחר?
זה משתנה בהתאם לטבע ה =( response variableהמשתנה
התלוי ,זה שעל ציר ה ,)y-ובעיקר לפי טבע הpredictor variables-
•אם ה response variable-הוא "הצלחה או כשלון" ,והשערת האפס
היא של שיוויון ביניהם ,נשתמש במבחן בינומי ()binomial
•אם ה response variableשלנו הוא ספירות נשתמש לרוב במחני
חי-בריבוע או .)log-likelihood=( G
• אבל לרוב ה response variableשלנו יהיה רציף ( 14מינים78 ,
פרטים87.5 ,מ"מ 54 ,פעימות לדקה 7.3 ,ביצים 23 ,מעלות)
איזה מבחן נבחר?
מהו ה? response variable-
"הצלחה" או "כישלון"
(מצא את הגבינה\אידיוט)
מבחן בינומי
()binomial
ספירות
(שכיחויות6 :
זכרים 9 ,נקבות)
רציף
( 14מינים 78 ,פרטים,
87.5מ"מ 54 ,חודשים,
7.3ביצים 23 ,מעלות)
חי-בריבוע או G
(=)log-likelihood
ראה בהמשך
Binomial test in R
.יש להגדיר את מספר ההצלחות מתוך גודל המדגם הכולל
) (מובהק20 מתוך19 :2 דוגמה
.) (לא מובהק34 מתוך19 :1 דוגמה
binom.test(19,34)
Exact binomial test data: 19 and 34 number of successes = 19,
number of trials = 34
p-value = 0.6076 alternative hypothesis: true probability of
success is not equal to 0.5 95 percent confidence interval:
0.3788576 0.7281498 sample estimates: probability of success
0.5588235
binom.test(19,20)
Exact binomial test data: 19 and 20 number of successes = 19,
number of trials = 20,
p-value = 4.005e-05 alternative hypothesis: true probability of
success is not equal to 0.5 95 percent confidence interval:
0.7512672 0.9987349 sample estimates: probability of success
0.95
Chi-square test in R
chisq.test
Data: insularity vs. diet:
habitat
island
island
island
mainland
mainland
mainland
diet
carnivore
herbivore
omnivore
carnivore
herbivore
omnivore
species#
488
43
177
1901
101
269
M<-as.table(rbind(c(1901,101,269),c(488,43,177)))
chisq.test(M)
data: M
X-squared = 80.0441, df = 2, p-value < 2.2e-16
איזה מבחן נבחר?
אם ה response variableשלנו הוא רציף
נבחר מבחן לפי טבע הpredictor variables-
• אם ה predictor variable-בדיד (אתר א' ,אתר ב' ,אתר ג';
זכר\נקבה; מין א' ,מין ב ,מין ג'; שטח עירוני\שטח טבעי;
טיפול א' ,טיפול ב' ,ביקורת) המבחן יהיה
)(analysis of variance
ANOVA
• אם ה predictor variableרציף (מעלות צלסיוס ,כמות
מזון ,קו רוחב ,כמות משקעים ,מספר מתחרים ,אחוז כיסוי)
המבחן יהיה רגרסיה
t-test in R
t.test(x,y)
amy<-read.csv("ssd.csv",header=T)
names(amy)
kadison<-read.csv("ssd2.csv",header=T)
names(kadison)
attach(kadison)
males<-size[Sex=="male"]
females<-size[Sex=="female"]
t.test(females,males)
Species
Xenagama_zonura
Xenagama_zonura
Xenosaurus_grandis
Xenosaurus_grandis
Xenosaurus_newmanorum
Xenosaurus_newmanorum
Xenosaurus_penai
Xenosaurus_penai
Xenosaurus_platyceps
Xenosaurus_platyceps
Xenosaurus_rectocollaris
Xenosaurus_rectocollaris
Zonosaurus_anelanelany
Zonosaurus_anelanelany
Zootoca_vivipara
Zootoca_vivipara
Zygaspis_nigra
Zygaspis_nigra
Zygaspis_quadrifrons
Zygaspis_quadrifrons
size
79.7
85
120
133.0
118
126.0
105.8
112
106
121.0
95
111.0
86
93.0
65
75.0
230
240.0
195
227.0
Sex
female
male
male
female
male
female
female
male
male
female
male
female
male
female
male
female
male
female
male
female
Welch Two Sample t-test data: females and males t = -2.1541, df =
6866.57, p-value = 0.03127 alternative hypothesis: true difference in
means is not equal to 0 95 percent confidence interval: -7.5095545 0.3536548 sample estimates: mean of x mean of y 88.17030 92.10191
t-test in R (2)
Species
Xenagama_zonura
Xenagama_zonura
Xenosaurus_grandis
Xenosaurus_grandis
Xenosaurus_newmanorum
Xenosaurus_newmanorum
Xenosaurus_penai
Xenosaurus_penai
Xenosaurus_platyceps
Xenosaurus_platyceps
Xenosaurus_rectocollaris
Xenosaurus_rectocollaris
Zonosaurus_anelanelany
Zonosaurus_anelanelany
Zootoca_vivipara
Zootoca_vivipara
Zygaspis_nigra
Zygaspis_nigra
Zygaspis_quadrifrons
Zygaspis_quadrifrons
lm(x~y)
amy<-read.csv("ssd.csv",header=T)
names(amy)
kadison<-read.csv("ssd2.csv",header=T)
names(kadison)
model<-lm(size~Sex,data=kadison)
summary(model)
(Intercept)
Sexmale
Estimate
88.17
3.932
standard error
1.291
1.825
t
68.32
2.154
p value
<2e-16 ***
0.031 *
size
79.7
85
120
133.0
118
126.0
105.8
112
106
121.0
95
111.0
86
93.0
65
75.0
230
240.0
195
227.0
Sex
female
male
male
female
male
female
female
male
male
female
male
female
male
female
male
female
male
female
male
female
Paired t-test in R
t.test(x,y,paired=TRUE)
amy<-read.csv("ssd.csv",header=T)
names(amy)
kadison<-read.csv("ssd2.csv",header=T)
names(kadison)
attach(kadison)
males<-size[Sex=="male"]
females<-size[Sex=="female"]
t.test(females,males,paired=TRUE)
Species
Xenagama_zonura
Xenagama_zonura
Xenosaurus_grandis
Xenosaurus_grandis
Xenosaurus_newmanorum
Xenosaurus_newmanorum
Xenosaurus_penai
Xenosaurus_penai
Xenosaurus_platyceps
Xenosaurus_platyceps
Xenosaurus_rectocollaris
Xenosaurus_rectocollaris
Zonosaurus_anelanelany
Zonosaurus_anelanelany
Zootoca_vivipara
Zootoca_vivipara
Zygaspis_nigra
Zygaspis_nigra
Zygaspis_quadrifrons
Zygaspis_quadrifrons
size
79.7
85
120
133.0
118
126.0
105.8
112
106
121.0
95
111.0
86
93.0
65
75.0
230
240.0
195
227.0
Sex
female
male
male
female
male
female
female
male
male
female
male
female
male
female
male
female
male
female
male
female
Paired t-test data:
females and males t = -10.1917, df = 3503, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal
to 0 95 percent confidence interval: -4.687950 -3.175259
sample estimates: mean of the differences -3.931605
tapply(size,Sex,mean)
female
88.17
male
92.10
ANOVA in R
aov
model<-aov(x~y)
species
Oligosoma_otagense
Oligosoma_polychroma
Oligosoma_smithi
Oligosoma_striatum
Oligosoma_suteri
Oligosoma_waimatense
Oligosoma_whitakeri
Oligosoma_zelandicum
Omanosaura_jayakari
Ophidiocephalus_taeniatus
ochel<-read.table("di.txt",header=T)
names(ochel)
[1] "species" "diet" "size"
model<-aov(size~diet,data=ochel)
summary(model)
diet
Residuals
Df
2
2959
Sum sq.
205.6
1428.9
Mean Sq. F value Pr(>F)
102.81 212.9 <2e-16 ***
0.48
diet
Omnivorous
Omnivorous
Omnivorous
Herbivorous
Carnivorous
Omnivorous
Herbivorous
Carnivorous
Omnivorous
Carnivorous
size
1.732917
1.002438
1.020078
0.948147
1.657096
1.645922
1.346954
0.89167
1.969343
0.743285
R- בANOVA- לpost-hoc מבחן
TukeyHSD(model)
Fit: aov(formula = size ~ diet, data = ochel)
$diet
Herbivorous-Carnivorous
Omnivorous-Carnivorous
Omnivorous-Herbivorous
diff
lwr
upr
p adj
1.150905 1.011075 1.290736 0
0.329414 0.244294 0.414535 0
-0.82149 -0.97824 -0.66474 0
כל ההשוואות מובהקות
R- בANOVA- לpost-hoc מבחן
model<-aov(SVL~Realm)
summary(model)
Df Sum Sq Mean Sq F value
Realm
11 5.270
0.479
9.3242
Pr(>F)
< 2.2e-16 ***
Residuals 4851 249.270 0.051
TukeyHSD(model)
Fit: aov(formula = SVL ~ Realm)
$Realm
diff
Asia-Africa
0.0006
Australia-Africa
0.0191
Caribbean-Africa
-0.0706
centralAmerica-Africa 0.0069
Europe-Africa
0.0686
lwr
-0.0351
-0.0205
-0.1184
-0.0401
-0.0306
upr
0.0363
0.0586
-0.0228
0.0539
0.1679
p adj
1.0000
0.9172
0.0001
1.0000
0.5051
אפס מחוץ
לרווח הסמך
correlation in R
cor.test(x,y)
rapoport<-read.table("rang.txt",header=T)
names(rapoport)
[1] "latitude"
"range_size“
attach(rapoport)
cor.test(range_size,latitude)
Pearson's product-moment correlation
data: range_size and latitude
t = 9.9823, df = 4910,
p-value < 2.2e-16
cor 0.1410353
“ הוא מקדםcor” המשתנה
r הקורלציה
latitude
35.91883
43.85467
8.622623
5.930
7.17859
19.85003
1.066133
35.46224
47.001
1.375278
28.86541
range_size
-0.50856
-0.40545
-0.21363
-0.09748
0.143959
0.167992
0.275788
0.302834
0.334081
0.347326
0.348311
regression in R
lm (=“linear model”):
אותם נתונים כמו
בדוגמה הקודמת
lm (y~x)
model<-lm(range_size~latitude,data=rapoport)
summary(model)
Call: lm(formula = range_size ~ latitude, data = rapoport)
Residuals: Min 1Q Median 3Q Max -4.708 -1.774 0.470 1.465 3.725
Coefficients:
(Intercept)
latitude
Estimate Std. Error
3.26
0.0517
0.02
0.0024
t value
63.134
9.982
Pr(>|t|)
<2e-16
<2e-16
***
***
Residual standard error: 1.844 on 4910 degrees of freedom
Multiple R-squared: 0.01989, Adjusted R-squared: 0.01969 Fstatistic: 99.65 on 1 and 4910 DF, p-value: < 2.2e-16
aovלעומת lm
אולי במפתיע אפשר לבחון נתונים המתאימים ל ANOVA-גם במבחן .lm
במקרה כזה נקבל את כל המידע שנותן ה summary-של lmבמבחן רגרסיה,
כולל (חשוב!) ,parameter estimatesשגיאות תקן ,הבדלים בין פקטורים
וערכי p-לכל קונטרסט (בין 2קטגוריות של המשתנה המסביר הקטגוריאלי)
lm לעומתaov
.lm גם במבחןANOVA-אולי במפתיע אפשר לבחון נתונים המתאימים ל
)! כולל (חשוב, במבחן רגרסיהlm שלsummary-במקרה כזה נקבל את כל המידע שנותן ה
2 לכל קונטרסט (ביןp- הבדלים בין פקטורים וערכי, שגיאות תקן,parameter estimates
)קטגוריות של המשתנה המסביר הקטגוריאלי
model2<-lm(size~diet,data=ochel)
summary(model2)
(Intercept)
dietHerbivorous
dietOmnivorous
Estimate
1.03832
1.15091
0.32941
Std. Error
0.01423
0.05963
0.0363
t value
72.97
19.3
9.075
Pr(>|t|)
<2e-16 ***
<2e-16 ***
<2e-16 ***
Residual standard error: 0.6949 on 2959 degrees of freedom
Multiple R-squared: 0.1258, F-statistic: 212.9 on 2 & 2959 DF, p-value: < 2.2e-16
עוד בהמשך
Multiple predictors
מה לעשות ,החיים מסובכים .לפעמים מה
שמעניין אותנו מושפע מיותר מגורם אחד!
קצב ליבם של זוחלים ,למשל ,מושפע גם מגודל גופם
וגם מטמפרטורת הסביבה ,וגם מהזמן והמהירות בהם
נעו לאחרונה
Smith, R. J. 1999. Statistics of sexual size dimorphism. Journal of Human Evolution 36: 423-459.
Multiple predictors
מה לעשות ,החיים מסובכים .לפעמים מה
שמעניין אותנו מושפע מיותר מגורם אחד!
קצב ליבם של זוחלים ,למשל ,מושפע גם מגודל גופם וגם
מטמפרטורת הסביבה ,וגם מהזמן והמהירות בהם נעו לאחרונה
ניתן להסביר אם כן את המשתנה המעניין (קצב לב) אם יש לנו מידע על כל
המשתנים המסבירים.
ההנחה היא שכאשר אנו מכניסים את שלושתם למשוואה אנו רואים את
השפעתו של כל אחד כאשר שני האחרים "מוחזקים קבועים" ()held constant
Smith, R. J. 1999. Statistics of sexual size dimorphism. Journal of Human Evolution 36: 423-459.
Multiple predictors
ניתן להסביר אם כן את המשתנה המעניין (קצב לב) אם יש לנו מידע על כל
המשתנים המסבירים.
ההנחה היא שכאשר אנו מכניסים את שלושתם למשוואה אנו רואים את
השפעתו של כל אחד כאשר שני האחרים "מוחזקים קבועים" ()held constant
הנחה זו נכונה כאשר אין מתאם (גבוה) בין המשתנים
המסבירים לבין עצמם
Smith, R. J. 1999. Statistics of sexual size dimorphism. Journal of Human Evolution 36: 423-459.
איזה מבחן נבחר?
אם יש כמה ( predictor variablesנאמר ארבעה) וכולם
קטגוריאלים המבחן יהיה ANOVA
(נאמר )4-way ANOVA
אם יש כמה ( predictor variablesנאמר שבעה) וכולם רציפים
המבחן יהיה Multiple Regression
איך כותבים מבחן עם כמה משתנים מסבירים?
משתמשים בפלוס ( )+בין המשתנים המסבירים.
)lm(y~a+b+c
למשל במודל שמנסה לחזות ציוני קורסים לפי כמה
למדנו ,גיל המרצה ,כמה התפללנו והאם מעתיקים:
model<-lm(Grade~days_studied+age_of_professor+number_of
)prayers+sent_sms_texts,data=grades
)summary(model
איזה מבחן נבחר?
אם יש כמה ( predictor variablesלפחות – (2חלקם
(לפחות )1בדידים וחלקם (לפחות )1רציפים המבחן יהיה
ANCOVA
)(analysis of co-variance
איך זה נראה גרפית?
דוגמא :מדדתי אורך שלוש שיניים בשועלים מצויים,
זכרים ונקבות ,מכל תחום תפוצתם
ANOVA
Regression
ANCOVA
שני הגורמים
מובהקים :יש הבדל
בין השיניים ובין
הזוויגים
Vulpes vulpes
p
F
MS
DF
SS
0.00
417468.9
304435.2
1
304435.2
Intercept
0.00
142.3
103.8
1
103.8
sex
0.00
20704.9
15098.9
2
30197.7
tooth
0.7
2276
1659.8
Error
ניב
ניב
עליון
שן שסע
תחתונה
שן שסע
עליונה
שן שסע
עליונה
שן שסע
תחתונה
איך זה נראה גרפית?
דוגמא :אורך שלוש שיניים בשועלים
מצויים ,כפונקציה של קו הרוחב
ANOVA
R-squared: 0.015, F = 32.83,
1 & 2161 DF; p < 0.0001
Regression
ANCOVA
יש כלל ברגמן
אבל קל לראות שהמודל* זוועתי :ניבים
קטנים יותר משיני שסע
*קו הרגרסיה הוא מודל ליחס בין ה predictorל response
P
t
Std.
Error
Estimate
> 0.0001
25.25
0.378
9.554
Intercept
> 0.0001
5.73
0.008
0.044
Latitude
ANCOVAגרפית
קל להבין את זה גרפית :בדוגמה משתנה בדיד אחד עם 2
רמות (מקווקו ומלא) ,ומשתנה רציף אחד (לאורך ציר ה )X
response
Continuous predictor
response
רציף מובהק ,בדיד
לא
בדיד מובהק
רציף לא
response
c.
b.
a.
Null hypothesis
Continuous predictor
Continuous predictor
d.
שניהם מובהקים
response
Continuous predictor
ותודה לדניאל על הגרפים
איך זה נראה גרפית?
דוגמא :אורך שיניים בשועלים מצויים ,כפונקציה של קו
הרוחב (ציר ה )X-הזוויג (צבע) ובאיזו שן מדובר (צורה)
ANOVA
Regression
p
F
MS
SS
Df
factor
> 0.0001
191.7
99
99
1
sex
2
tooth
436.1
436.1
1
Latitude
0.5
1114.2
2158
Residuals
> 28665.3 14332.7 27758.79 0.0001
> 0.0001
844.69
ANCOVA
המודל הזה
מסביר 96.3%
מהשונות
העברנו פה שישה
קווי רגרסיה
מקבילים
כל הגורמים מובהקים
R- בANCOVA קריאת תוצאות מודל
דוגמא ללא
אינטראקציות
Response = intercept + a for level 1 of the 1st categorical
predictor variable or + b for level 2 of the 1st + c for level 1 of
the 2nd categorical predictor or d for level 2… +k*(value of the
continuous predictor variable) + error
Tooth / sex
אם נחזור לשועלים,למשל
factor
Estimate
Std.
Error
Intercept
(tooth c)
4.342
0.078
55.92
tooth_m
8.485
0.038
224.21 0.0001>
tooth_p
6.617
0.038
174.84 0.0001>
sex_male
0.391
0.031
12.56
0.0001>
Latitude
0.043
0.001
29.06
0.0001>
Latitude
t
p
0.0001>
:) על פי המודל הוא32 בזכרים בתל אביב (קו רוחבP כך שהאורך של שן
12.726 = 4.342+6.617+0.391+32*0.043
איך קוראים תוצאות של lmבR-
כשהמשתנה המסביר קטגוריאלי R ,משווה את כל הפקטורים
ל intercept-של הפקטור הראשון בסדר אלפביתי
)|Pr(>|t
*** <2e-16
*** <2e-16
*** <2e-16
t value
72.97
19.3
9.075
Std. Error
0.01423
0.05963
0.0363
Estimate
1.03832
1.15091
0.32941
)(Intercept
dietHerbivorous
dietOmnivorous
כאן המשתנה המסביר הוא דיאטה ואלפביתית הקטגוריה הראשונה היא Carnivore
ההבדל בין קרניבורים להרביבורים ( )t = 19.3ואומניבורים ( )t = 9.075מובהק
כך שגודלו הממוצע של קרניבור הוא 1.038 ,וזה של אומניבור1.367 = 1.038+0.329 :
איך קוראים תוצאות של lmבR-
כשהמשתנה המסביר רציף R ,מדווח עבורו את השיפוע עם
שגיאת התקן שלו וערכי ה p-וה t-שלו
)rapoport<-read.table("rang.txt",header=T
)model<-lm(range~mass+latitude,data=rapoport
)summary(model
)|Pr(>|t
*** <2e-16
*** <2e-16
*** <2e-16
t value
47.985
8.817
9.57
Std. Error
0.061833
0.036929
0.002365
Estimate
2.967075
0.325585
0.02263
)(Intercept
mass
latitude
כאן המשתנים המסבירים (את גודל טווח התפוצה) הם מסה וקו רוחב
ההשפעה של שניהם מובהקת ( ,t = 8.82ו)p<<0.05 ,t = 9.57-
כך שגודלו תחום התפוצה עולה ב( 0.02-היחידות הן לוג קמ"ר) בכל עליה של מעלה ,וב-
0.326יחידות כל עליה של יחידת מסה (לוג גרם ,כלומר יחידה אחת היא הכפלה בעשר)
איך קוראים תוצאות של lmבR-
כשהמשתנה המסביר רציף R ,מדווח עבורו את השיפוע עם
שגיאת התקן שלו וערכי ה p-וה t-שלו
)|Pr(>|t
*** <2e-16
*** <2e-16
*** <2e-16
t value
47.985
8.817
9.57
Std. Error
0.061833
0.036929
0.002365
Estimate
2.967075
0.325585
0.02263
)(Intercept
mass
latitude
כך שגודל תחום התפוצה של לטאה במסה של 100גרם ( )log(100) = 2בקוסטה ריקה
(קו רוחב )10יהיה:
Intercept+slope*mass+slope*latitude
2.967+0.3255(slope)*2(mass)+0.023(slope)*10latitude = 3.84
R- בlm איך קוראים תוצאות של
כשיש גם המשתנים מסבירים רציפים וגםANCOVAב
לאחרונים ושיפועintercept מדווחR ,קטגוריאלים
המתאימיםt- והp- עם שגיאות התקן שלו וערכי ה,לראשונים
model<-lm(range~islands+mass+latitude,data=rapoport)
summary(model)
(Intercept)
islandsMIE
islandsSIE
mass
latitude
Estimate
3.777624
-1.232342
-2.030331
0.266193
-0.010585
Std. Error
0.059828
0.082848
0.059402
0.033047
0.002139
t value
63.142
-14.875
-34.179
8.055
-4.95
Pr(>|t|)
< 2e-16 ***
< 2e-16 ***
< 2e-16 ***
9.91E-16 ***
7.68E-07 ***
) מינים שאנדמיים לאי יחידcontinental( מיני יבשת: קטגוריות3 כאן יש
)multiple island endemics( ) או מכמה אייםsingle island endemics(
R- בlm איך קוראים תוצאות של
גם משתנים מסבירים רציפים וגם קטגוריאלים:ANCOVA
model<-lm(range~islands+mass+latitude,data=rapoport)
summary(model)
(Intercept)
islandsMIE
islandsSIE
mass
latitude
Estimate
3.777624
-1.232342
-2.030331
0.266193
-0.010585
Std. Error
0.059828
0.082848
0.059402
0.033047
0.002139
t value
63.142
-14.875
-34.179
8.055
-4.95
Pr(>|t|)
< 2e-16 ***
< 2e-16 ***
< 2e-16 ***
9.91E-16 ***
7.68E-07 ***
)MIE( ) או כמה אייםSIE( אי יחיד,)continental( יבשת: קטגוריות3
Residual standard error: 1.633 on 4887 degrees of freedom
Multiple R-squared: 0.232, Adjusted R-squared: 0.2314
F-statistic: 369 on 4 and 4887 DF, p-value: < 2.2e-16
וכו' של המודל בכללותוF , בריבועR אלה ערכי
איך קוראים תוצאות של lmבR-
)model<-lm(range~islands+mass+latitude,data=rapoport
)summary(model
)|Pr(>|t
*** < 2e-16
*** < 2e-16
*** < 2e-16
*** 9.91E-16
*** 7.68E-07
t value
63.142
-14.875
-34.179
8.055
-4.95
Std. Error
0.059828
0.082848
0.059402
0.033047
0.002139
Estimate
3.777624
-1.232342
-2.030331
0.266193
-0.010585
)(Intercept
islandsMIE
islandsSIE
mass
latitude
כיוון שאלפביתית continental<MIE<SIEהחיתוך ( )interceptשלנו הוא
עבור הקטגוריה הראשונה :מיני יבשת .כך שטווח התפוצה של מיני יבשת גדול
משל ( MIEשימו לב :הבדל שלילי!) ושל – SIEוכמו כן טווח התפוצה עולה
עם המסה ,אך יורד עם העליה בקו הרוחב (שיפוע שלילי).
ושוב – כל הגורמים מובהקים
relevel
)model<-lm(range~islands+mass+latitude,data=rapoport
)summary(model
)|Pr(>|t
*** < 2e-16
*** < 2e-16
*** < 2e-16
*** 9.91E-16
*** 7.68E-07
t value
63.142
-14.875
-34.179
8.055
-4.95
Std. Error
0.059828
0.082848
0.059402
0.033047
0.002139
Estimate
3.777624
-1.232342
-2.030331
0.266193
-0.010585
)(Intercept
islandsMIE
islandsSIE
mass
latitude
אבל בגורמים הקטגוריאלים יש לנו בעיה R :מחשב רק את ההבדל בין כל גורם
לגורם הראשון באלפבית .כאן בין יבשת לשתי קטגוריות האיים .אבל הוא לא
מחשב ולא מדווח על ההבדלים בין שתי קטגוריות האיים
וחוץ מזה ,הוא לא נותן לנו עבורם שגיאות תקן והבדלים מאפס ,אלא רק
הבדלים מהיבשת ושגיאת תקן של המבחן הזה (לא את שגיאת התקן של
המשתנה עצמו במודל)
Relevel (2)
model<-lm(range~islands+mass+latitude,data=rapoport)
summary(model)
אליו הוא ישווה את, מי יהיה הגורם הראשוןR- להגדיר ל:אפשר להתחכם
:relevel על ידי הפקודה,האחרים
model2<lm(range~relevel(islands,”SIE”)+mass+latitude,data=r
apoport)
summary(model2)
או
model3<lm(range~relevel(islands,”MIE”)+mass+latitude,data=r
apoport)
summary(model3)
Relevel (3)
אליו הוא ישווה את, מי יהיה הגורם הראשוןR- להגדיר ל:אפשר להתחכם
:relevel על ידי הפקודה,האחרים
model3<lm(range~relevel(islands,”MIE”)+mass+latitude,data=rapoport)
summary(model3)
Estimate Std. Error
t value
Pr(>|t|)
2.545
0.092
27.74
<2e-16
***
relevel(islands, MIE)continental 1.232
relevel(islands, MIE)SIE
-0.8
0.083
14.88
<2e-16
***
-8.54
8.055
<2e-16
9.91E-16
***
***
-4.95
7.68E-07
***
(Intercept)
mass
0.266
0.093
0.033
latitude
-0.01
0.002
:שימו לב שהפרמטרים של המודל הכללי נשארו זהים
Residual standard error: 1.633 on 4887 degrees of freedom
Multiple R-squared: 0.232, Adjusted R-squared: 0.2314
F-statistic: 369 on 4 and 4887 DF, p-value: < 2.2e-16
בחירת מבחן מתאים
:) מתקיימיםresiduals- התפלגות נורמלית של ה,אם הנחותיהם של מבחנים פרמטריים (שונות דומה
Predictor
Response
test
In R
Categorical
Success/failure
binomial
binom.test
Categorical
Counts
Chi-square/G
chisq.test
Categorical
continuous
ANOVA*
aov
continuous
continuous
Regression/correlation lm
continuous
Categorical/counts
Chi-square/ANOVA
lm
Categorical, multiple
predictors
continuous
Multi-way ANOVA
aov
continuous, multiple
predictors
continuous
Multiple regression
lm
multiple predictors,
Both categorical &
continuous
continuous
ANCOVA
lm
*t-test if there are only 2 categories
אינטראקציות
קל להבין את זה גרפית :בדוגמה משתנה בדיד אחד עם 2רמות
(מקווקו ומלא) ,ומשתנה רציף אחד (לאורך ציר ה )X
response
Continuous predictor
d.
response
response
Continuous predictor
b.
שניהם מובהקים,
אין אינטראקציה
Continuous predictor
response
Continuous predictor
שניהם מובהקים,
יש אינטראקציה
Null hypothesis
Continuous predictor
Continuous predictor
f.
רציף מובהק בדיד
לא ,אין אינטראקציה
response
רציף מובהק בדיד
לא ,יש אינטראקציה
בדיד מובהק
רציף לא
response
e.
c.
a.
אינטראקציות בR-
)lm(y~a*b
)lm(y~a+b+c+a:b
משתמשים בפלוס ( )+בין המשתנים המסבירים .עבור אינטראקציה
משתמשים בנקודותיים .אם רוצים לבחון גם main effectוגם
אינטראקציה משתמשים בכוכבית למשל במודל שמנסה לחזות ציוני
קורסים לפי כמה למדנו ,גיל המרצה ,כמה התפללנו והאם מעתיקים:
<model_lm(Grade~days_studied+age_of_professor+number_of_prayers*sent
)sms_texts+age_of_professor:number_of_prayers
כאן ביקשנו גם שתי אינטראקציות :בין תפילות להעתקות וגיל לתפילה
חשוב:
הנחת היסוד של מבחנים מרובי predictorsהיא
שאין מתאם בין predictorsשונים
מתאם גבוה בין זוג predictor variablesקרוי גם ,multi-co-linearity
ולעיתים מבוטא על ידי )1-R2( toleranceאו על ידי הרציפרוקלי שלו
)VIF = 1/tolerance( Variance Inflation Factors
אם multicollinearityחזק קיים אזי המודל לא יהיה יציב ,והערכת
הפרמטרים עשויה להיות לא נכונה
אל תכניסו משתנים מנבאים המצויים
במתאם גבוה בינם לבין עצמם!
Model selection
תמיד ,תמיד ,תמיד ,ככל שנוסיף יותר predictor
variablesנסביר יותר מהשונות
היחס יהיה מונוטוני – וטריוויאלי :במקרה הרע ביותר
ה Parameter estimate -של משתנים נוספים יהיו אפס
(למשל מספר מינים = *87+22.5קו הרוחב *0 +מספר
המנדטים של המפלגות הדתיות באותו אזור)
אבל ה parameter estimateלא יהיה אף פעם בדיוק אפס – הוא
פשוט יהיה נמוך מאוד – נאמר נוסף מין על כל 5120מנדטים
שנוספים לש"ס ,או נגרע מין על כל 974מנדטים הנוספים ליהדות
התורה
ה R2שלנו יעלה מ 0.45ל – 0.45007זה שווה לנו?
Model selection
למעשה בכל שאלה סטטיסטית אפשר להסביר
100%מהשונות באמצעות מספר משתנים השווה
למספר התצפיות
רוצים דוגמא?
מה הגובה שלכם?
אבל ,מהי יכולת הניבוי של
המודל הזה לנתון הבא???
http://en.wikipedia.org/wiki/Overfitting
Model selection
ככל שנוסיף יותר predictor variablesנסביר
יותר מהשונות
המטרה שלנו כמדענים היא להסביר את מקסימום
התופעות בעזרת מינימום משתנים
על תער אוקאם שמעתם?
כך שאם יש לנו משתנים מסבירים רבים מאוד נרצה
לדעת אילו מהם מוסיפים כל כך מעט שונות מוסברת,
שלא שווה לסבך בגללם את החיים
Model selection
ניתן פשוט לבחון אילו משתנים במודל מובהקים
Backwards (stepwise) elimination
.1על פי ערכי p
נתחיל במודל המורכב ביותר ,ולמחוק כל פעם את המשתנה
(או האינטראקציה) שלו מיוחס ה p-הגבוה ביותר – עד שכל
ערכי ה pקטנים מ ( 0.05או ערך סף אחר) .המודל איתו
נשארנו ייקרא MAM = minimum adequate model
דוגמא :מנסים להסביר גודל תטולה בודדת בלטאות ()response variable: clutch
באמצעות נתונים על גודל גופן ( ,)SVLטמפרטורת סביבה המועדפת עליהן (,)temp
הגובה החציוני מעל פני הים בו הן חיות ( ,)elevationומספר התטולות שהן
מטילות בשנה ()broods
Model selection
ניתן פשוט לבחון אילו משתנים במודל מובהקים
נתחיל במודל המורכב ביותר:
)model1<-lm(clutch~SVL+temp+elevation+Broods
p
t
Estimate se
<0.0001
-6.272
3.878
-24.32
Intercept
<0.0001
10.465
1.34
14.02
SVL
0.808
0.244
0.0809
0.0197
temp
<0.0001
4.103
0.0005
0.0021
elevation
0.362
-0.913
0.1069
-0.0976
Broods
דוגמא :מנסים להסביר גודל תטולה בודדת בלטאות באמצעות נתונים על גודל גופן ( ,)SVLטמפרטורת סביבה המועדפת
עליהן ( ,)tempהגובה החציוני מעל פני הים בו הן חיות ( ,)elevationומספר התטולות שהן מטילות בשנה ()broods
Model selection
ניתן פשוט לבחון אילו משתנים במודל מובהקים
נמחק את הטמפרטורה ונחשב מחדש:
)model2<-lm(clutch~SVL+elevation+Broods
p
t
Estimate se
<0.0001
-8.038
2.95
-23.71
Intercept
<0.0001
10.521
1.335
14.04
SVL
<0.0001
4.103
0.0005
0.0021
elevation
0.341
-0.953
0.1059
-0.1009
Broods
דוגמא :מנסים להסביר גודל תטולה בודדת בלטאות באמצעות נתונים על גודל גופן ( ,)SVLטמפרטורת סביבה המועדפת
עליהן ( ,)tempהגובה החציוני מעל פני הים בו הן חיות ( ,)elevationומספר התטולות שהן מטילות בשנה ()broods
Model selection
ניתן פשוט לבחון אילו משתנים במודל מובהקים
נמחק את מספר התטולות ונחשב מחדש:
)model3<-lm(clutch~SVL+elevation
כל
המשתנים
מובהקים,
עצור!
t
Estimate se
p
-12.433 <0.0001
-23.420 1.884
Intercept
<0.0001
15.151
0.9019
13.660
SVL
<0.0001
5.491
0.0003
0.0018
elevation
Model3 = MAM
גודל תטולה הוא פונקציה של גודל גוף ושל הגובה מעל פני הים ,וזהו
Model selection
ניתן פשוט לבחון אילו משתנים במודל מובהקים
forward addition
אפשר להתחיל במודל הפשוט ביותר ,ולהוסיף כל פעם משתנה
נוסף ,ולהשאיר אותו אם ה p-עבורו קטן מ( 0.05-או ערך סף אחר).
)model1a<-lm(clutch~SVL
)Model2a<- lm(clutch~SVL+elevation
)Model3a<- lm(clutch~SVL+elevation+Broods
ברגע שנגיע למודל שמכיל גורמים לא מובהקים ( model3aבדוגמה שלנו)
נעצור ונבחר את המודל הקודם ( model2aבדוגמה שלנו) כMAM-
Model selection
ניתן פשוט לבחון אילו משתנים במודל מובהקים
forward addition
מתחילים במודל הפשוט ביותר ,ומוסיפים כל פעם משתנה נוסף,
ולהשאיר אותו אם ה p-עבורו קטן מ( 0.05-או ערך סף אחר).
שימו לב :לא כל הצירופים האפשריים בין פרמטרים (והאינטראקציות ביניהם)
משמשים לא ב forward addition-ולא ב backwards elimination-כאן ,ויכול
להיות שהצירוף "הכי נכון" לא נבדק.
מצד שני מספר המודלים האפשרי עולה בחזקה של מספר הפרמטרים בהם
משתמשים ,כך שבחינת כל המודלים האפשריים לא מעשית אם יש לנו הרבה מאוד
פרמטרים – אלא אם כן אנו יודעים לתכנת היטב ויש לנו מחשב חזק והרבה זמן...
Model selection
Akaike Information Criterion
Hirotsugu Akaike
דרך חלופית לבחירת מודלים
השוואה בין מודלים על פי 2פרמטרים :כמה המודל "טוב" (רמת הדיוק בה
מתוארת המציאות) לעומת כמה הוא מורכב (כמה פרמטרים הערכנו)
)AIC = 2k-2ln(L
כאשר Kהוא מספר הפרמטרים ו L-הוא ה maximum likelihoodשל
המודל (שבלי להכנס לפירוט מיותר מבטא במקרה הזה את ה residual
– sum of squaresככל שהוא קטן יותר המודל טוב יותר ,וניתן לכתוב
[))AIC = 2k+n[ln(RSS
ככל שערך ה AICנמוך יותר המודל טוב יותר
http://en.wikipedia.org/wiki/Residual_sum_of_squares
http://en.wikipedia.org/wiki/Akaike_information_criterion
Model selection
Akaike Information Criterion
Hirotsugu Akaike
AIC = 2k-2ln(L)
שימו לב שהתמיכה במודל חזקה יותר ככל
: נמוך יותרAIC שערך ה
AIC rewards descriptive accuracy via the maximum
likelihood (High L), and penalizes lack of parsimony
according to the number of free parameters (high K)
AIC(model1,model2,model3)
Model selection
נחזור ללטאות
)model1<-lm(clutch~SVL+temp+elevation+Broods
)model2<-lm(clutch~SVL+elevation+Broods
)model3<-lm(clutch~SVL+elevation
)AIC(model1,model2,model3
AIC
df
1773.50
model1 6
1771.56
model2 5
1770.48
model3 4
שוב מודל 3הוא הטוב
ביותר (יש לו ה AIC
scoreהנמוך ביותר)
דוגמא :מנסים להסביר גודל תטולה בודדת בלטאות באמצעות נתונים על גודל גופן ( ,)SVLטמפרטורת סביבה המועדפת עליהן
( ,)tempהגובה החציוני מעל פני הים בו הן חיות ( ,)elevationומספר התטולות שהן מטילות בשנה ()broods
Akaike Information Criterion
)AIC(model1,model2,model3
לא מאפשר לבחון כמה טוב הוא מבחן בודד ,אלא רק להשוות
בין מספר מבחנים הנשענים על אותם נתונים
התוצאה ( )scoreשל AICחסרת משמעות בפני עצמה :לא
ניתן להשוות AICבין מבחנים של שאלות שונות או
שמתבססים על נתונים שונים כמו שניתן להגיד ש
0.05=0.05=0.05
בנוסף ,כלל האצבע אומר שלא ניתן לומר שהבדלים
בערכי AICשל פחות מ 2-אינם מאפשרים לומר
איזה מודל טוב יותר
Akaike Information Criterion
כלל האצבע אומר שלא ניתן לומר שהבדלים בערכי AICשל
פחות מ 2-אינם מאפשרים לומר איזה מודל טוב יותר
)AIC(model1,model2,model3
∆AIC
AIC
0
1770.48
model3 4
1.12
1771.56
model2 5
3.02
1773.50
model1 6
df
נסדר את המודלים על פי ערכי AICמהנמוך (הכי טוב) לגבוה ,ונחשב
עבור כל אחד את הפרש ה AIC scoreמהמודל עם ה scoreהנמוך
ביותר – לקבלת ערך ה ∆AICשל כל מודל .בדוגמה הזו לא ניתן לומר
שמודל 3עדיף על מודל 2כיוון שההפרש ב AICביניהם קטן מ 2
וריאציות- AIC
AICc = AIC+(2k*[k+1]/[n-k-1])
AICc .1
עבור מדגמים קטניםAIC תיקון ל
)http://cran.r-project.org/web/packages/AICcmodavg/AICcmodavg.pdf R (חבילת
AIC weights .2
“Akaike weights are used in model averaging. They represent the relative
likelihood of a model. To calculate them, for each model first calculate the
relative likelihood of the model, which is just exp(-0.5 * ∆AIC score for
that model). The Akaike weight for a model is this value divided by the sum
of these values across all models.Ӡ
Baysian Information Criterion, BIC .3
למספריםAIC מ1סובלני פחות
††גדולים של פרמטרים
† http://www.brianomeara.info/tutorials/aic
†† Wagenmakers & Farrell 2004
BIC: -2*ln L + k*ln(n)
גודל המדגם לא משחקAIC- ב,! מוכפל בגודל המדגםk : שימו לב.1
)Generalized linear models (GLM
משמשים ב GLM-כשה response variableאינו רציף (ספירות,
פרופורציות ,בינארי וכו') -או כשהנחות המבחנים הפרמטרים
(התפלגות נורמלית ,שיוויון שונויות) אינן מתקיימות
GLMמורכב שלושה חלקים:
1. linear predictor; 2. link function; 3. error distribution
הראשון הוא ערך הפרמטר ,השני מדבר על טרנספורמציה (למשל הוא ”“identity
כשאין טרנספורמציה ו ” “logעבור טרנספורמציה לוגריתמית) והשלישי אומר מה
התפלגות ה – residualsלמשל גאמא ,פואסון או נורמלית .במקרה הפרטי בו
link=identityו error=normalה GLMזהה למודל לינארי "רגיל"
Generalized linear models (GLM)
:מורכב שלושה חלקים
1. linear predictor; 2. link function; 3. error distribution
“identity” השני מדבר על טרנספורמציה (למשל הוא,הראשון הוא ערך הפרמטר
“ עבור טרנספורמציה לוגריתמית) והשלישי אומר מהlog” כשאין טרנספורמציה ו
במקרה הפרטי בו. פואסון או נורמלית, – למשל גאמאresiduals התפלגות ה
" זהה למודל לינארי "רגילGLM- הerror=normal- וlink=identity
model4<-glm(clutch~log10(SVL)+asin(elevation),family=Gamma)
Log link
arcsin link
Gamma errors
Non-linear models
לעיתים ברור שהיחס בין ה predictor
ל responseאינו לינארי.
))model2<-lm(y~x+I(x^2
ניתן לבחון מודלים שיודעים להתמודד עם מבנה כזה – למשל לעיתים
קרובות משלבים משוואה ריבועית ( )quadraticבמודל:
Response = a(predictor)2+b(predictor)+c
וכרגיל אפשר לבדוק אם המודל הקוואדרטי טוב מהמודל
הלינארי על ידי AICאו על ידי anova
Non-linear models
. אינו לינאריresponse לpredictor לעיתים ברור שהיחס בין ה
breakpoint ( ניתן לבחון מודלים
) בהם יש משוואותregression
לינאריות שונות לערכים שונים של ה
predictor
Y = A1.x + K1
for x < breakpoint
Y = A2.x + K2
for x > breakpoint
Losos & Schluter 2000. Analysis of an evolutionary species-area relationship.
Nature 408: 847-850.
: בכל עבודה,זיכרו
"No statistical procedure can substitute for
serious thinking about alternative
evolutionary scenarios and their credibility"
Westoby, Leishman & Lord 1995. On misinterpreting 'phylogenetic correction. J. of Ecology 83: 531-534.