You are on page 1of 23

## Comandos de R en negrita, resultados en normal

## Se puede tener un "feeling" inicial de R usándolo como una calculadora


2*11.5
[1] 23
3.6/1.5
[1] 2.4

## Asignación de resultados a objetos


producto<-2*11.5
producto
[1] 23
cociente<-3.6/1.5
cociente
[1] 2.4

## Funciones
sqrt(1.5)
[1] 1.224745
log(103)
[1] 4.634729
log10(103)
[1] 2.012837
exp(4.63)
[1] 102.5141

## Concatenación de vectores
10.4,5.6,3.1,6.4,21.7
Error: inesperado ',' in "10.4,"
c(10.4,5.6,3.1,6.4,21.7)
[1] 10.4 5.6 3.1 6.4 21.7
x<-c(10.4,5.6,3.1,6.4,21.7)
x
[1] 10.4 5.6 3.1 6.4 21.7

## Operaciones y Funciones con vectores


2+x
[1] 12.4 7.6 5.1 8.4 23.7
1/x
[1] 0.09615385 0.17857143 0.32258065 0.15625000 0.04608295
mean(x)
[1] 9.44
length(x)
[1] 5
sum(x)
[1] 47.2
mean(x)
[1] 9.44
sd(x)
[1] 7.33846
var(x)
[1] 53.853
sort(x)
[1] 3.1 5.6 6.4 10.4 21.7

## Programación de funciones en R
## Varianza
sum((x-mean(x))^2)/(length(x)-1)
[1] 53.853
## Media geométrica
med.geom1<-(prod(x))^(1/length(x))
med.geom1
[1] 7.583061
med.geom2<-exp(mean(log(x)))
med.geom2
[1] 7.583061
install.packages(“psych”)
library(psych)
geometric.mean(x)
[1] 7.583061

## Generación de funciones en R
med.geom<-function(y){
+ result<-exp(mean(log(y)))
+ return(result)
+ }
y<-c(1,2,3,4,5,6)
med.geom(y)
[1] 2.993795

## Generación de muestras aleatorias en R


## Tomemos una muestra aleatoria n=15 sin reemplazo de una población
## N=100
sample(100,15,replace=F)
[1] 39 84 6 3 25 14 48 22 9 64 19 66 16 73 93
round(runif(15,1,100),digits=0)
[1] 87 47 42 33 55 95 23 24 34 73 81 62 95 81 15
library(sampling)
muestra<-srswor(15,100)
(1:100)[muestra==1]
[1] 13 14 21 25 28 40 45 47 63 66 75 76 80 81 98

## Tamaño de muestra para la estimación de una media, con una precisión


## de 0.3, con una 2 de 0.52 y un nivel de confianza de 0.95
Install.packages(“samplingbook”)
library(samplingbook)
sample.size.mean(e=0.3,S=sqrt(0.52),level=0.95)
sample.size.mean object: Sample size for mean estimate
Without finite population correction: N=Inf, precision e=0.3 and standard
deviation S=0.7211
Sample size needed: 23

## Tamaño de muestra para la estimación de una proporción con una


## precisión de 0.05 y una proporción referencial de 0.21
sample.size.prop(e=0.05,P=0.21)
sample.size.prop object: Sample size for proportion estimate
Without finite population correction: N=Inf, precision e=0.05 and
expected proportion P=0.21
Sample size needed: 255

## Tamaño de muestra para la detección de una proporción con un límite de


## detección de 0.001, un nivel de confianza de 0.95 y a partir de una
## población de 7650.
## Aproximacion ##binomial
install.packages("RSurveillance")
library(RSurveillance)
n.binom(sep=0.95,pstar=0.001)
[1] 2995
## Aproximación hipergeométrica. d=N*pstar ##(redondeado)
n.hypergeo(sep=0.95,N=7650,d=8)
[1] 2390

## Prueba de hipótesis para una media: Una sola muestra. Ho:=0.5


