Lectura de Datos
library(readxl)
pulgas=read_excel("C:/Users/Alumno/Desktop/baseTaller/pulgas.xlsx")
pulgas=data.frame(pulgas)
head(pulgas)
## x1 x2 x3 x4 Grupo
## 1 189 245 137 163 Especie Haltica Oleracea
## 2 192 260 132 217 Especie Haltica Oleracea
## 3 217 276 141 192 Especie Haltica Oleracea
## 4 221 299 142 213 Especie Haltica Oleracea
## 5 171 239 128 158 Especie Haltica Oleracea
## 6 192 262 147 173 Especie Haltica Oleracea
install.packages(“MVN”) Exploración de datos individuales
library(MVN)
## sROC 0.1-2 loaded
library(ggplot2)
ggplot(data = pulgas, aes(x = pulgas[,1], fill = pulgas[,5])) +
geom_histogram(position = "identity", alpha = 0.5)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(data = pulgas, aes(x = pulgas[,2], fill = pulgas[,5])) +
geom_histogram(position = "identity", alpha = 0.5)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(data = pulgas, aes(x = pulgas[,3], fill = pulgas[,5])) +
geom_histogram(position = "identity", alpha = 0.5)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(data = pulgas, aes(x = pulgas[,4], fill = pulgas[,5])) +
geom_histogram(position = "identity", alpha = 0.5)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Criterios de variables que separan mejor Diagrama de dispersión
pairs(x = pulgas[1:4], col = c("firebrick", "green3")[pulgas[,5]],pch = 22)
create univariate Q-Q plots
mvn(data = pulgas[1:4], mvnTest = "royston", univariatePlot = "qqplot")
## $multivariateNormality
## Test H p value MVN
## 1 Royston 4.191205 0.3790543 YES
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk x1 0.9710 0.4021 YES
## 2 Shapiro-Wilk x2 0.9595 0.1714 YES
## 3 Shapiro-Wilk x3 0.9619 0.2066 YES
## 4 Shapiro-Wilk x4 0.9843 0.8510 YES
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew Kurtosis
## x1 39 186.8205 14.03168 184 158 221 177.0 193.5 0.3790264 -0.1856496
## x2 39 279.2308 22.42116 278 237 317 262.5 299.0 -0.2462722 -1.0623505
## x3 39 147.5385 14.69845 146 121 184 137.5 161.0 0.3847308 -0.6784951
## x4 39 197.8974 18.48868 197 158 235 187.0 213.0 -0.1040536 -0.6351910
create univariate histograms
mvn(data = pulgas[1:4], mvnTest = "royston", univariatePlot = "histogram")
## $multivariateNormality
## Test H p value MVN
## 1 Royston 4.191205 0.3790543 YES
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk x1 0.9710 0.4021 YES
## 2 Shapiro-Wilk x2 0.9595 0.1714 YES
## 3 Shapiro-Wilk x3 0.9619 0.2066 YES
## 4 Shapiro-Wilk x4 0.9843 0.8510 YES
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew Kurtosis
## x1 39 186.8205 14.03168 184 158 221 177.0 193.5 0.3790264 -0.1856496
## x2 39 279.2308 22.42116 278 237 317 262.5 299.0 -0.2462722 -1.0623505
## x3 39 147.5385 14.69845 146 121 184 137.5 161.0 0.3847308 -0.6784951
## x4 39 197.8974 18.48868 197 158 235 187.0 213.0 -0.1040536 -0.6351910
probando la normalidad install.packages(“MVN”)
library(MVN)
mvn(data = pulgas[,1:4], mvnTest = "mardia",univariatePlot = "qqplot")
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 14.5033549394537 0.804085904776078 YES
## 2 Mardia Kurtosis -2.1127725094963 0.0346202436872789 NO
## 3 MVN <NA> <NA> NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk x1 0.9710 0.4021 YES
## 2 Shapiro-Wilk x2 0.9595 0.1714 YES
## 3 Shapiro-Wilk x3 0.9619 0.2066 YES
## 4 Shapiro-Wilk x4 0.9843 0.8510 YES
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew Kurtosis
## x1 39 186.8205 14.03168 184 158 221 177.0 193.5 0.3790264 -0.1856496
## x2 39 279.2308 22.42116 278 237 317 262.5 299.0 -0.2462722 -1.0623505
## x3 39 147.5385 14.69845 146 121 184 137.5 161.0 0.3847308 -0.6784951
## x4 39 197.8974 18.48868 197 158 235 187.0 213.0 -0.1040536 -0.6351910
mvn(data = pulgas[,1:4], mvnTest = "hz",univariatePlot = "qqplot")
## $multivariateNormality
## Test HZ p value MVN
## 1 Henze-Zirkler 0.856282 0.1467007 YES
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk x1 0.9710 0.4021 YES
## 2 Shapiro-Wilk x2 0.9595 0.1714 YES
## 3 Shapiro-Wilk x3 0.9619 0.2066 YES
## 4 Shapiro-Wilk x4 0.9843 0.8510 YES
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew Kurtosis
## x1 39 186.8205 14.03168 184 158 221 177.0 193.5 0.3790264 -0.1856496
## x2 39 279.2308 22.42116 278 237 317 262.5 299.0 -0.2462722 -1.0623505
## x3 39 147.5385 14.69845 146 121 184 137.5 161.0 0.3847308 -0.6784951
## x4 39 197.8974 18.48868 197 158 235 187.0 213.0 -0.1040536 -0.6351910
mvn(data = pulgas[,1:4], mvnTest = "royston",univariatePlot = "qqplot")
## $multivariateNormality
## Test H p value MVN
## 1 Royston 4.191205 0.3790543 YES
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk x1 0.9710 0.4021 YES
## 2 Shapiro-Wilk x2 0.9595 0.1714 YES
## 3 Shapiro-Wilk x3 0.9619 0.2066 YES
## 4 Shapiro-Wilk x4 0.9843 0.8510 YES
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew Kurtosis
## x1 39 186.8205 14.03168 184 158 221 177.0 193.5 0.3790264 -0.1856496
## x2 39 279.2308 22.42116 278 237 317 262.5 299.0 -0.2462722 -1.0623505
## x3 39 147.5385 14.69845 146 121 184 137.5 161.0 0.3847308 -0.6784951
## x4 39 197.8974 18.48868 197 158 235 187.0 213.0 -0.1040536 -0.6351910
Estudio de datos Perdidos
mvn(data = pulgas[,1:4], mvnTest = "mardia",multivariateOutlierMethod="adj")
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 14.5033549394537 0.804085904776078 YES
## 2 Mardia Kurtosis -2.1127725094963 0.0346202436872789 NO
## 3 MVN <NA> <NA> NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk x1 0.9710 0.4021 YES
## 2 Shapiro-Wilk x2 0.9595 0.1714 YES
## 3 Shapiro-Wilk x3 0.9619 0.2066 YES
## 4 Shapiro-Wilk x4 0.9843 0.8510 YES
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew Kurtosis
## x1 39 186.8205 14.03168 184 158 221 177.0 193.5 0.3790264 -0.1856496
## x2 39 279.2308 22.42116 278 237 317 262.5 299.0 -0.2462722 -1.0623505
## x3 39 147.5385 14.69845 146 121 184 137.5 161.0 0.3847308 -0.6784951
## x4 39 197.8974 18.48868 197 158 235 187.0 213.0 -0.1040536 -0.6351910
mvn(data = pulgas[,1:4], mvnTest = "mardia",multivariatePlot="qq")
## $multivariateNormality
## Test Statistic p value Result
## 1 Mardia Skewness 14.5033549394537 0.804085904776078 YES
## 2 Mardia Kurtosis -2.1127725094963 0.0346202436872789 NO
## 3 MVN <NA> <NA> NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk x1 0.9710 0.4021 YES
## 2 Shapiro-Wilk x2 0.9595 0.1714 YES
## 3 Shapiro-Wilk x3 0.9619 0.2066 YES
## 4 Shapiro-Wilk x4 0.9843 0.8510 YES
##
## $Descriptives
## n Mean Std.Dev Median Min Max 25th 75th Skew Kurtosis
## x1 39 186.8205 14.03168 184 158 221 177.0 193.5 0.3790264 -0.1856496
## x2 39 279.2308 22.42116 278 237 317 262.5 299.0 -0.2462722 -1.0623505
## x3 39 147.5385 14.69845 146 121 184 137.5 161.0 0.3847308 -0.6784951
## x4 39 197.8974 18.48868 197 158 235 187.0 213.0 -0.1040536 -0.6351910
test que contrastan la homogeneidad de varianza (boxM) COMPARACIÓN DE MATRICES DE COVARIANZAS install.packages(“biotools”)
library(biotools)
## Loading required package: rpanel
## Loading required package: tcltk
## Package `rpanel', version 1.1-4: type help(rpanel) for summary information
## Loading required package: tkrplot
## Loading required package: MASS
## Loading required package: lattice
## Loading required package: SpatialEpi
## Loading required package: sp
## ---
## biotools version 3.1
##
boxM(pulgas[1:4],pulgas[,5])
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: pulgas[1:4]
## Chi-Sq (approx.) = 8.7457, df = 10, p-value = 0.5564
Calculo del p-Value
qchisq(0.95,10,ncp=0,lower.tail = TRUE,log.p = FALSE)
## [1] 18.30704
MANOVA
mlm=lm(cbind(x1,x2,x3,x4) ~Grupo, data =pulgas)
mnova.m=manova(mlm)
summary(mnova.m)
## Df Pillai approx F num Df den Df Pr(>F)
## Grupo 1 0.78298 30.666 4 34 7.522e-11 ***
## Residuals 37
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Por variables predictoras
summary.aov(mnova.m)
## Response x1 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Grupo 1 2170.1 2170.06 15.116 0.0004049 ***
## Residuals 37 5311.7 143.56
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response x2 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Grupo 1 5494.8 5494.8 14.94 0.0004326 ***
## Residuals 37 13608.1 367.8
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response x3 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Grupo 1 3832.1 3832.1 32.389 1.645e-06 ***
## Residuals 37 4377.6 118.3
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Response x4 :
## Df Sum Sq Mean Sq F value Pr(>F)
## Grupo 1 5290.9 5290.9 25.428 1.236e-05 ***
## Residuals 37 7698.7 208.1
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TEST WILKS
summary(mnova.m,test="Wilks")
## Df Wilks approx F num Df den Df Pr(>F)
## Grupo 1 0.21702 30.666 4 34 7.522e-11 ***
## Residuals 37
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
library(rrcov)
## Loading required package: robustbase
## Scalable Robust Estimators with High Breakdown Point (version 1.4-4)
Wilks.test(pulgas[,5]~pulgas[,1]+pulgas[,2]+pulgas[,3]+pulgas[,4], data = pulgas, method = "c")
##
## One-way MANOVA (Bartlett Chi2)
##
## data: x
## Wilks' Lambda = 0.21702, Chi2-Value = 53.471, DF = 4.000, p-value
## = 6.791e-11
## sample estimates:
## pulgas[, 1] pulgas[, 2] pulgas[, 3] pulgas[, 4]
## Especie Haltica Carduorum 179.5500 290.8000 157.2000 209.2500
## Especie Haltica Oleracea 194.4737 267.0526 137.3684 185.9474
“c” para los estimadores estándar de la media y la varianza, “mcd” para los estimadores de MCD: Matriz de covarianzas de determinante mínimo “rank” para la lambda de wilks de rango ================================================================ COV. DIFERENTES è CUADRÁTICA
x1=pulgas[pulgas[5]=="Especie Haltica Oleracea",]
x2=pulgas[pulgas[5]=="Especie Haltica Carduorum",]
n1=length(x1[,1])
n2=length(x2[,1])
Medias Muestrales
mx1=colMeans(x1[1:4])
mx2=colMeans(x2[1:4])
Matrices de Covarianza Muestral
s1=cov(x1[1:4])
s2=cov(x2[1:4])
Covariansas Conjuntas
s=((n1-1)*s1+(n2-1)*s2)/(n1+n2-2)
lev=levels(pulgas[,5])
nom1=lev[1]
nom2=lev[2]
vo=data.frame(var=names(pulgas[1:4]),m1=t(t(mx1)%*%solve(s)),m2=t(t(mx2)%*%solve(s)))
names(vo)=c("var",nom1,nom2)
vo
## var NA NA
## x1 x1 NA NaN
## x2 x2 NA NaN
## x3 x3 NA NaN
## x4 x4 NA NaN
Función Discrimínate
modd=(t(mx1-mx2)%*%solve(s))
Constante
cst=-1/2*t(mx1-mx2)%*%solve(s)%*%(mx1+mx2)
Modelo de Clasificación
md1=paste(round(modd,2),names(pulgas[1:4]),sep="")
paste("W(x)=",md1[1],"+",md1[2],"+",md1[3],"+",md1[4],"+",round(cst[1],2))
## [1] "W(x)= NaNx1 + NaNx2 + NaNx3 + NaNx4 + NaN"
=============================================================== Validando el modelo Modelo Lineal install.packages(“MASS”)
library(MASS)
modelo_lda=lda(pulgas[,5]~pulgas[,1]+pulgas[,2]+pulgas[,3]+pulgas[,4],data =pulgas)
plot(modelo_lda,c("green","blue"),abbrev=1)
#pairs(modelo_lda,c("green","blue"),abbrev=1)
modelo_lda
## Call:
## lda(pulgas[, 5] ~ pulgas[, 1] + pulgas[, 2] + pulgas[, 3] + pulgas[,
## 4], data = pulgas)
##
## Prior probabilities of groups:
## Especie Haltica Carduorum Especie Haltica Oleracea
## 0.5128205 0.4871795
##
## Group means:
## pulgas[, 1] pulgas[, 2] pulgas[, 3] pulgas[, 4]
## Especie Haltica Carduorum 179.5500 290.8000 157.2000 209.2500
## Especie Haltica Oleracea 194.4737 267.0526 137.3684 185.9474
##
## Coefficients of linear discriminants:
## LD1
## pulgas[, 1] 0.09327642
## pulgas[, 2] -0.03522706
## pulgas[, 3] -0.02875538
## pulgas[, 4] -0.03872998
número total de observaciones
modelo_lda$counts
## Especie Haltica Carduorum Especie Haltica Oleracea
## 20 19
modelo_lda$svd
## [1] 11.55367
lda.p=predict(modelo_lda)
en filas reales y en columna estimados Evaluación de los errores de clasificación.
tabl=table(pulgas[,5],lda.p$class,dnn = c("Real","Predicha"))
tabl
## Predicha
## Real Especie Haltica Carduorum
## Especie Haltica Carduorum 19
## Especie Haltica Oleracea 0
## Predicha
## Real Especie Haltica Oleracea
## Especie Haltica Carduorum 1
## Especie Haltica Oleracea 19
porcentaje de muestra por grupos
diag(prop.table(tabl,1))
## Especie Haltica Carduorum Especie Haltica Oleracea
## 0.95 1.00
porcentaje de acierto total
sum(diag(prop.table(tabl)))
## [1] 0.974359
estimación de grupos a los que pertenecen la nueva data
library(readxl)
exp=read_excel("C:/Users/Alumno/Desktop/baseTaller/exp.xlsx")
exp=data.frame(exp)
head(exp)
## x1 x2 x3 x4
## 1 159 262 166 192
## 2 213 287 170 159
## 3 185 263 155 221
## 4 200 313 177 178
## 5 218 317 167 165
## 6 204 243 138 199
pred=predict(modelo_lda,exp)$class
exp$NewGrupo=with(exp,pred)
exp
## x1 x2 x3 x4 NewGrupo
## 1 159 262 166 192 Especie Haltica Oleracea
## 2 213 287 170 159 Especie Haltica Oleracea
## 3 185 263 155 221 Especie Haltica Oleracea
## 4 200 313 177 178 Especie Haltica Oleracea
## 5 218 317 167 165 Especie Haltica Oleracea
## 6 204 243 138 199 Especie Haltica Oleracea
## 7 220 288 180 232 Especie Haltica Oleracea
## 8 171 291 130 205 Especie Haltica Oleracea
## 9 197 239 140 189 Especie Haltica Oleracea
## 10 179 277 127 184 Especie Haltica Oleracea
## 11 175 291 125 215 Especie Haltica Oleracea
## 12 158 295 144 185 Especie Haltica Oleracea
## 13 221 265 127 186 Especie Haltica Oleracea
## 14 168 257 140 170 Especie Haltica Oleracea
## 15 175 284 145 227 Especie Haltica Oleracea
## 16 167 256 152 160 Especie Haltica Oleracea
## 17 174 266 181 211 Especie Haltica Oleracea
## 18 205 300 139 158 Especie Haltica Oleracea
## 19 207 313 162 190 Especie Haltica Oleracea
## 20 213 299 178 227 Especie Haltica Carduorum
## 21 221 291 140 232 Especie Haltica Carduorum
## 22 183 280 141 229 Especie Haltica Carduorum
## 23 166 276 146 166 Especie Haltica Carduorum
## 24 166 246 172 160 Especie Haltica Carduorum
## 25 164 239 123 215 Especie Haltica Carduorum
## 26 214 296 156 168 Especie Haltica Carduorum
## 27 163 240 169 218 Especie Haltica Oleracea
## 28 190 262 179 218 Especie Haltica Carduorum
## 29 216 296 154 188 Especie Haltica Carduorum
## 30 213 258 138 219 Especie Haltica Carduorum
## 31 189 303 125 187 Especie Haltica Carduorum
## 32 169 249 174 225 Especie Haltica Carduorum
## 33 218 301 172 203 Especie Haltica Carduorum
## 34 158 252 126 235 Especie Haltica Carduorum
## 35 184 252 146 232 Especie Haltica Carduorum
## 36 179 317 183 206 Especie Haltica Carduorum
## 37 182 271 173 190 Especie Haltica Carduorum
## 38 197 259 168 205 Especie Haltica Carduorum
## 39 177 251 137 222 Especie Haltica Carduorum
Modelo Cuadrático install.packages(“MASS”)
library(MASS)
modelo_qda=qda(pulgas[,5]~pulgas[,1]+pulgas[,2]+pulgas[,3]+pulgas[,4],data =pulgas)
#plot(modelo_qda)
#pairs(modelo_lda,col=pulgas[,5],abbrev=1)
modelo_qda
## Call:
## qda(pulgas[, 5] ~ pulgas[, 1] + pulgas[, 2] + pulgas[, 3] + pulgas[,
## 4], data = pulgas)
##
## Prior probabilities of groups:
## Especie Haltica Carduorum Especie Haltica Oleracea
## 0.5128205 0.4871795
##
## Group means:
## pulgas[, 1] pulgas[, 2] pulgas[, 3] pulgas[, 4]
## Especie Haltica Carduorum 179.5500 290.8000 157.2000 209.2500
## Especie Haltica Oleracea 194.4737 267.0526 137.3684 185.9474
número total de observaciones
modelo_qda$counts
## Especie Haltica Carduorum Especie Haltica Oleracea
## 20 19
modelo_qda$svd
## NULL
qda.p=predict(modelo_qda)
en filas reales y en columna estimados Evaluación de los errores de clasificación.
tabl=table(pulgas[,5],qda.p$class,dnn = c("Real","Predicha"))
tabl
## Predicha
## Real Especie Haltica Carduorum
## Especie Haltica Carduorum 19
## Especie Haltica Oleracea 0
## Predicha
## Real Especie Haltica Oleracea
## Especie Haltica Carduorum 1
## Especie Haltica Oleracea 19
porcentaje de muestra por grupos
diag(prop.table(tabl,1))
## Especie Haltica Carduorum Especie Haltica Oleracea
## 0.95 1.00
porcentaje de acierto total
sum(diag(prop.table(tabl)))
## [1] 0.974359
estimación de grupos a los use pertenecen la nueva data
exp=read_excel("C:/Users/Alumno/Desktop/baseTaller/exp.xlsx")
exp=data.frame(exp)
head(exp)
## x1 x2 x3 x4
## 1 159 262 166 192
## 2 213 287 170 159
## 3 185 263 155 221
## 4 200 313 177 178
## 5 218 317 167 165
## 6 204 243 138 199
pred=predict(modelo_lda,exp)$class
exp$NewGrupo=with(exp,pred)
exp
## x1 x2 x3 x4 NewGrupo
## 1 159 262 166 192 Especie Haltica Oleracea
## 2 213 287 170 159 Especie Haltica Oleracea
## 3 185 263 155 221 Especie Haltica Oleracea
## 4 200 313 177 178 Especie Haltica Oleracea
## 5 218 317 167 165 Especie Haltica Oleracea
## 6 204 243 138 199 Especie Haltica Oleracea
## 7 220 288 180 232 Especie Haltica Oleracea
## 8 171 291 130 205 Especie Haltica Oleracea
## 9 197 239 140 189 Especie Haltica Oleracea
## 10 179 277 127 184 Especie Haltica Oleracea
## 11 175 291 125 215 Especie Haltica Oleracea
## 12 158 295 144 185 Especie Haltica Oleracea
## 13 221 265 127 186 Especie Haltica Oleracea
## 14 168 257 140 170 Especie Haltica Oleracea
## 15 175 284 145 227 Especie Haltica Oleracea
## 16 167 256 152 160 Especie Haltica Oleracea
## 17 174 266 181 211 Especie Haltica Oleracea
## 18 205 300 139 158 Especie Haltica Oleracea
## 19 207 313 162 190 Especie Haltica Oleracea
## 20 213 299 178 227 Especie Haltica Carduorum
## 21 221 291 140 232 Especie Haltica Carduorum
## 22 183 280 141 229 Especie Haltica Carduorum
## 23 166 276 146 166 Especie Haltica Carduorum
## 24 166 246 172 160 Especie Haltica Carduorum
## 25 164 239 123 215 Especie Haltica Carduorum
## 26 214 296 156 168 Especie Haltica Carduorum
## 27 163 240 169 218 Especie Haltica Oleracea
## 28 190 262 179 218 Especie Haltica Carduorum
## 29 216 296 154 188 Especie Haltica Carduorum
## 30 213 258 138 219 Especie Haltica Carduorum
## 31 189 303 125 187 Especie Haltica Carduorum
## 32 169 249 174 225 Especie Haltica Carduorum
## 33 218 301 172 203 Especie Haltica Carduorum
## 34 158 252 126 235 Especie Haltica Carduorum
## 35 184 252 146 232 Especie Haltica Carduorum
## 36 179 317 183 206 Especie Haltica Carduorum
## 37 182 271 173 190 Especie Haltica Carduorum
## 38 197 259 168 205 Especie Haltica Carduorum
## 39 177 251 137 222 Especie Haltica Carduorum