Diferencias entre métodos supervisados y no supervisados
Los métodos de aprendizaje supervisados y no supervisados son una parte importante en el machine learning y en el data mining junto con la clusterización y la visualización.
Aprendizaje supervisado
El aprendizaje supervisado es el enfoque de machine learning que utiliza la perspectiva de etiquetados que se usan para entrenar nuestro modelo y así estos puedan predecir resultados con precisión, el modelo puede medir su precisión y aprender con el tiempo [1]. El aprendizaje supervisado se puede clasificar en: * Clasificación * Regresión
La clasificación de muchos datos puede ser muy difícil en el aprendizaje supervisado, pero los resultados serán precisos y confiables.
Aprendizaje no supervisado
En este método, no se necesita supervisar o compartir los datos etiquetados con el modelo. En su lugar, el algoritmo del modelo comprenderá automáticamente y comenzará a aprender de los datos sin guía previa. Utilizará los datos no etiquetados para identificar nuevos patrones e información debido al diseño de su algoritmo. Con esta técnica, se puede encontrar nueva información y no identificada previamente.Este tipo de comportamiento de aprendizaje es similar al de nosotros. Imaginemos cómo analizamos y observamos el entorno para recoger datos y entender y reconocer las cosas. De manera similar, las máquinas con algoritmo de aprendizaje no supervisado descubren patrones para encontrar resultados útiles.
¿Cómo funciona? Los algoritmos no supervisados funcionan sin ningún entrenamiento adecuado. Funciona tan pronto como recibe los datos. El algoritmo toma sus propias decisiones y encuentra maneras de clasificar las variables y comprobar si encajan. Otro beneficio de este método es que no tiene que proporcionar datos etiquetados. El sistema explorará los datos y definirá las reglas en consecuencia.
¿Cómo elegir el método de aprendizaje correcto?
La elección entre el aprendizaje supervisado depende de cómo se evalúa la estructura y el volumen de los datos en algunos casos tenemos un conjunto de datos demasiado grande donde el aprendizaje supervisado tomaría una gran cantidad de tiempo y recursos, algunos datos están bien definidos por ende no es necesaria la supervisión, aunque a veces nuestro modelo tiene problemas poco definidos o no recurrentes que necesitan.
Proceso de resolución de problema usando ciencia de datos
Hablando de manera general, la “data science” es un término que se escucha comúnmente y resulta un poco difícil de definir, esto porque puede englobar muchas cosas, la ciencia de datos es más que nada generar conocimiento para resolver problemas usando datos. Involucra métodos científicos, procesos y sistemas para extraer conocimiento o un mejor entendimiento de datos en sus diferentes firmas, ya sea estructurados o no, lo cual es una continuación de algunos campos de análisis de datos como la estadística, la minería de datos, el aprendizaje automático, y la analítica predictiva.
Para ayudar a las empresas a prepararse para el brillante futuro de la ciencia de datos, NDS Cognitive Labs enlista 4 formas en las que esta profesión puede ayudar a una compañía: -Fomentar nuevas ideas y disrupción comercial Con su capacidad para detectar problemas comerciales complejos con ayuda del aprendizaje automático, como dificultades de investigación de operaciones, los científicos de datos tienen la clave para descubrir mejores soluciones. Incluso pueden descubrir errores que se habían pasado por alto. Un ejemplo de esto es la empresa multinacional de correspondencia, UPS. Su Sistema de Optimización y Navegación Integrada en Carretera, mejor conocido como ORION por sus iniciales en inglés, utilizó la ciencia de datos para descubrir cómo cambiar significativamente la ruta de sus camiones de reparto utilizando diversas fuentes de datos. El impacto fue un ahorro de aproximadamente 50 millones de dólares en un año y una mejor experiencia del cliente. -Seguimiento y análisis de datos Los científicos de datos pueden desempeñar el papel de analistas y gerente de datos, informando de los cambios de la industria, los gastos de recursos internos, las expectativas de ganancia y otras variables. Además, pueden establecer metas más informadas, por lo que con un poco de tiempo, la gestión diaria de la empresa permitirá eliminar los cuellos de botella ineficaces en el flujo de trabajo y mejorar el desempeño del modelo de negocio. -Mejorar procesos y productos existentes Un científico de datos puede desarrollarse en el área de producción y establecer modelos para refinar procesos y productos de acuerdo con la información que recopila y analiza. Algunos ejemplos de esto están presentes en el marketing: minoristas ajustando modelos de precios dinámicos o bancos ajustando sus modelos de riesgo financiero. Por ejemplo, la empresa suiza de seguros, Zurich Insurance, redujo las ineficiencias de reclamos por lesiones mediante el uso de una solución de IA para automatizar completamente las evaluaciones de los informes y, gracias a la Ciencia de Datos, se pudo recopilar toda la información sobre estos reportes y así reducir el tiempo del proceso de una hora a sólo unos segundos. -Creación de prototipos y prueba de nuevas ideas La ciencia de datos, y especialmente el aprendizaje automático, son excelentes para resolver los problemas complejos y ricos en datos. Las tendencias pueden ser fácilmente descubiertas por la Ciencia de Datos, obteniendo como resultado tendencias del mercado, nuevas ideas y problemas que aún no son atendidos. Un ejemplo de esto es un departamento de policía con sede en Estados Unidos, el cual necesitaba una forma eficiente y automatizada para obtener información procesable sobre un gran volumen de datos sobre delitos. Así nació el sistema de análisis predictivo PredPol, quien generó “pronósticos” de delitos que optimizaron el despliegue de las fuerzas policiales, reduciendo la tasa de asesinatos en un 35% y los robos en un 20%, de acuerdo con datos del mismo sistema.
Caso de estudio: Apicultura, extinción de polinizadores y sus consecuencias en cultivos
Introducción
Muchas especies de insectos polinizadores en el mundo como las abejas están en vías de extinción o al menos sus números están en declive, ¿es este dato alarmante para la producción de comida en México? Las abejas son el polinizador mas frecuente en cultivos a nivel mundial [2]. La importancia de las abejas, domesticación y uso ha sido algo frecuente desde hace mucho tiempo, por lo que es sorprendente que su importancia sea un tema poco entendido para el público en general. Clarificando las abejas como polinizador en áreas naturales y cultivos es muy importante por varias razones como que la polinización tiene un rol vital en los ecosistemas, casi el 90% de las plantas con flores son polinizadas por animales [3]
Antecedentes
Apis melífera es el visitante floral más frecuente en los hábitats naturales de todo el mundo, con un promedio del 13 % de las visitas florales en todas las redes (rango 0–85 %), con un 5 % de las especies de plantas registradas como visitadas exclusivamente por A. melífera. Las abejas son una especie muy antigua que ha vivido por millones de años, estudios de angiospermas [4]-[5] podrían indicar que las variables que mas afectan a las abejas son: • Temperatura • Cambio en el habitad como deforestación y elevación en el nivel de mar
Objetivo
Analizar mediante métodos estadísticos las razones por las cuales el declive de las polinizadoras específicamente abejas, así como sus consecuencias en la producción alimenticia en México y el mundo para despues encontrar un metodo analitico capaz de predecir el comportamiento de las colonias de abejas. Las preguntas que se buscan responder son las siguientes ¿Cuáles son los factores principales que afectan las colonias de abejas? ¿Los cambios en temperatura afectan a las colonias de abejas? ¿La deforestación afecta a las colonias de abejas?
Marco teórico
Polinizadores:
Un polinizador es un tipo de animal que trasporta polen de la antera (órgano masculino de la flor) al estigma (órgano femenino). Para que así se logre la reproducción de las plantas.
Angiosperma
Los angiospermas también llamados plantas florales son plantas cuyas flores tienen sépalos, pétalos, estambres y carpelos.
Polinización
Es la acción del transporte de polen desde la planta macho hacia la planta hembra con la función de juntar los gametos masculinos y femeninos y así lograr su reproducción.
Metodos
Los metodos utilizados son:
Coeficiente de relacion de pearson
En estadística, el coeficiente de correlación de Pearson (PCC, pronunciado /ˈpɪərsən/), también conocido como la r de Pearson, el coeficiente de correlación producto-momento de Pearson (PPMCC), la correlación bivariada, o coloquialmente simplemente como el coeficiente de correlación ― es una medida de correlación lineal entre dos conjuntos de datos. Es el cociente entre la covarianza de dos variables y el producto de sus desviaciones estándar; por lo tanto, es esencialmente una medida normalizada de la covarianza, de modo que el resultado siempre tiene un valor entre −1 y 1.
formula:
\(\begin{array}{l}\large r=\frac{n(\sum xy)-(\sum x)(\sum y)}{\sqrt{[n\sum x^{2}-(\sum x)^{2}][n\sum y^{2}-(\sum y)^{2}]}}\end{array}\)
Análisis de Regresión Lineal
La regresion lineal es un modelo matematico que nos sirve para saber que tan relacionado esta una variable con otra, se usa comunmente para predecir el comportamiento de una variable en el tiempo
Formula:
\({\displaystyle Y=\beta _{0}+\beta _{1}X_{1}+\cdots +\beta _{m}X_{m}+\varepsilon }\)
Analisis de series de tiempo
En matemáticas, una serie de tiempo es una serie de puntos de datos indexados (o listados o graficados) en orden de tiempo. Más comúnmente, una serie de tiempo es una secuencia tomada en puntos sucesivos igualmente espaciados en el tiempo. Por lo tanto, es una secuencia de datos en tiempo discreto. Ejemplos de series de tiempo son las alturas de las mareas oceánicas, el conteo de manchas solares y el valor de cierre diario del promedio industrial Dow Jones.
librerias utilizadas
library(pacman)
p_load("DT","xfun", "readr","prettydoc", "stringr","vembedr", "xfun", "ggplot2", "readr","corrplot", "plotly","rlang","rpart","rattle","normalr","forecast")
library(readr)
library(readxl)
show_col_types = FALSE
Descripción: Library (pacman): El paquete pacman se encarga de cargar e instalar varios paquetes a la vez con sus funciones p_load y p_install respectivamente, es decir, herramienta capaz de administrar paquetes de R. “DT”: Proporciona una interfaz para las tablas de datos. Los objetos de datos R (matrices o dataframes) se pueden mostrar como tablas en páginas HTML, proporcionando filtrado, paginación, clasificación y muchas otras características en las tablas. “xfun”: Permite descargar este documento y los datos utilizados. “prettydoc”: proporciona formatos livianos de documentos con una gama de temas atractivos “ggplot2”: Paquete para gráficos “readr”: Conjunto de librerías que todo usuario de R debería si no dominar, al menos conocer, para así resolver ciertas situaciones de la manera más sencilla posible “stringr”: conjunto de herramientas de cadena coherente y fácil de usar. Todas las funciones y definiciones de parámetros son consistentes. “vembedr”: Es hacer que sea un poco más fácil para usted insertar videos en sus documentos de rmarkdown y sus aplicaciones brillantes “corrplot”: El correlograma es un gráfico de matriz de correlación . Es muy útil resaltar las variables más correlacionadas en una tabla de datos. En este gráfico, los coeficientes de correlación se colorean según el valor. La matriz de correlación también se puede reordenar según el grado de asociación entre las variables. “rlang”: es una colección de frameworks y APIs para programar con R. “readxl”: Nos permite leer los datos desde el equipo o internet.
carga de datos
los datos cargados son de la cantidad de colmenas, la temperatura media a nivel mundial, la cantidad de deforestacion y la afectacion en los paises por el declive de los polinizadores.
Colmenas <- read_csv("Colmenas.csv")
## Rows: 30 Columns: 3
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## dbl (3): yearc, Colmenas, colmenas1m
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
Temperatura <- read_excel("Temperatura.xlsx")
deforestacion <- read_csv("deforestacion.csv")
## Rows: 20 Columns: 3
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## dbl (3): year, deforestacion, CO2
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
declive <- read.csv("vulnerability-pollinator-decline.csv")
lluvia<- read_csv("lluvias.csv")
## Rows: 30 Columns: 3
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## dbl (3): year, milimetros, metros
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
plaguicidas <- read_excel("plaguicidas.xlsx")
poblacion <- read_csv("poblacion.csv")
## Rows: 30 Columns: 3
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## dbl (3): year, poblacion, poblacion10
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(deforestacion)
View(poblacion)
View(lluvia)
Resultados y discusiones
Visualizacion de los datos
Colmenas1 <- t(Colmenas$colmenas1m)
Colmenas1 <- as.vector(Colmenas1)
Colmenas1 <- Colmenas1[2:30]
Colmenas1 <- as.numeric(Colmenas1)
Colmenas1 <- as.vector(Colmenas1)
temperatura <- t(Temperatura$temp)
temperatura <- as.vector(temperatura)
temperatura <- temperatura[111:139]
temperatura <- as.numeric(temperatura)
temperatura <- as.vector(temperatura)
lluvias <- t(lluvia$metros)
lluvias <- as.vector(lluvias)
lluvias <- lluvias[2:30]
lluvias <- as.numeric(lluvias)
lluvias <- as.vector(lluvias)
poblacion1 <- t(poblacion$poblacion10)
poblacion1 <- as.vector(poblacion1)
poblacion1 <- poblacion1[2:30]
poblacion1 <- as.numeric(poblacion1)
poblacion1 <- as.vector(poblacion1)
datos1 <- data.frame(Colmenas1, temperatura, lluvias, poblacion1)
datos1
## Colmenas1 temperatura lluvias poblacion1
## 1 2.114489 0.45 0.8779 0.8394
## 2 2.088315 0.41 0.7964 0.8551
## 3 2.107618 0.22 0.8093 0.8708
## 4 2.293733 0.23 0.8596 0.8863
## 5 2.292428 0.32 0.7182 0.9016
## 6 2.053761 0.45 0.7668 0.9166
## 7 1.919938 0.33 0.6644 0.9315
## 8 1.715948 0.46 0.6921 0.9461
## 9 1.791111 0.61 0.7410 0.9606
## 10 1.944573 0.38 0.7541 0.9748
## 11 1.875731 0.39 0.7720 0.9890
## 12 1.862372 0.54 0.7661 1.0030
## 13 1.783854 0.63 0.7389 1.0168
## 14 1.727234 0.62 0.7961 1.0308
## 15 1.745078 0.53 0.8722 1.0451
## 16 1.732112 0.68 0.7740 1.0601
## 17 1.747033 0.64 0.7740 1.0756
## 18 1.741040 0.66 0.7750 1.0917
## 19 1.797478 0.54 0.7770 1.1082
## 20 1.774757 0.66 0.7760 1.1246
## 21 1.842130 0.72 0.7790 1.1409
## 22 1.847667 0.61 0.7780 1.1570
## 23 1.898239 0.65 0.7770 1.1727
## 24 1.933105 0.68 0.7790 1.1883
## 25 1.981162 0.75 0.7800 1.2036
## 26 2.017931 0.90 0.7810 1.2186
## 27 1.859350 1.02 0.7800 1.2333
## 28 1.853807 0.92 0.7810 1.2478
## 29 2.172107 0.85 0.7810 1.2619
Matriz de correlacion usando la funcion corrplot
corrplot(cor(dplyr::select(datos1,Colmenas1, temperatura , lluvias, poblacion1)),
method = "number", tl.col = "black")
> Figura 1. Grafico de coeficientes de correlación de Pearson Podemos observar que los factores que influyen mas en la cantidad de colmenas son la temperatura y la población.
Nos podemos dar cuenta que hay una correlacion negativa lo que nos puede indicar que el aumento de temperatura es desfavorable para las abejas.
fig <- plot_ly(data=Colmenas,x=Colmenas$yearc[2:30], y = Colmenas$colmenas1m[2:30], name = 'colmenas (millones)', type = 'scatter', mode = 'lines')
fig <- fig %>% add_trace(y = Temperatura$temp[111:139], name = 'Cambios de temperatura')
fig <- fig %>% add_trace(y = lluvia$metros[2:30], name = 'Metros de lluvia al año')
fig <- fig %>% add_trace(y = poblacion$poblacion10[2:30], name = 'Aumento de poblacion')
fig
Figura 2. Grafico de número de colmenas en México (1989-2018) Esta grafica interactiva nos muestra la relacion entre la cantidad de colmenas y los cambios de temperatura, podemos confirmar que hay una relacion negativa entre las temperaturas registradas y la cantidad de colmenas.
relacion entre deforestacion y cantidad de colmenas
deforestacion <- cbind(Colmenas$Colmenas[13:30],deforestacion$deforestacion[1:18])
round( cor( x =deforestacion, method = "pearson"), 3)
## [,1] [,2]
## [1,] 1.000 0.261
## [2,] 0.261 1.000
Se puede observar que no hay mucha relacion entre la deforestacion y la cantidad de colmenas
Analisis de regresion lineal
Sabiendo que la variable mas relacinada es la de temperatura se usara para el modelo de regresion lineal
modelo <- lm(Colmenas$Colmenas ~ Temperatura$temp [110:139])
summary(modelo)
##
## Call:
## lm(formula = Colmenas$Colmenas ~ Temperatura$temp[110:139])
##
## Residuals:
## Min 1Q Median 3Q Max
## -255382 -122604 -42877 104192 352882
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2150736 90474 23.772 <2e-16 ***
## Temperatura$temp[110:139] -390013 149517 -2.608 0.0144 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 164800 on 28 degrees of freedom
## Multiple R-squared: 0.1955, Adjusted R-squared: 0.1668
## F-statistic: 6.804 on 1 and 28 DF, p-value: 0.01443
La r cuadrada de nuestro metodo resulto ser demasiado baja para ser considerada como aceptable para predecir la cantidad de colmenas.
analisis de series de tiempo
Colmenasts <- ts(datos1[,1], start = 1990, end = 2018, frequency = 2)
Colmenasts
## Time Series:
## Start = c(1990, 1)
## End = c(2018, 1)
## Frequency = 2
## [1] 2.114489 2.088315 2.107618 2.293733 2.292428 2.053761 1.919938 1.715948
## [9] 1.791111 1.944573 1.875731 1.862372 1.783854 1.727234 1.745078 1.732112
## [17] 1.747033 1.741040 1.797478 1.774757 1.842130 1.847667 1.898239 1.933105
## [25] 1.981162 2.017931 1.859350 1.853807 2.172107 2.114489 2.088315 2.107618
## [33] 2.293733 2.292428 2.053761 1.919938 1.715948 1.791111 1.944573 1.875731
## [41] 1.862372 1.783854 1.727234 1.745078 1.732112 1.747033 1.741040 1.797478
## [49] 1.774757 1.842130 1.847667 1.898239 1.933105 1.981162 2.017931 1.859350
## [57] 1.853807
autoplot(Colmenasts)
> Figura 3. Serie de tiempo de las colmenas Las series de tiempo nos ayudan a predecir datos a futuro.
Descomponer una serie de tiempo en sus partes principales
Este proceso indetificara los diversos componentes exsistentes de una serie de tiempo estos componentes nos pueden ayudar a calcular un modelo y asi intentar predecir el comportamiento a futuro de la variable se usara un suavizado exponencial.
Colmena_dc <- Colmenasts %>%
decompose(type="multiplicative") %>%
autoplot()
Colmena_dc
Validacion cruzada
La validación cruzada (CV) es una técnica popular para ajustar hiperparámetros y producir medidas sólidas del rendimiento del modelo.
test_Colmenas <- tail(Colmenasts, 5) #20% para pruebas
train_Colmenas<- head(Colmenasts, length(Colmenasts)-5) #80% para entrenamiento
Ajuste del modelo
Para ajustar el modelo se usara el metodo Holt-Winters el cual es una ampliación perfeccionada del enfoque de la suavización exponencial, mientras que el procedimiento de suavización proporciona una impresión general, movimientos a largo plazo en la información y permite la elaboración de pronósticos a corto plazo.
Colmenas_ses <- HoltWinters(train_Colmenas, seasonal = "multiplicative",)
Colmenas_ses
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component.
##
## Call:
## HoltWinters(x = train_Colmenas, seasonal = "multiplicative")
##
## Smoothing parameters:
## alpha: 0.9769925
## beta : 0.05305953
## gamma: 1
##
## Coefficients:
## [,1]
## a 1.90496612
## b 0.00399583
## s1 0.99167303
## s2 0.99646864
Forecasting
Colmenas_forecast <- forecast(object = Colmenas_ses, h=30)
Visualizando datos
Colmenasts %>%
autoplot(series = "actual") +
autolayer(Colmenas_forecast$fitted, series = "train") +
autolayer(Colmenas_forecast$mean, series = "test") +
theme_minimal()
## Warning: Removed 2 row(s) containing missing values (geom_path).
Nos podemos dar cuenta que el modelo tiene problemas al predecir los resultados de las colonias de abejas
Utilizando el metodo ARIMA
Para hacer frente a la estacionalidad, los procesos ARIMA han sido generalizados, estableciendo los modelos SARIMA (Seasonal Autoregressive Integrated Moving Average Model).
Analisis de ajuste
Colmenas_diff <- Colmenasts %>%
diff(lag=12) %>%
diff(lag=1)
Colmenas_diff %>%
autoplot()
Analizando la serie de tiempo por medio de un modelo ARIMA
Colmenas_auto <- auto.arima(y = train_Colmenas, seasonal = T)
summary(Colmenas_auto)
## Series: train_Colmenas
## ARIMA(1,0,1) with non-zero mean
##
## Coefficients:
## ar1 ma1 mean
## 0.6728 0.4149 1.9173
## s.e. 0.1259 0.1793 0.0539
##
## sigma^2 = 0.009312: log likelihood = 48.7
## AIC=-89.41 AICc=-88.56 BIC=-81.6
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.003009913 0.09367616 0.07272122 -0.386701 3.765824 0.6041556
## ACF1
## Training set -0.01892488
Con un modelo ARIMA el modelo mejoro de sobremanera y es aceptable ya que tiene un error menor al 5%
train_Colmenas%>%
autoplot(series= "actual") +
autolayer (Colmenas_auto$fitted, series = "SARIMA auto") +
theme_minimal()
Se puede observar que el modelo con sarima logro predecir de manera aceptable el comportamiento de las colonias de abejas.
Conclusiones:
SDurante el desarrollo de tal análisis se percataron algunos componentes del cual provoca la muerte y posible extinción de las abejas, para dicho análisis se utilizaron varias metodologías estadística , los factores más nocivos plaguicidas, la deforestación y el crecimiento poblacional, son los que principalmente influyen en la desaparición de estas especies de abejas, si algún día estas se extinguen, la humanidad estará en peligro reciprocamente
Descarga de codigo y datos
xfun::embed_file("Examen unidad 1.Rmd")
xfun::embed_file("Colmenas.csv")
xfun::embed_file("Temperatura.xlsx")
xfun::embed_file("Deforestacion.csv")
xfun::embed_file("Vulnerability-pollinator-decline.csv")
Download Vulnerability-pollinator-decline.csv
xfun::embed_file("lluvias.csv")
xfun::embed_file("plaguicidas.xlsx")
xfun::embed_file("poblacion.csv")
Referencias
[1] Delua J. Supervised vs. Unsupervised Learning: What’s the Difference? https://www.ibm.com/cloud/blog/supervised-vs-unsupervised-learning. el 12 de marzo de 2021
[2] Calderone NW. 2012Insect pollinated crops, insect pollinators and US agriculture: trend analysis of aggregate data for the period 1992–2009. PLoS ONE 7, e37235. (doi:10.1371/journal.pone.0037235) Crossref, PubMed, ISI, Google Scholar
[3] Ollerton J, Winfree R, Tarrant S. 2011How many flowering plants are pollinated by animals?Oikos 120, 321–326. (doi:10.1111/j.1600-0706.2010.18644.x) Crossref, ISI, Google Scholar
[4] schudy RH, Tschudy BD (1986) Extinction and survival of plant life following the Cretaceous/Tertiary boundary event, Western Interior, North America (USA). Geology 14: 667–670.
[5] Labandeira CC, Johnson KR, Wilf P (2002) Impact of the terminal Cretaceous event on plant-insect associations, Proc Nat Acad Sci USA. 99: 2061–2066.