peso<-c(0.530,0.625,0.719,0.250,0.063,0.125,0.563,0.594,0.375,0.750,
0.813,0.594,0.403,0.438,0.688,0.813,0.531,0.656,0.410,0.781,
0.656,0.844,0.281,0.219,0.813,0.406,0.469,0.840,0.719,0.969,
0.313,0.656,1.125,0.531,0.625,0.719,0.630,0.906,0.563,1.313,
0.688,0.438,0.750,0.313,0.188,1.220,0.469,0.781,0.781,0.531,
0.125,0.625,0.813,0.594,0.719,0.781,1.000,0.313,0.750,0.625,
0.344,0.500,0.469,0.688,0.938,0.625,1.156,0.750,0.438,0.906,
0.625,0.219,0.813,0.813,0.813,0.656,0.531,0.406,0.500,0.625,
0.313,0.531,0.625,0.750,1.156,0.875,1.000,0.500,0.063,0.188,
1.188,0.906,0.969,0.938,0.344,0.281,0.969,0.781,0.344)
t.test(peso,mu=0.5,conf.level=0.95)
One Sample t-test
data: peso
t=4.8115,df=98, p-value=5.432e-06
alternative hypothesis: true mean is not equal to 0.5
95 percent confidence interval:
0.5763111 0.6834465
sample estimates:
mean of x
0.6298788
## Prueba de hipótesis para proporciones: Una sola muestra.
## Ho:=0.724
prop.test(x=275,n=425,p=0.724,correct=F)
1-sample proportions test without continuity correction
data: 275 out of 425, null probability 0.724
X-squared=12.591, df=1, p-value=0.0003876
alternative hypothesis: true p is not equal to 0.724
95 percent confidence interval:
0.6004927 0.6909903
sle estimates:
p
0.6470588
## Noten que la prueba por defecto es la del Score y que se usa como
## estadístico chi-cuadrado (z2)
##Cuando la muestra es pequeña puede ser preferible usar una prueba
## exacta (binomial):
binom.test(x=275,n=425,p=0.724)
Exact binomial test
data: 275 and 425
number of successes = 275, number of trials = 425, p-value = 0.0005065
alternative hypothesis: true probability of success is not equal to 0.724
95 percent confidence interval:
0.5995475 0.6925064
sample estimates:
probability of success
0.6470588

## Intervalo de confianza para proporciones. Una sola muestra


## Existen varias funciones en R que pueden calcular IC para una
## proporción. Uno de los más comunes es binom.confint. Para el ejemplo
## anterior:
binom.confint(275,425)
method x n mean lower upper
1 agresti-coull 275 425 0.6470588 0.6004737 0.6910093
2 asymptotic 275 425 0.6470588 0.6016253 0.6924924
3 bayes 275 425 0.6467136 0.6012187 0.6918229
4 cloglog 275 425 0.6470588 0.5995874 0.6904078
5 exact 275 425 0.6470588 0.5995475 0.6925064
6 logit 275 425 0.6470588 0.6004144 0.6910600
7 probit 275 425 0.6470588 0.6006775 0.6913508
8 profile 275 425 0.6470588 0.6008395 0.6915103
9 lrt 275 425 0.6470588 0.6008451 0.6914917
10 prop.test 275 425 0.6470588 0.5992930 0.6921221
11 wilson 275 425 0.6470588 0.6004927 0.6909903

## Noten que el IC asintótico es el IC Wald, el exacto es el IC Clopper-


## Pearson y el de Wilson es el IC Score.
## Cálculo de coeficientes de asociación para tablas 2  2
## Diferencia de proporciones:
prop.test(x=c(130,35),n=c(336,151),correct=F)
2-sample test for equality of proportions without continuity
correction
data:c(130,35) out of c(336,151)
X-squared=11.19,df=1,p-value=0.0008225
alternative hypothesis:two.sided
95 percent confidence interval:
0.07001719 0.24021618
sample estimates:
prop 1 prop 2
0.3869048 0.2317881
## Coeficiente Q de Yule. Primero ponemos los datos en una matriz
## “diarrea”
Diarrea<-matrix(c(130,35,206,116),
nrow=2,ncol=2,dimnames=list(c("posit",“neg"),
c("si","no")))
Yule(diarrea),Y=F)
[1] 0.3530731
## Razón de chances (OR)
## Existen varias versiones. Una de las más simples está en el paquete
## fmsb
install.packages("fmsb")
library(fmsb)
oddsratio(130,35,206,116)
Disease Nondisease Total
Exposed 130 206 336
Nonexposed 35 116 151
Total 165 322 487
Odds ratio estimate and its significance probability
data: 130 35 206 116
p-value = 0.0008327
95 percent confidence interval:
1.350919 3.238193
sample estimates:
[1] 2.09154
## Sólo noten la sencuencia de las frecuencias en el comando: (casos
## expuestos,casos no expuestos,controles expuestos,controles no
## expuestos)
## Riesgo relativo (RR)
riskratio(130,35,336,151)
Disease Nondisease Total
Exposed 130 206 336
Nonexposed 35 116 151
Risk ratio estimate and its significance probability
data: 130 35 336 151
p-value = 0.0008327
95 percent confidence interval:
1.212039 2.298843
sample estimates:
[1] 1.669218
## Noten las diferencia de las frecuencias en el comando: (casos
## expuestos,casos no expuestos,total casos, total controles)

## Cálculo de coeficientes de asociación para tablas I  J: Nominales


## Reconstruimos la tabla del ejemplo de la diapositiva:
pildora<-c(228,131,117,210)
esteril<-c(108,226,256,109)
condon<-c(111,103,112,144)
larc<-c(89,104,60,70)
contracep<-cbind(pildora,esteril,condon,larc)
rownames(contracep)<-c("blanca","hisp","negra","otra")
contracep
pildora esteril condon larc
blanca 228 108 111 89
hisp 131 226 103 104
negra 117 256 112 60
otra 210 109 144 70
## V de Cramer
install.packages("lsr")
library(lsr)
cramersV(contracep)
[1] 0.1656109
##  de Goodman-Kruskal
install.packages("DescTools")
library(DescTools)
Lambda(contracep,direction=c("row"))
[1] 0.1040892
## Coeficiente de contingencia, C de Pearson
install.packages("vcd")
library(vcd)
assocstats(contracep)
Contingency Coeff.: 0.276

