#install.packages("rjags")
#install.packages("coda")
require(rjags)
require(coda)
require(DT)
require(tidyverse)
require(car)
##### Entrada dos dados em formato de lista
dados=list(n=10,x=c(3,3,4,5,6,6,7,8,8,9),
y=c(9,5,12,9,14,16,22,18,24,22))
##### Sintaxe do modelo
cat("model {
for (i in 1:n)
{
y[i] ~ dnorm(beta0 + x[i] *beta1,tau)
y_hat[i] <- beta0 + x[i] *beta1
}
beta0 ~ dnorm(0,0.00001)
beta1 ~ dnorm(0,0.00001)
tau ~ dgamma(0.01,0.01)
sigma2 = 1/tau
}",file="modelo1.txt")
##### Valores iniciais
inits = list(beta0=0,beta1=0,tau=1)
#### Carrega o modelo
jags.m <- jags.model( file = "modelo1.txt", data=dados, inits=inits, n.chains=2, n.adapt=500 )
## Compiling model graph
## Resolving undeclared variables
## Allocating nodes
## Graph information:
## Observed stochastic nodes: 10
## Unobserved stochastic nodes: 3
## Total graph size: 43
##
## Initializing model
## Especifica as quantidades a serem monitorados (algumas vêm direto dos parâmetros que foram amostrados, e outras são funções dos parâmetros)
params <- c("y_hat","beta0","beta1","tau","sigma2")
## Implementa o modelo e armazena as amostras da distribuição a posteriori
samps <- coda.samples( jags.m, params, n.iter=10000 )
## Pede os sumários a posteriori
summary(samps)
##
## Iterations = 1:10000
## Thinning interval = 1
## Number of chains = 2
## Sample size per chain = 10000
##
## 1. Empirical mean and standard deviation for each variable,
## plus standard error of the mean:
##
## Mean SD Naive SE Time-series SE
## beta0 -1.1035 3.18337 0.0225098 0.0960576
## beta1 2.7456 0.51063 0.0036107 0.0152924
## sigma2 10.4695 6.91125 0.0488699 0.0870838
## tau 0.1263 0.06282 0.0004442 0.0006819
## y_hat[1] 7.1334 1.80050 0.0127314 0.0495064
## y_hat[2] 7.1334 1.80050 0.0127314 0.0495064
## y_hat[3] 9.8790 1.40976 0.0099685 0.0339763
## y_hat[4] 12.6246 1.12008 0.0079201 0.0188991
## y_hat[5] 15.3702 1.02137 0.0072222 0.0066711
## y_hat[6] 15.3702 1.02137 0.0072222 0.0066711
## y_hat[7] 18.1158 1.16332 0.0082259 0.0130001
## y_hat[8] 20.8614 1.47815 0.0104521 0.0272085
## y_hat[9] 20.8614 1.47815 0.0104521 0.0272085
## y_hat[10] 23.6070 1.88097 0.0133005 0.0426371
##
## 2. Quantiles for each variable:
##
## 2.5% 25% 50% 75% 97.5%
## beta0 -7.25657 -3.11291 -1.1792 0.8143 5.528
## beta1 1.68547 2.43701 2.7575 3.0678 3.732
## sigma2 3.63695 6.20507 8.6364 12.4663 28.545
## tau 0.03503 0.08022 0.1158 0.1612 0.275
## y_hat[1] 3.61299 6.00161 7.1066 8.2190 10.854
## y_hat[2] 3.61299 6.00161 7.1066 8.2190 10.854
## y_hat[3] 7.10604 9.00024 9.8624 10.7226 12.790
## y_hat[4] 10.41382 11.93508 12.6142 13.3017 14.898
## y_hat[5] 13.34338 14.74660 15.3754 15.9956 17.395
## y_hat[6] 13.34338 14.74660 15.3754 15.9956 17.395
## y_hat[7] 15.77227 17.40673 18.1250 18.8262 20.445
## y_hat[8] 17.90995 19.95466 20.8712 21.7768 23.817
## y_hat[9] 17.90995 19.95466 20.8712 21.7768 23.817
## y_hat[10] 19.81602 22.46487 23.6230 24.7827 27.325
plot(samps)
# Análise de dados com regressão linear múltipla:
tempos=c(195,255,195,255,225,225,195,255,225,225,225,225,230,230)
ganhos=c(1004,1636,852,1506,1275,1270,1269,903,1555,1260,1146,1276,1225,1321)
doses=c(4,4,4.6,4.6,4.2,4.1,4.6,4.3,4.3,4,4.7,4.3,4.72,4.3)
dados=data.frame(tempos,doses,ganhos)
datatable(dados)
model1=lm(ganhos ~ tempos + doses,data=dados)
summary(model1)
##
## Call:
## lm(formula = ganhos ~ tempos + doses, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -496.38 -50.20 5.42 117.26 304.41
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 629.382 1246.225 0.505 0.624
## tempos 4.960 2.938 1.688 0.120
## doses -115.052 227.600 -0.506 0.623
##
## Residual standard error: 215.6 on 11 degrees of freedom
## Multiple R-squared: 0.2317, Adjusted R-squared: 0.09199
## F-statistic: 1.658 on 2 and 11 DF, p-value: 0.2347
anova(model1)
## Analysis of Variance Table
##
## Response: ganhos
## Df Sum Sq Mean Sq F value Pr(>F)
## tempos 1 142313 142313 3.0615 0.1080
## doses 1 11878 11878 0.2555 0.6232
## Residuals 11 511338 46485
plot(model1)
shapiro.test(residuals(model1))
##
## Shapiro-Wilk normality test
##
## data: residuals(model1)
## W = 0.92649, p-value = 0.2722
dados = dados %>%
mutate(y_hat=fitted(model1),
res = residuals(model1))
datatable(dados)
#Transformação Box Cox
a=boxCox(model1)
maximo=cbind(a$x,a$y)
lambda=maximo[which.max(maximo[,2])]
#1.59596
model2 = lm((ganhos^lambda-1)/lambda ~ tempos + doses,data=dados)
summary(model2)
##
## Call:
## lm(formula = (ganhos^lambda - 1)/lambda ~ tempos + doses, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -33733 -4142 -402 8089 22042
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 11162.9 85883.1 0.130 0.899
## tempos 355.6 202.5 1.756 0.107
## doses -8239.5 15685.0 -0.525 0.610
##
## Residual standard error: 14860 on 11 degrees of freedom
## Multiple R-squared: 0.246, Adjusted R-squared: 0.1089
## F-statistic: 1.794 on 2 and 11 DF, p-value: 0.2116
anova(model2)
## Analysis of Variance Table
##
## Response: (ganhos^lambda - 1)/lambda
## Df Sum Sq Mean Sq F value Pr(>F)
## tempos 1 731370389 731370389 3.3128 0.09603 .
## doses 1 60921234 60921234 0.2759 0.60979
## Residuals 11 2428463475 220769407
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(model2)
shapiro.test(residuals(model2))
##
## Shapiro-Wilk normality test
##
## data: residuals(model2)
## W = 0.9344, p-value = 0.3513
##### Entrada dos dados em formato de lista
dados=list(n=14,tempos=c(195,255,195,255,225,225,195,255,225,225,225,225,230,230),
ganhos=c(1004,1636,852,1506,1275,1270,1269,903,1555,1260,1146,1276,1225,1321),
doses=c(4,4,4.6,4.6,4.2,4.1,4.6,4.3,4.3,4,4.7,4.3,4.72,4.3))
##### Sintaxe do modelo
cat("model {
for (i in 1:n)
{
ganhos[i] ~ dnorm(beta0 + tempos[i]*beta1 + doses[i]*beta2 ,tau)
y_hat[i] <- beta0 + tempos[i]*beta1 + doses[i]*beta2
}
beta0 ~ dnorm(0,0.00001)
beta1 ~ dnorm(0,0.00001)
beta2 ~ dnorm(0,0.00001)
tau ~ dgamma(0.01,0.01)
sigma2 = 1/tau
}",file="modelo2.txt")
##### Valores iniciais
inits = list(beta0=0,beta1=0,beta2=0,tau=1)
#### Carrega o modelo
jags.m <- jags.model( file = "modelo2.txt", data=dados, inits=inits, n.chains=2, n.adapt=1000 )
## Compiling model graph
## Resolving undeclared variables
## Allocating nodes
## Graph information:
## Observed stochastic nodes: 14
## Unobserved stochastic nodes: 4
## Total graph size: 75
##
## Initializing model
## Especifica as quantidades a serem monitorados (algumas vêm direto dos parâmetros que foram amostrados, e outras são funções dos parâmetros)
params <- c("y_hat","beta0","beta1","beta2","tau","sigma2")
## Implementa o modelo e armazena as amostras da distribuição a posteriori
samps <- coda.samples( jags.m, params, n.iter=10000 )
## Pede os sumários a posteriori
summary(samps)
##
## Iterations = 1:10000
## Thinning interval = 1
## Number of chains = 2
## Sample size per chain = 10000
##
## 1. Empirical mean and standard deviation for each variable,
## plus standard error of the mean:
##
## Mean SD Naive SE Time-series SE
## beta0 3.520e+01 2.996e+02 2.118e+00 1.444e+01
## beta1 5.539e+00 2.289e+00 1.619e-02 1.930e-01
## beta2 -8.365e+00 1.203e+02 8.508e-01 1.031e+01
## sigma2 5.167e+04 2.524e+04 1.784e+02 3.613e+02
## tau 2.307e-05 9.247e-06 6.538e-08 1.240e-07
## y_hat[1] 1.082e+03 6.982e+01 4.937e-01 2.406e+00
## y_hat[2] 1.414e+03 1.197e+02 8.462e-01 8.967e+00
## y_hat[3] 1.077e+03 1.148e+02 8.120e-01 8.799e+00
## y_hat[4] 1.409e+03 7.877e+01 5.570e-01 2.724e+00
## y_hat[5] 1.246e+03 6.129e+01 4.334e-01 8.333e-01
## y_hat[6] 1.247e+03 6.461e+01 4.569e-01 1.843e+00
## y_hat[7] 1.077e+03 1.148e+02 8.120e-01 8.799e+00
## y_hat[8] 1.412e+03 9.466e+01 6.694e-01 5.489e+00
## y_hat[9] 1.245e+03 6.023e+01 4.259e-01 4.259e-01
## y_hat[10] 1.248e+03 6.987e+01 4.941e-01 2.819e+00
## y_hat[11] 1.242e+03 7.752e+01 5.482e-01 3.472e+00
## y_hat[12] 1.245e+03 6.023e+01 4.259e-01 4.259e-01
## y_hat[13] 1.270e+03 7.433e+01 5.256e-01 2.861e+00
## y_hat[14] 1.273e+03 6.214e+01 4.394e-01 8.278e-01
##
## 2. Quantiles for each variable:
##
## 2.5% 25% 50% 75% 97.5%
## beta0 -5.493e+02 -1.612e+02 3.610e+01 2.270e+02 6.296e+02
## beta1 1.259e+00 3.990e+00 5.520e+00 7.086e+00 1.009e+01
## beta2 -2.468e+02 -8.637e+01 -9.649e+00 7.202e+01 2.293e+02
## sigma2 2.256e+04 3.505e+04 4.587e+04 6.134e+04 1.151e+05
## tau 8.686e-06 1.630e-05 2.180e-05 2.853e-05 4.433e-05
## y_hat[1] 9.414e+02 1.036e+03 1.082e+03 1.127e+03 1.219e+03
## y_hat[2] 1.183e+03 1.335e+03 1.415e+03 1.493e+03 1.653e+03
## y_hat[3] 8.484e+02 1.001e+03 1.076e+03 1.152e+03 1.304e+03
## y_hat[4] 1.252e+03 1.358e+03 1.409e+03 1.461e+03 1.566e+03
## y_hat[5] 1.124e+03 1.207e+03 1.247e+03 1.286e+03 1.368e+03
## y_hat[6] 1.118e+03 1.206e+03 1.247e+03 1.289e+03 1.374e+03
## y_hat[7] 8.484e+02 1.001e+03 1.076e+03 1.152e+03 1.304e+03
## y_hat[8] 1.227e+03 1.350e+03 1.411e+03 1.474e+03 1.598e+03
## y_hat[9] 1.125e+03 1.207e+03 1.245e+03 1.284e+03 1.365e+03
## y_hat[10] 1.108e+03 1.203e+03 1.248e+03 1.293e+03 1.387e+03
## y_hat[11] 1.089e+03 1.192e+03 1.242e+03 1.293e+03 1.397e+03
## y_hat[12] 1.125e+03 1.207e+03 1.245e+03 1.284e+03 1.365e+03
## y_hat[13] 1.122e+03 1.221e+03 1.270e+03 1.318e+03 1.418e+03
## y_hat[14] 1.149e+03 1.233e+03 1.273e+03 1.313e+03 1.396e+03
plot(samps)