INTRODUCCIÓN

Anuncio
INTRODUCCIÓN Velocidad de doce reacciones enzimáticas:
> y <- c( 47, 97, 123, 152, 191, 200, 76, 107, 139, 159, 201, 207 )
> n <- length(y)
> ### Sobre la velocidad de reacción: la media ¿por qué la media?
> my <- mean(y)
> sd.y <- sd(y)
> se.my <- sd(y)/sqrt(n)
> alfa <- 0.05
> confianza <- 1-alfa
> ### IC Wald para la media: normal asintótico ###
> ic.inf.my <- mean(y) - qnorm(1-alfa/2)*se.my
> ic.sup.my <- mean(y) + qnorm(1-alfa/2)*se.my
> ### ¿Hipótesis?
> ### IC t-student para la media ###
> mean(y) - qt(1-alfa/2, n-1)*se.my
[1] 107.9306
> mean(y) + qt(1-alfa/2, n-1)*se.my
[1] 175.2361
> t.test( y ) ### calcula IC t para la media de y
One Sample t-test
data: y
t = 9.26, df = 11, p-value = 1.585e-06
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
107.9306 175.2361
sample estimates:
mean of x
141.5833
> cbind(n, my, se.my, ic.inf.my, ic.sup.my, confianza, sd.y)
n
my
se.my ic.inf.my ic.sup.my confianza
sd.y
[1,] 12 141.5833 15.28986 111.6158 171.5509
0.95 52.96561
>
>
+
+
>
>
x11()
plot( rep(1, length(y)), y, xlim=c(0,2), ylim=c(0, max(y)), xaxt='n',
pch=18, xlab="", ylab="velocidad de reacción",
main="media e IC para la media", cex.main=0.9 )
abline(v=1, lty=3)
abline(h=c(my, ic.inf.my, ic.sup.my), lty=3)
1
> ### ¿comodidad?
> m.lm <- lm( y ~ 1 )
### ¿null model?
> summary( m.lm )
Call:
lm(formula = y ~ 1)
Residuals:
Min
1Q Median
3Q
Max
-94.583 -37.083
3.917 51.667 65.417
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
141.58
15.29
9.26 1.59e-06 ***
Residual standard error: 52.97 on 11 degrees of freedom
> confint.default( m.lm )
2.5 %
97.5 %
(Intercept) 111.6158 171.5509
> confint( m.lm )
2.5 %
97.5 %
(Intercept) 107.9306 175.2361
100
50
0
velocidad de reacción
150
200
media e IC para la media
2
> ### ¿normalidad?
> ks.test( y, pnorm, my, sd.y )
One-sample Kolmogorov-Smirnov test
data: y
D = 0.1579, p-value = 0.8809
alternative hypothesis: two-sided
> shapiro.test( y )
Shapiro-Wilk normality test
data: y
W = 0.9408, p-value = 0.5081
> x11()
> qqnorm( (y-my)/sd.y )
> abline( 0, 1, lty=3 )
0.0
-0.5
-1.0
-1.5
Sample Quantiles
0.5
1.0
Normal Q-Q Plot
-1.5
-1.0
-0.5
0.0
0.5
1.0
1.5
Theoretical Quantiles
3
> ### bootstrap sobre la media
> ### inútil para estimar el error estándar
> R <- 5000
> set.seed( 57823 )
> MatrixBoot <- matrix(sample(y,R*n,replace=T), nrow=R, ncol=n)
> m.boot <- apply(MatrixBoot, 1, mean)
> length(m.boot)
[1] 5000
>
>
>
>
x11()
hist( m.boot, probability=T, breaks=50 )
abline( v=my, lty=2, col="blue" )
curve( dnorm(x,my,se.my), add=T, col="blue" )
> mean( m.boot ) ### esto es ¡INÚTIL!!!
[1] 141.6745
> sd( m.boot )
### esta estimación del se de la media es ¡INÚTIL!!
[1] 14.54795
> quantile( m.boot, c(0.025,0.05,0.5,0.95,0.975) )
2.5%
5%
50%
95%
97.5%
112.7479 117.1667 142.0833 165.0042 168.8354
> rug( quantile( m.boot, c(0.025,0.05,0.5,0.95,0.975) ) )
4
> ###################################################################
> ### Sobre la velocidad de reacción: diferencia entre dos grupos ###
> G <- as.factor( rep(c(0,1), 6) )
> g <- as.numeric( G ) ### numérica con valores 1,2
> data.frame(G, g, y) ### distinto de cbind(G, g, y)
G g
y
1 0 1 47
2 1 2 97
3 0 1 123
4 1 2 152
5 0 1 191
6 1 2 200
7 0 1 76
8 1 2 107
9 0 1 139
10 1 2 159
11 0 1 201
12 1 2 207
>
>
+
+
x11()
plot( g, y, xlim=c(0,3), ylim=c(0, max(y)), xaxt='n',
pch=18, xlab="", ylab="velocidad de reacción",
main="Velocidad de reacción de dos grupos", cex.main=0.9 )
> axis( 1, at=c(1, 2), lab=c("Grupo: 1", "Grupo: 2"), cex.axis=0.9 )
> abline(v=c(1,2), lty=3)
> my.1 <- tapply(y, g, mean)[1]
> my.2 <- tapply(y, g, mean)[2]
> points(c(1,2), c(my.1,my.2), pch=3, col="blue", lwd=2)
> abline( lm(y ~ g)$coef, lty=3)
### igual que lsfit(g, y)$coef
> cbind(n, my, my.1, my.2)
n
my my.1
my.2
1 12 141.5833 129.5 153.6667
> ### comparación de medias de ambos grupos
> t.test( y[g==1], y[g==2], var.equal=T )
Two Sample t-test
data: y[g == 1] and y[g == 2]
t = -0.7759, df = 10, p-value = 0.4558
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-93.56980 45.23647
sample estimates:
mean of x mean of y
129.5000 153.6667
> n1 <- length(y[g==1])
> s2.g1 <- var(y[g==1])
> n2 <- length(y[g==2])
> s2.g2 <- var(y[g==2])
5
> s2.tot <- ( (n1-1)*s2.g1 + (n2-1)*s2.g2 ) / (n1+n2-2)
> TT <- as.numeric( (my.1-my.2) /( sqrt(s2.tot)*sqrt( (1/n1)+(1/n2) ) ) )
> TT
[1] -0.7758538
>
> 2*( 1-pt( abs(TT), n1+n2-2 ) )
[1] 0.4557924
> ### Test F de igualdad de varianzas
> var.test( y[g==1], y[g==2] )
F test to compare two variances
data: y[g == 1] and y[g == 2]
F = 1.7957, num df = 5, denom df = 5, p-value = 0.5362
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.2512722 12.8326677
sample estimates:
ratio of variances
1.795687
> FF <- s2.g1 / s2.g2
> FF
[1] 1.795687
> 2*(1-pf( FF, 5, 5 ))
[1] 0.5361563
100
50
0
velocidad de reacción
150
200
Velocidad de reacción de dos grupos
Grupo: 1
Grupo: 2
6
> y.G.lm <- lm( y ~ G ) ### var explicativa factor 0, 1. ¿ANOVA un factor?
> summary( y.G.lm )
Call:
lm(formula = y ~ G)
Residuals:
Min
1Q
-82.500 -48.375
Median
1.833
3Q
48.083
Max
71.500
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
129.50
22.03
5.880 0.000155 ***
G1
24.17
31.15
0.776 0.455792
Residual standard error: 53.95 on 10 degrees of freedom
Multiple R-squared: 0.05678,
Adjusted R-squared: -0.03755
F-statistic: 0.6019 on 1 and 10 DF, p-value: 0.4558
> confint( y.G.lm )
2.5 %
97.5 %
(Intercept) 80.42457 178.5754
G1
-45.23647 93.5698
> g01 <- g-1 ### codificación 0,1 de los grupos: var explicativa numérica
> y.g01.lm <- lm( y ~ g01 ) ### igual que y.G.lm
7
> ### otra variable explicativa: xx ##################################
> ### supongamos que la respuesta media depende de xx (índice de condiciones
ambientales)
> xx <- c( 1, 3.5, 3.1, 5.5, 5.1, 7, 1.8, 4.2, 4, 6, 5.6, 8 )
>
>
+
+
x11()
plot( xx, y, pch=18, xlim=c(min(xx), max(xx)), ylim=c(0, max(y)),
xlab="var explicativa: xx", ylab="velocidad de reacción",
main="modelos: NULL, FULL, ¿lineal? E(Y/xx) = a + b*xx", cex.main=0.9 )
> abline( h=my, lty=3 ) ### NULL model
> lines( xx[order(xx)], y[order(xx)], lty=3 ) ### FULL model
> points( mean(xx), my, pch=3 )
> y.xx <- lm( y ~ xx )
### ¿regresión lineal?
> summary( y.xx )
Call:
lm(formula = y ~ xx)
Residuals:
Min
1Q Median
3Q
Max
-25.860 -16.371 -4.745 12.251 36.728
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
32.937
15.970
2.062
0.0661 .
xx
23.791
3.214
7.403 2.31e-05 ***
Residual standard error: 21.82 on 10 degrees of freedom
Multiple R-squared: 0.8457,
Adjusted R-squared: 0.8303
F-statistic: 54.81 on 1 and 10 DF, p-value: 2.306e-05
> abline( coef(y.xx) )
100
50
0
velocidad de reacción
150
200
modelos: NULL, FULL, ¿lineal? E(Y/xx) = a + b*xx
1
2
3
4
5
var explicativa: xx
6
7
8
8
> y.full <- lm( y ~ factor(xx) )
> summary( y.full )
### ¿full model?
Call:
lm(formula = y ~ factor(xx))
Residuals:
ALL 12 residuals are 0: no residual degrees of freedom!
Coefficients:
(Intercept)
factor(xx)1.8
factor(xx)3.1
factor(xx)3.5
factor(xx)4
factor(xx)4.2
factor(xx)5.1
factor(xx)5.5
factor(xx)5.6
factor(xx)6
factor(xx)7
factor(xx)8
Estimate Std. Error t value Pr(>|t|)
47
NA
NA
NA
29
NA
NA
NA
76
NA
NA
NA
50
NA
NA
NA
92
NA
NA
NA
60
NA
NA
NA
144
NA
NA
NA
105
NA
NA
NA
154
NA
NA
NA
112
NA
NA
NA
153
NA
NA
NA
160
NA
NA
NA
Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared:
1,
Adjusted R-squared:
F-statistic:
NaN on 11 and 0 DF, p-value: NA
NaN
> cbind( y, predict( y.full ) )
y
1
47 47
2
97 97
3 123 123
4 152 152
5 191 191
6 200 200
7
76 76
8 107 107
9 139 139
10 159 159
11 201 201
12 207 207
> xx2 <- xx^2
> y.xx2 <- lm( y ~ xx + xx2 )
> summary( y.xx2 )
### ¿regresión lineal?
Call:
lm(formula = y ~ xx + xx2)
Residuals:
Min
1Q Median
3Q
-30.786 -16.148
2.327
8.026
Max
32.281
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
12.312
28.337
0.434
0.6742
xx
35.324
13.421
2.632
0.0273 *
xx2
-1.297
1.465 -0.886
0.3989
Residual standard error: 22.06 on 9 degrees of freedom
Multiple R-squared: 0.8581,
Adjusted R-squared: 0.8265
F-statistic: 27.21 on 2 and 9 DF, p-value: 0.0001529
9
> anova( y.xx, y.xx2 )
Analysis of Variance Table
Model 1:
Model 2:
Res.Df
1
10
2
9
y ~ xx
y ~ xx + xx2
RSS Df Sum of Sq
F Pr(>F)
4761.5
4379.8 1
381.7 0.7843 0.3989
### ¿mejor modelo?
> ####################################################################
> ### ¿efecto de G?
>
>
+
+
x11()
plot(xx[g==1],y[g==1],pch="1",xlim=c(min(xx), max(xx)), ylim=c(0, max(y)),
xlab="var explicativa: xx", ylab="velocidad de reacción",
main="dos modelos para E(Y/xx,G)", cex.main=0.9 )
> points(xx[g==2],y[g==2],pch="2")
> points( mean(xx[g==1]), my.1, pch=3, lwd=2 )
> points( mean(xx[g==2]), my.2, pch=3, lwd=2 )
> y.xx.G <- lm( y ~ xx + G )
> summary( y.xx.G )
### ¿ ANCOVA ¿
Call:
lm(formula = y ~ xx + G)
Residuals:
Min
1Q
-16.551 -4.833
Median
1.269
3Q
5.959
Max
10.859
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
25.180
6.865
3.668 0.00517 **
xx
30.384
1.670 18.196 2.09e-08 ***
G1
-44.705
6.546 -6.829 7.65e-05 ***
Residual standard error: 9.251 on 9 degrees of freedom
Multiple R-squared: 0.975,
Adjusted R-squared: 0.9695
F-statistic: 175.8 on 2 and 9 DF, p-value: 6.134e-08
> a <- y.xx.G$coef[1]
> bx <- y.xx.G$coef[2]
> bG <- y.xx.G$coef[3]
> abline(a, bx, lty=3)
> abline(a+bG, bx, lty=3)
> anova( y.xx, y.xx.G )
Analysis of Variance Table
Model 1: y ~ xx
Model 2: y ~ xx + G
Res.Df
RSS Df Sum of Sq
F
Pr(>F)
1
10 4761.5
2
9 770.3 1
3991.2 46.633 7.653e-05 ***
10
> ### interacción xx*G
> y.xx.G.inter <- lm( y ~ xx * G )
> summary( y.xx.G.inter )
Call:
lm(formula = y ~ xx * G)
Residuals:
Min
1Q
-9.5030 -3.6579
Median
0.1873
3Q
Max
3.9284 11.5904
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
14.364
6.774
2.121
0.0668 .
xx
33.535
1.777 18.875 6.42e-08 ***
G1
-13.032
13.179 -0.989
0.3517
xx:G1
-6.809
2.612 -2.607
0.0313 *
Residual standard error: 7.215 on 8 degrees of freedom
Multiple R-squared: 0.9865,
Adjusted R-squared: 0.9814
F-statistic: 194.9 on 3 and 8 DF, p-value: 8.121e-08
> pred0 <- predict( y.xx.G.inter, list(xx=c(1,8), G=c("0","0")) )
Mensajes de aviso perdidos
In model.frame.default(Terms, newdata, na.action = na.action, xlev =
object$xlevels) :
character variable 'G' changed to a factor
> lines(c(1,8), pred0, col="red", lwd=2)
> pred1 <- predict( y.xx.G.inter, list(xx=c(1,8), G=c("1","1")) )
> lines(c(1,8), pred1, col="blue", lwd=2)
> anova( y.xx, y.xx.G, y.xx.G.inter )
Analysis of Variance Table
Model 1:
Model 2:
Model 3:
Res.Df
1
10
2
9
3
8
y ~ xx
y ~ xx + G
y ~ xx * G
RSS Df Sum of Sq
F
Pr(>F)
4761.5
770.3 1
3991.2 76.6653 2.267e-05 ***
416.5 1
353.8 6.7961
0.03128 *
> library( MASS )
> stepAIC( y.xx.G.inter )
Start: AIC=50.56
y ~ xx * G
Df Sum of Sq
<none>
- xx:G
1
RSS
AIC
416.49 50.563
353.81 770.30 55.942
Call:
lm(formula = y ~ xx * G)
Coefficients:
(Intercept)
14.364
xx
33.535
G1
-13.032
xx:G1
-6.809
11
200
dos modelos para E(Y/xx,G)
2
1
2
1
1
1
100
2
2
50
1
1
0
velocidad de reacción
150
2
2
1
2
3
4
5
6
7
8
var explicativa: xx
12
El Problema El problema es explicar el comportamiento de la velocidad de una reacción enzimática, al cambiar la concentración de puromicina en el sustrato en el que tiene lugar la reacción. Se dispone de dos observaciones diferentes para cada una de seis dosis de puromicina: cp <- c(0.02, 0.06, 0.11, 0.22, 0.56, 1.10) ### concentracion de puromycina
v1 <- c(47, 97, 123, 152, 191, 200) ### velocidad de reaccion bajo cp
v2 <- c(76, 107, 139, 159, 201, 207) ### velocidad de reaccion bajo cp
150
100
50
0
y: velocidad de reacción
200
Datos y modelos Null y Full
0.0
0.2
0.4
0.6
0.8
1.0
1.2
x: concentración de puromicina
13
Descargar