## Cálculo de coeficientes de asociación para tablas I  J: Ordinales


## Reconstruimos la tabla del ejemplo de la diapositiva:
ning<-c(9,1,2)
leve<-c(17,8,4)
mod<-c(0,2,17)
sev<-c(0,4,73)
machuca<-cbind(ning,leve,mod,sev)
rownames(machuca)<-c("lev","mod","sev")
machuca
ning leve mod sev
lev 9 17 0 0
mod 1 8 2 4
sev 2 4 17 73
##  de Goodman-Kruskal
install.packages("vcdExtra")
library(vcdExtra)
GKgamma(machuca)
gamma : 0.908
## -C de Stuart
StuartTauC(machuca)
[1] 0.5423304
## d de Sommers
install.packages("ryouready")
library(ryouready)
ord.somers.d(machuca)
Somers' d:
Rows dependent: 0.590

## Coeficientes de concurrencia para variables categóricas


## de Cohen. Dos criterios de calificación
elisahi<-matrix(c(14,15,37,237),2,2)
elisahi
[,1] [,2]
[1,] 14 37
[2,] 15 237
Kappa.test(elisahi)
sample estimates:
[1] 0.259656
##  de Cohen. Varios criterios de calificación
derm<-matrix(c(10,5,2,0,4,10,4,2,1,12,12,6,0,2,5,13),4,4)
derm
[,1] [,2] [,3] [,4]
[1,] 10 4 1 0
[2,] 5 10 12 2
[3,] 2 4 12 5
[4,] 0 2 6 13
Kappa.test(derm)
sample estimates:
[1] 0.3448753
## Coeficientes de asociación y concurrencia para variables continuas
## Coeficiente de correlación de Pearson
peso<-c(641,620,633,651,640,666,650,688,680,670)
peri<-c(205,212,213,216,216,217,218,219,221,226)
cor(peso,peri)
[1] 0.6743691
## Coeficiente de correlación de Spearman
cor(peso,peri,method=c("spearman"))
[1] 0.8267515

## Secuencia analítica para concurrencia para variables continuas


## Coeficiente de correlación de Pearson
wright<-c(494,395,516,434,476,557,413,442,650,433,417,656,267,
478,178,423,427)
minifl<-c(512,430,520,428,500,600,364,380,658,445,432,626,260,
477,259,350,451)
cor.test(wright,minifl)
Pearson's product-moment correlation
data: wright and minifl
t = 11.004, df = 15, p-value = 1.4e-08
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.8463588 0.9797313
sample estimates:
cor
0.9432794
## Prueba que la media de las diferencias entre las observaciones
## pareadas es cero
t.test(wright,minifl,mu=0,paired=TRUE)
Paired t-test
data: wright and minifl
t = -0.22524, df = 16, p-value = 0.8246
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-22.04884 17.81354
sample estimates:
mean of the differences
-2.117647
## Análisis de regresión con Ho:b0=0 y b1=1
reg<-lm(minifl~wright)
linearHypothesis(reg,hypothesis.matrix=c(1,0),rhs=0)
Linear hypothesis test
Hypothesis:
(Intercept)=0
Model 1: restricted model
Model 2: minifl ~ wright
Res.Df RSS Df Sum of Sq F Pr(>F)
1 16 24119
2 15 22565 1 1554.2 1.0331 0.3255
linearHypothesis(reg,hypothesis.matrix=c(0,1),rhs=1)
Linear hypothesis test
Hypothesis:
wright = 1
Model 1: restricted model
Model 2: minifl ~ wright
Res.Df RSS Df Sum of Sq F Pr(>F)
1 16 24044
2 15 22565 1 1478.7 0.983 0.3372

## Secuencia gráfica para la concurrencia de variables contínuas


## Diagrama de dispersión alrededor de la línea y=x
> plot(wright,minifl,xlim=c(100,600),ylim=c(100,600))
> abline(0,1)

##Diagrama de Bland & Altman


install.packages("BlandAltmanLeh")
library(BlandAltmanLeh)
bland.altman.plot(wright,minifl,xlab="medias",ylab="diferencias",
conf.int=0.95,silent=FALSE)
$means
[1] 503.0 412.5 518.0 431.0 488.0 578.5 388.5 411.0 654.0 439.0 424.5
641.0
[13] 263.5 477.5 218.5 386.5 439.0
$diffs
[1] -18 -35 -4 6 -24 -43 49 62 -8 -12 -15 30 7 1 -81 73 -24
$groups
group1 group2
1 494 512
2 395 430
3 516 520
4 434 428
5 476 500
6 557 600
7 413 364
8 442 380
9 650 658
10 433 445
11 417 432
12 656 626
13 267 260
14 478 477
15 178 259
16 423 350
17 427 451
$based.on
[1] 17
$lower.limit
[1] -78.0973
$mean.diffs
[1] -2.117647
$upper.limit
[1] 73.86201
$lines
lower.limit mean.diffs upper.limit
-78.097302 -2.117647 73.862007
$CI.lines
lower.limit.ci.lower lower.limit.ci.upper mean.diff.ci.lower
-112.61914 -43.57547 -22.04884
mean.diff.ci.upper upper.limit.ci.lower upper.limit.ci.upper
17.81354 39.34017 108.38384
$two
[1] 1.96
$critical.diff
[1] 75.97965
## Tamaño de muestra para una tabla de contingencia. Ejemplo de
## hemorragia en caballos de carrera con relación al sexo.
## Prueba de chi-cuadrado para la tabla de contingencia.
dat<-matrix(c(47,56,28,41),ncol=2);dat
[,1] [,2]
[1,] 47 28
[2,] 56 41
chisq.test(dat,correct=FALSE)
Pearson's Chi-squared test
data: dat
X-squared = 0.42874, df = 1, p-value = 0.5126
## Curva de poder vs tamaño de muestra para chi-cuadrado
## La curva muestra que se necesitan más de 3000 observaciones para
## poder=0.8
install.packages("pwr")
library(pwr)
ssize<-seq(100,4000,25)
ns<-length(ssize)
pow=NULL
for(i in 1:ns) {
result<-pwr.chisq.test(w=0.050135,N=ssize[i],df=1,sig.level=0.05)
pow[i]=result$power
}
plot(ssize,pow,type="l",lwd=3,col="blue",ylab="Poder",
xlab="Tamaño de muestra")
title("Tamaño de muestra y poder de la prueba\n Chi cuadrado (0.05)")
abline(h=0.8)

## Tamaño de muestra para una diferencia de proporciones


## Ejemplo de vacuna para polio paralítica
power.prop.test(p1=0.0003,p2=0.00015,power=0.9,sig.level=0.05)
Two-sample comparison of proportions power calculation
n = 210099.1
p1 = 3e-04
p2 = 0.00015
sig.level = 0.05
power = 0.9
alternative = two.sided
NOTE: n is number in *each* group
## Ejemplo caso control. Se busca el tamaño de muestra apropiado para
## detectar como significativo un OR2, con un poder de prueba de 0.9, un
## nivel de significación de 0.05 y sabiendo que la proporción de
## controles expuestos es 0.2.
OR<-2
p2<-0.2
p1<-p2*OR/(1+p2*(OR-1));p1
[1] 0.3333333
power.prop.test(p1=0.333,p2=0.2,power=0.9,sig.level=0.05)
Two-sample comparison of proportions power calculation
n = 230.1468
p1 = 0.333
p2 = 0.2
sig.level = 0.05
power = 0.9
alternative = two.sided
NOTE: n is number in *each* group

## Tamaño de muestra para kappa de Cohen


## Estimar el número necesario de sujetos a evaluar por 2 evaluadores con
## una calificación dicotómica. La concurrencia a detectar es =0.7. La
## concurrencia bajo la Ho es =0.4. La proporción estimada de positivos
## es 0.5. Poder de la prueba=0.8, =0.05
install.packages("kappaSize")
library(kappaSize)
PowerBinary(kappa0=0.4,kappa1=0.7,props=0.5,alpha=0.05,power=0.8)
A minimum of 74 subjects are required for this study of interobserver
agreement.

## Tamaño de muestra para el coeficiente de correlación de Pearson


## Tamaño de muestra apropiado para rechazar la H o:=0 con un poder de la
## prueba de 0.9, un =0.05 para un r de 0.67
pwr.r.test(r=0.67,sig.level=0.05,power=0.90)
approximate correlation power calculation (arctangh transformation)
n = 18.31381
r = 0.67
sig.level = 0.05
power = 0.9
alternative = two.sided

## Prueba de hipótesis para variables categóricas nominales


## Ejemplo V de Cramer para la asociación entre zonas de trabajo y la
## especialidad de una muestra de médicos:
dat<-matrix(c(20,6,4,10,18,22,6,19,12,15,14,23,17,13,11,40),ncol=4)
colnames(dat)<-c("A","B","C","D")
rownames(dat)<-c("Norte","Sur","Este","Oeste")
dat.table<-as.table(dat);dat.table
A B C D
Norte 20 18 12 17
Sur 6 22 15 13
Este 4 6 14 11
Oeste 10 19 23 40
chisq.test(dat.table)
Pearson's Chi-squared test
data: dat.table
X-squared = 27.272, df = 9, p-value = 0.001261
cramersV(dat.table)
[1] 0.190689

##Prueba de hipótesis para variables categóricas ordinales


## Ejemplo  de Goodman-Kruskal para la asociación entre síntomas del
## tracto urinario bajo y disfunción eréctil.
disf<-matrix(c(9,1,2,17,8,4,0,2,17,0,4,73),ncol=4)
colnames(disf)<-c("sin","leve","moderada","severa")
rownames(disf)<-c("leve","moderada","severa")
dat.disf<-as.table(disf);dat.disf
sin leve moderada severa
leve 9 17 0 0
moderada 1 8 2 4
severa 2 4 17 73
GKgamma(disf,level=0.95)
gamma : 0.908
std. error : 0.035
CI : 0.839 0.978
## La asociación es fuerte y estadísticamente significativa (el CI no
contiene a 0)

## Prueba de hipótesis para variables continuas


## Ver el ejemplo de r para concurrencia entre métodos (Flujómetro de
## Wrigth vs miniflujómetro.

## Intervalos de confianza en hipótesis asociativas: variables


## categóricas
## Para la V de Cramer
dat<-matrix(c(20,6,4,10,18,22,6,19,12,15,14,23,17,13,11,40),ncol=4)
colnames(dat)<-c("A","B","C","D")
rownames(dat)<-c("Norte","Sur","Este","Oeste")
dat.table<-as.table(dat);dat.table
A B C D
Norte 20 18 12 17
Sur 6 22 15 13
Este 4 6 14 11
Oeste 10 19 23 40
CramerV(dat,conf.level=0.95)
Cramer V lwr.ci upr.ci
0.1906890 0.0766669 0.2370915
## Para la  de Goodman-Kruskal ver el ejemplo anterior sobre síntomas
## del tracto urinario bajo y disfunción eréctil
## Para el OR (ejemplo de factores de riesgo de endoparasitismo en
## perros)
library(epiR)
dat<-matrix(c(578,210,2139,3528),ncol=2)
colnames(dat)<-c("casos","controles")
rownames(dat)<-c("<0.5-3",">3-15")
dat.table<-as.table(dat);dat.table
casos controles
<0.5-3 578 2139
>3-15 210 3528
epi.2by2(dat,method="case.control",conf.level=0.95)
Outcome + Outcome - Total Prevalence *
Odds
Exposed + 578 2139 2717 21.27
0.2702
Exposed - 210 3528 3738 5.62
0.0595
Total 788 5667 6455 12.21
0.1391

Point estimates and 95 % CIs:


-------------------------------------------------------------------
Odds ratio (W) 4.54 (3.84, 5.36) 
Attrib prevalence * 15.66 (13.95, 17.36)
Attrib prevalence in population * 6.59 (5.50, 7.68)
Attrib fraction (est) in exposed (%) 77.97 (73.91, 81.44)
Attrib fraction (est) in population (%) 57.19 (51.85, 61.94)
-------------------------------------------------------------------
X2 test statistic: 359.815 p-value: < 0.001
Wald confidence limits
* Outcomes per 100 population units
## Para el RR (ejemplo de hipertensión en gatos con enfermedad renal
## crónica)
data<-matrix(c(27,9,133,124),ncol=2)
colnames(data)<-c("hipertensos","normotensos")
rownames(data)<-c("con ERC","sin ERC")
data.table<-as.table(data);data.table
hipertensos normotensos
con ERC 27 133
sin ERC 9 124
epi.2by2(data,method="cohort.count",conf.level=0.95)
Outcome + Outcome - Total Inc risk *
Odds
Exposed + 27 133 160 16.88
0.2030
Exposed - 9 124 133 6.77
0.0726
Total 36 257 293 12.29
0.1401

Point estimates and 95 % CIs:


-------------------------------------------------------------------
Inc risk ratio 2.49 (1.22, 5.12) 
Odds ratio 2.80 (1.27, 6.18)
Attrib risk * 10.11 (2.90, 17.31)
Attrib risk in population * 5.52 (-0.17, 11.21)
Attrib fraction in exposed (%) 59.90 (17.74, 80.45)
Attrib fraction in population (%) 44.92 (5.41, 67.93)
-------------------------------------------------------------------
X2 test statistic: 6.886 p-value: 0.009
Wald confidence limits
* Outcomes per 100 population units

## Intervalos de confianza para hipótesis asociativas: variables


## continuas
## Ver el ejemplo de r para concurrencia entre métodos (Flujómetro de
## Wrigth vs miniflujómetro.

## Hipótesis causales: Tratamientos no estructurados: Variables


## categóricas
##Test omnibus chi-cuadrado para todos los grupos
dat1<-matrix(c(19,43,34,31,30,33,24,39),ncol=4)
colnames(dat1)<-c("1","2","3","4")
rownames(dat1)<-c(">3 crías","<=3 crías")
dat1.table<-as.table(dat1);dat1.table
1 2 3 4
>3 crías 19 34 30 24
<=3 crías 43 31 33 39
chisq.test(dat1.table,correct=FALSE)
Pearson's Chi-squared test
data: dat1.table
X-squared = 7.3048, df = 3, p-value = 0.06279
## Test para determinar si existen diferencias entre las poblaciones 2,3
## y 4
## Noten que se está obteniendo el p-valor con 2 y no con 3 GL
dat2<-matrix(c(34,31,30,33,24,39),ncol=3)
colnames(dat2)<-c("2","3","4")
rownames(dat2)<-c(">3 crías","<=3crías")
dat2.table<-as.table(dat2);dat2.table
2 3 4
>3 crías 34 30 24
<=3crías 31 33 39
chisq.test(dat2.table,correct=FALSE)
Pearson's Chi-squared test
data: dat2.table
X-squared = 2.6913, df = 2, p-value = 0.2604
## Para obtener el p-valor con 3 GL
p_valor<-(1-(pchisq(2.6913,df=3)));p_valor
[1] 0.4417078
## Test para determinar si la población 1 difiere de las 2,3 y 4
## Noten que se está determinando el p-valor con 1 GL y no con 3
dat3<-matrix(c(19,43,88,103),ncol=2);
colnames(dat3)<-c("1","2,3,4")
rownames(dat3)<-c(">3 crías","<=3 crías")
dat3.table<-as.table(dat3);dat3.table
1 2,3,4
>3 crías 19 88
<=3 crías 43 103
chisq.test(dat3.table,correct=FALSE)
Pearson's Chi-squared test
data: dat3.table
X-squared = 4.5649, df = 1, p-value = 0.03263
## Para obtener el p-valor con 3 GL
p_valor<-(1-(pchisq(4.5649,df=3)));p_valor
[1] 0.2065739
## Una alternativa es hacer una comparación múltiple de proporciones
## usando el procedimiento de ajuste del error  de Holm
prolif<-c(19,34,30,24)
total<-c(62,65,63,63)
pairwise.prop.test(prolif,total)
Pairwise comparisons using Pairwise comparison of proportions
data: prolif out of total
1 2 3
2 0.13 - -
3 0.39 1.00 -
4 1.00 0.60 1.00
P value adjustment method: holm
## Podemos usar el procedimiento con otro tipo de ajuste del error alfa
pairwise.prop.test(prolif,total,p.adjust.method=c("bonferroni"))
Pairwise comparisons using Pairwise comparison of proportions
data: prolif out of total
1 2 3
2 0.13 - -
3 0.47 1.00 -
4 1.00 0.90 1.00
P value adjustment method: bonferroni
## O no usar ajuste alguno (Noten la diferencia)
pairwise.prop.test(prolif,total,p.adjust.method=c("none"))
Pairwise comparisons using Pairwise comparison of proportions
data: prolif out of total
1 2 3
2 0.022 - -
3 0.078 0.724 -
4 0.491 0.151 0.368
P value adjustment method: none

## Hipótesis causales: Tratamientos no estructurados: Variables


## continuas
## Datos de ejemplo de impurezas en fibra de alpaca de diferentes
## comunidades. Noten que aquí estamos importando los datos de un
## archivo de Excel llamado impurezas con extensión csv ubicado en la
## partición D en el directorio UNJBG
impurezas<-read.table("D:/UNJBG/impurezas.csv",header=TRUE,sep=",")
impurezas
com imp
1 A 41.8
2 A 38.9
3 A 36.1
4 B 33.0
5 B 32.6
6 B 33.1
7 C 38.8
8 C 35.9
9 C 33.9
10 D 43.7
11 D 38.9
12 D 40.1
13 E 34.2
14 E 38.6
15 E 40.2
16 F 32.6
17 F 33.4
18 F 30.7
19 G 36.2
20 G 33.4
21 G 37.9
## ANVA de una sola vía. Resultados asignados al objeto 'fit'
fit<-aov(imp~com,data=impurezas)
summary(fit)
Df Sum Sq Mean Sq F value Pr(>F)
com 6 174.73 29.12 5.473 0.00419 **
Residuals 14 74.49 5.32
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
## El paquete 'Agricolae' también efectúa comparaciones múltiples de
## medias,DLS sin corregir,DLS corregido por Bonferroni,Tukey
install.packages("agricolae")
library(agricolae)
out1<-LSD.test(fit,"com",p.adj="none");out1
$statistics
MSerror Df Mean CV t.value LSD
5.320476 14 36.38095 6.340174 2.144787 4.039371
$parameters
test p.ajusted name.t ntr alpha
Fisher-LSD none com 7 0.05
$means
imp std r LCL UCL Min Max Q25 Q50 Q75
A 38.93333 2.8501462 3 36.07707 41.78960 36.1 41.8 37.50 38.9 40.35
B 32.90000 0.2645751 3 30.04373 35.75627 32.6 33.1 32.80 33.0 33.05
C 36.20000 2.4637370 3 33.34373 39.05627 33.9 38.8 34.90 35.9 37.35
D 40.90000 2.4979992 3 38.04373 43.75627 38.9 43.7 39.50 40.1 41.90
E 37.66667 3.1069814 3 34.81040 40.52293 34.2 40.2 36.40 38.6 39.40
F 32.23333 1.3868429 3 29.37707 35.08960 30.7 33.4 31.65 32.6 33.00
G 35.83333 2.2722969 3 32.97707 38.68960 33.4 37.9 34.80 36.2 37.05
$comparison
NULL
$groups
imp groups
D 40.90000 a
A 38.93333 ab
E 37.66667 ab
C 36.20000 bc
G 35.83333 bc
B 32.90000 c
F 32.23333 c
attr(,"class")
[1] "group"
out2<-LSD.test(fit,"com",p.adj="bonferroni");out2
$statistics
MSerror Df Mean CV t.value MSD
5.320476 14 36.38095 6.340174 3.699229 6.96692
$parameters
test p.ajusted name.t ntr alpha
Fisher-LSD bonferroni com 7 0.05
$means
imp std r LCL UCL Min Max Q25 Q50 Q75
A 38.93333 2.8501462 3 36.07707 41.78960 36.1 41.8 37.50 38.9 40.35
B 32.90000 0.2645751 3 30.04373 35.75627 32.6 33.1 32.80 33.0 33.05
C 36.20000 2.4637370 3 33.34373 39.05627 33.9 38.8 34.90 35.9 37.35
D 40.90000 2.4979992 3 38.04373 43.75627 38.9 43.7 39.50 40.1 41.90
E 37.66667 3.1069814 3 34.81040 40.52293 34.2 40.2 36.40 38.6 39.40
F 32.23333 1.3868429 3 29.37707 35.08960 30.7 33.4 31.65 32.6 33.00
G 35.83333 2.2722969 3 32.97707 38.68960 33.4 37.9 34.80 36.2 37.05
$comparison
NULL
$groups
imp groups
D 40.90000 a
A 38.93333 ab
E 37.66667 ab
C 36.20000 ab
G 35.83333 ab
B 32.90000 b
F 32.23333 b
attr(,"class")
[1] "group"
out3<-HSD.test(fit,"com");out3
$statistics
MSerror Df Mean CV MSD
5.320476 14 36.38095 6.340174 6.43084
$parameters
test name.t ntr StudentizedRange alpha
Tukey com 7 4.828954 0.05
$means
imp std r Min Max Q25 Q50 Q75
A 38.93333 2.8501462 3 36.1 41.8 37.50 38.9 40.35
B 32.90000 0.2645751 3 32.6 33.1 32.80 33.0 33.05
C 36.20000 2.4637370 3 33.9 38.8 34.90 35.9 37.35
D 40.90000 2.4979992 3 38.9 43.7 39.50 40.1 41.90
E 37.66667 3.1069814 3 34.2 40.2 36.40 38.6 39.40
F 32.23333 1.3868429 3 30.7 33.4 31.65 32.6 33.00
G 35.83333 2.2722969 3 33.4 37.9 34.80 36.2 37.05
$comparison
NULL
$groups
imp groups
D 40.90000 a
A 38.93333 ab
E 37.66667 abc
C 36.20000 abc
G 35.83333 abc
B 32.90000 bc
F 32.23333 c
attr(,"class")
[1] "group"

## Hipótesis causales: Estructura Control-Tratamientos


## R tiene varios protocolos para evaluación de contrastes. Cada uno con
## ventajas y desventajas. Este es uno de los más convenientes.
## Para el ejemplo de soluciones con actividad estrogénica,noten que
## estamos obteniendo los datos de una archivo excel delimitado por
## comas:
uterino<-read.table("D:/UNJBG/Uterino.csv",header=TRUE,sep=",");uterino
Sol Put
1 ctrl 89.8
2 ctrl 93.8
3 ctrl 88.4
4 ctrl 112.6
5 sol1 84.4
6 sol1 116.0
7 sol1 84.0
8 sol1 68.6
9 sol2 64.4
10 sol2 79.8
11 sol2 88.0
12 sol2 69.4
13 sol3 75.2
14 sol3 62.4
15 sol3 62.4
16 sol3 73.8
17 sol4 88.4
18 sol4 90.2
19 sol4 73.2
20 sol4 87.8
21 sol5 56.4
22 sol5 83.2
23 sol5 90.4
24 sol5 85.6
25 sol6 65.6
26 sol6 79.4
27 sol6 65.6
28 sol6 70.2
## La siguiente función da a la variable 'Sol' que está en los datos
## ‘uterino’ la calidad de factor:
levels(uterino$Sol)
[1] "ctrl" "sol1" "sol2" "sol3" "sol4" "sol5" "sol6"
## Proponemos la matriz de coeficientes de los contrastes. Estos van en
## columnas. Llamaremos a la matriz ‘con’ con 7 filas y dos columnas.
## Noten que estamos evaluando los dos contrastes simultáneamente:
con<-matrix(c(-1,0,0,1,0,0,0,0,1,-1,0,1,0,-1),7,2);con
[,1] [,2]
[1,] -1 0
[2,] 0 1
[3,] 0 -1
[4,] 1 0
[5,] 0 1
[6,] 0 0
[7,] 0 -1
##‘Internalizamos’ la matriz de contrastes en la variable 'Sol':
contrasts(uterino$Sol)<-con
## Ejecutamos el ANVA ('aov'),donde la variable de respuesta es 'Put' y
## la variable independiente es 'Sol', a partir de los datos 'uterino'.
## Almacenamos el resultado del ANVA en el objeto 'mod':
mod<-aov(Put~Sol,data=uterino)
## Pedimos a R que nos muestre los contrastes que están dentro de 'mod':
mod$contrasts
$Sol
[,1] [,2] [,3] [,4] [,5] [,6]
ctrl -1 0 0.489057215 -0.25511690 -0.19133768 -0.12755845
sol1 0 1 -0.601310902 -0.44771927 -0.21078945 0.02614037
sol2 0 -1 -0.362670892 0.28743722 -0.15942209 -0.60628139
sol3 1 0 0.489057215 -0.25511690 -0.19133768 -0.12755845
sol4 0 1 0.114609126 0.75775020 -0.05668735 0.12887510
sol5 0 0 -0.004710879 -0.10982805 0.91762896 -0.05491402
sol6 0 -1 -0.124030883 0.02259371 -0.10805472 0.76129685
## Pedimos a R el resumen (en el formato de ANVA) de lo que hay en 'mod'.
## Para una mejor presentación le pedimos que nombre los contrastes:
summary.aov(mod,split=list(Sol=list("Sol 3 vs Ctrl"=1,
"Sol 2 y 6 vs Sol 1 y 4"=2)))
Df Sum Sq Mean Sq F value Pr(>F)
Sol 6 2416 402.7 2.761 0.03871 *
Sol: Sol3 vs Ctrl 1 1535 1534.6 10.523 0.00389 **
Sol: Sol2y6 vs Sol1y4 1 759 759.0 5.204 0.03307 *
Residuals 21 3063 145.8
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

## Hipótesis causales: Estructura Niveles crecientes


## El protocolo para mortalidad de garrapatas es análogo al ejemplo
## anterior. Noten que aquí estamos introduciendo los datos directamente
## en el script con el nombre 'garrap'. La función 'data.frame' acomoda
## los vectores 'Mort' y 'Barb' en una base de datos en columnas. La
## función 'rep("0",5)', por ejemplo, en el vector 'Barb' produce una
## repetición de # "0" cinco veces:
garrap<-data.frame(Mort=c(0,0,0,0,61.9,62.93,70,67.06,72.73,82.76,
77.42,87.29,88.46,85,89.15,92.22),
Barb=c(rep("0",4),rep("0.5",4),rep("1.0",4),
rep("2",4)));garrap
Mort Barb
1 0.00 0
2 0.00 0
3 0.00 0
4 0.00 0
5 61.90 0.5
6 62.93 0.5
7 70.00 0.5
8 67.06 0.5
9 72.73 1.0
10 82.76 1.0
11 77.42 1.0
12 87.29 1.0
13 88.46 2
14 85.00 2
15 89.15 2
16 92.22 2
## Los demás comandos de la secuencia tienen el mismo rol que en el
## ejemplo anterior:
levels(garrap$Barb)
[1] "0" "0.5" "1.0" "2"
con2<-matrix(c(-3,-1,1,3,1,-1,-1,1),4,2);con2
[,1] [,2]
[1,] -3 1
[2,] -1 -1
[3,] 1 -1
[4,] 3 1
contrasts(garrap$Barb)<-con2
mod2<-aov(Mort~Barb,data=garrap)
mod2$contrasts
$Barb
[,1] [,2] [,3]
0 -3 1 0.2236068
0.5 -1 -1 -0.6708204
1.0 1 -1 0.6708204
2 3 1 -0.2236068
summary.aov(mod2,split=list(Barb=list("Lineal"=1,"Cuadratic"=2)))
Df Sum Sq Mean Sq F value Pr(>F)
Barb 3 19391 6464 410.7 2.35e-12 ***
Barb: Lineal 1 15758 15758 1001.4 6.25e-13 ***
Barb: Cuadratic 1 3228 3228 205.1 6.59e-09 ***
Residuals 12 189 16
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
## Para obtener el modelo polinomial debemos convertir el vector «Barb» a
## valores numéricos
Barb=c(rep(0,4),rep(0.5,4),rep(1.0,4),rep(2,4))
fit<-lm(garrap$Mort~Barb+I(Barb^2))
fit
Call:
lm(formula = garrap$Mort ~ Barb + I(Barb^2))
Coefficients:
(Intercept) Barb I(Barb^2)
3.605 125.360 -41.705

You might also like