Reading in the data
library(sf)
## Warning: package 'sf' was built under R version 4.4.2
## Linking to GEOS 3.12.2, GDAL 3.9.3, PROJ 9.4.1; sf_use_s2() is TRUE
## Data management
setwd("C:/Users/ssrini06/Box/SpatStat_Labs/Assignment10_SpTime/Lab10_Montana")
fire_notclean <- read_sf("Montana_fires_proj_corr.shp")
# Data frame for the table with subset of the variables remove NA
library("tidyr")
fire_clean <- na.omit(fire_notclean[c(2:4,11:18, 20:29,37:65)])
#Make sure date is read as a date
class(fire_clean$FireDiscov)
## [1] "Date"
#if you need to convert then use this code
fire_clean$NewDate <- as.Date(fire_clean$FireDiscov,"%m-%d-%y")
fire <- fire_clean[order(as.Date(fire_clean$NewDate, format="%m/%d/%Y")),]
fire_table <- data.frame(fire)
#removing NA locations and getting only the X Y coordinate and date
fire_xyt <- na.omit(fire_table[c(49:50,6,1)])
fire_xy <- na.omit(fire_table[c(49:50)])
Exploratory space time data analysis
#Create a new variable YearCat for time intervals: five categories
fire$YearCat4 <- "1"
fire$YearCat4[fire_table$NewDate > as.Date("2021-01-01") & fire_table$NewDate < as.Date("2022-01-01")] <- "2"
fire$YearCat4[fire_table$NewDate > as.Date("2022-01-01") & fire_table$NewDate < as.Date("2023-01-01")] <- "3"
fire$YearCat4[fire_table$NewDate > as.Date("2023-01-01") & fire_table$NewDate < as.Date("2024-01-01")] <- "4"
summary.factor(fire$YearCat4)
## 1 2 3 4
## 193 239 178 132
#two categories: before and after Jan 1 22
fire$YearCat <- "1"
fire$YearCat[fire_table$NewDate > as.Date("2022-01-01")] <- "2"
summary.factor(fire$YearCat)
## 1 2
## 432 310
#https://data-nifc.opendata.arcgis.com/datasets/nifc::inform-fire-occurrence-data-records/about
summary.factor(fire$Predominan)
## Brush Grass Grass-Shrub Nonburnable Slash Timber
## 22 140 92 3 39 446
summary.factor(fire$POOCounty)
## Beaverhead Big Horn Blaine Broadwater Carbon
## 23 12 3 5 7
## Carter Cascade Custer Dawson Deer Lodge
## 22 5 11 2 6
## Fergus Flathead Gallatin Garfield Glacier
## 4 63 20 11 1
## Granite Jefferson Judith Basin Lake Lewis and Clark
## 12 25 4 24 29
## Liberty Lincoln Madison McCone Meagher
## 1 8 4 8 5
## Mineral Missoula Musselshell Park Petroleum
## 36 94 1 21 3
## Phillips Pondera Powder River Powell Prairie
## 2 1 81 19 6
## Ravalli Roosevelt Rosebud Sanders Silver Bow
## 54 2 26 44 20
## Stillwater Sweet Grass Teton Wheatland Wibaux
## 2 6 3 1 3
## Yellowstone
## 2
#Days that fire was not contained
summary(fire$FireDays)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 1.00 8.00 19.75 27.00 155.00
#Acres of fire
summary(fire$Calculated)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.100 0.250 401.263 6.968 29884.810
# Exploratory Temporal Data Analysis
library(ggplot2)
#changing from e notation
options(scipen=999)
p <- ggplot(fire_table, aes(x = NewDate, y = Calculated))
p + geom_line() + geom_point() + xlab("Years") + ylab("Acreage")
p + geom_line(aes(color = Predominan)) + geom_point() + xlab("Time") + ylab("Acreage")
# Plot the points
# change the basemap to ESRI Topomap
plot(st_geometry(fire))
library(RColorBrewer)
library(tmap)
## Warning: package 'tmap' was built under R version 4.4.3
tm_shape(fire) +
tm_dots(fill="Calculated",
fill.scale = tm_scale(values="brewer.reds", style = "quantile"),
fill.legend = tm_legend(title = "Acreage", size = 0.8))+
tmap_mode("view")
## ℹ tmap mode set to "view".
## Registered S3 method overwritten by 'jsonify':
## method from
## print.json jsonlite
#plot the time line
library(spacetime)
## Warning: package 'spacetime' was built under R version 4.4.3
library(sp)
crs_fire <- proj4string(as(fire, 'Spatial'))
pts <- SpatialPoints(fire_xy, CRS("+init=epsg:32100"))
## Warning in CPL_crs_from_input(x): GDAL Message 1: +init=epsg:XXXX syntax is
## deprecated. It might return a CRS with a non-EPSG compliant axis order.
day <- as.Date(fire_xyt$FireDiscov)
stiObj <- STI(pts, day)
plot(stiObj)
# plot shows the space-time (time=x, space=y)
#a lot of points at a location in the plot
#suggests Space and Time clustering
class(stiObj)
## [1] "STI"
## attr(,"package")
## [1] "spacetime"
#STIDF is a space time data frame
spat_part <- SpatialPoints(fire_xyt[,1:2])
temp_part <- fire_xyt[,3]
data_part <- fire_xyt[,4]
STIDFObj <- STIDF(sp = spat_part,
time = temp_part,
data = data.frame(data_part))
#plotting the space time data
library(RColorBrewer)
stplot(STIDFObj, number=8, col.regions = brewer.pal(7, "YlOrRd"),cuts=7)
Section 2.1 Space time descriptive statistics Knox and Mantel tests
# install.packages("surveillance")
library(surveillance)
## Warning: package 'surveillance' was built under R version 4.4.2
## Loading required package: xtable
## This is surveillance 1.24.1; see 'package?surveillance' or
## https://surveillance.R-Forge.R-project.org/ for an overview.
## Perform the Knox test using the Poisson approximation
#for this data:
#dt is time step in days
#ds is distance in space in meters
knoxtest <- knox(
dt = dist(fire$FireDiscov), eps.t = 15,
ds = dist(st_coordinates(fire)), eps.s = 50000,
simulate.p.value = FALSE
)
knoxtest
##
## Knox test with Poisson approximation
##
## data: dt = dist(fire$FireDiscov) and ds = dist(st_coordinates(fire))
## number of close pairs = 1473, lambda = 1091.4, p-value <
## 0.00000000000000022
## alternative hypothesis: true number is greater than 1091.419
##
## contingency table:
## ds
## dt <= 50000 > 50000
## <= 15 1473 16160
## > 15 15543 241735
## Obtain the p-value via a Monte Carlo permutation test
# B is the number of permutations
# Higher number will take more time
knoxtest <- knox(
dt = dist(fire$FireDiscov), eps.t = 14,
ds = dist(st_coordinates(fire)), eps.s = 50000,
simulate.p.value = TRUE, B=100,
.parallel = 2, .seed = 1, .verbose = FALSE
)
#contingency table compares all point pairs (n*n-1)/2
knoxtest
##
## Knox test with simulated p-value
##
## data: dt = dist(fire$FireDiscov) and ds = dist(st_coordinates(fire))
## number of close pairs = 1420, B = 100, p-value = 0.009901
## alternative hypothesis: true number is greater than 1033.732
##
## contingency table:
## ds
## dt <= 50000 > 50000
## <= 14 1420 15281
## > 14 15596 242614
#install.packages("ade4")
library(ade4)
## Warning: package 'ade4' was built under R version 4.4.3
##
## Attaching package: 'ade4'
## The following object is masked from 'package:surveillance':
##
## score
dt <- dist(fire_xyt$FireDiscov)
#distances are how far apart they are in time days
# five categories
as.matrix(dt)[1:5, 1:5]
## 1 2 3 4 5
## 1 0 58 64 72 77
## 2 58 0 6 14 19
## 3 64 6 0 8 13
## 4 72 14 8 0 5
## 5 77 19 13 5 0
ds <- dist(coordinates(SpatialPoints(fire_xyt[,1:2])))
#distances are actual distances in meters
#five categories
as.matrix(ds)[1:5, 1:5]
## 1 2 3 4 5
## 1 0.00 73123.44 31060.90 62842.34 66711.83
## 2 73123.44 0.00 97051.33 127499.51 6508.06
## 3 31060.90 97051.33 0.00 32123.80 90560.88
## 4 62842.34 127499.51 32123.80 0.00 121082.50
## 5 66711.83 6508.06 90560.88 121082.50 0.00
mantel.rtest(ds, dt, nrepet = 499)
## Warning in is.euclid(m2): Zero distance(s)
## Monte-Carlo test
## Call: mantel.rtest(m1 = ds, m2 = dt, nrepet = 499)
##
## Observation: 0.01778736
##
## Based on 499 replicates
## Simulated p-value: 0.03
## Alternative hypothesis: greater
##
## Std.Obs Expectation Variance
## 1.86641262205 0.00044336004 0.00008635415
Section 2.2 Space time K cross tests
# point patterns
library(spatstat)
## Warning: package 'spatstat' was built under R version 4.4.3
## Loading required package: spatstat.data
## Warning: package 'spatstat.data' was built under R version 4.4.3
## Loading required package: spatstat.univar
## Warning: package 'spatstat.univar' was built under R version 4.4.3
## spatstat.univar 3.1-2
## Loading required package: spatstat.geom
## Warning: package 'spatstat.geom' was built under R version 4.4.3
## spatstat.geom 3.3-6
##
## Attaching package: 'spatstat.geom'
## The following object is masked from 'package:ade4':
##
## disc
## Loading required package: spatstat.random
## Warning: package 'spatstat.random' was built under R version 4.4.3
## spatstat.random 3.3-2
## Loading required package: spatstat.explore
## Warning: package 'spatstat.explore' was built under R version 4.4.2
## Loading required package: nlme
## spatstat.explore 3.3-4
## Loading required package: spatstat.model
## Warning: package 'spatstat.model' was built under R version 4.4.2
## Loading required package: rpart
## spatstat.model 3.3-4
## Loading required package: spatstat.linnet
## Warning: package 'spatstat.linnet' was built under R version 4.4.3
## spatstat.linnet 3.2-5
##
## spatstat 3.3-1
## For an introduction to spatstat, type 'beginner'
fire_sp <- as_Spatial(fire)
firepp <- as.ppp(fire)
firepp.km <- rescale(firepp, 1000, "km")
window <- as.owin(firepp.km)
#marks are the types of points being compared
# pre 2022 and post
marks(firepp.km) <- factor(fire$YearCat)
#could use inhomogeneous because the points are
# not homogeneously distributed
#comparing point pattern of two different years
#Kcross suggests points in both time periods cluster
# with each other until about 50km
kcrossresults <- Kcross(firepp.km)
plot(kcrossresults)
#Compare multiple years
#if its above the poisson more clustered than expected
#along the diagonal its a K not a K cross
marks(firepp.km) <- factor(fire$YearCat4)
plot(alltypes(firepp.km, Kcross, envelope=TRUE))
#for every time period the fires cluster
#they are close to fires from other time periods
Section 3.0 Kriging in space and time
#empirical variogram
#takes some time
library(gstat)
## Warning: package 'gstat' was built under R version 4.4.3
##
## Attaching package: 'gstat'
## The following object is masked from 'package:spatstat.explore':
##
## idw
var <- variogramST(data_part~1,data=STIDFObj, tlags=1:10,tunit="weeks",assumeRegular=F,na.omit=T)
# interpret like usual variogram which lag works best?
#For higher distances the differences in Area should be higher
# a lag of 1 week seems closest to an expected variogram
plot(var, map=F)
#for lag of 1-3 weeks you see increasing semivariance with distance
plot(var, map=T)
plot(var, wireframe=T)
#demo shows you how to space time krige for a dataset for pollution # where there is a space time trend unlike our data for fires
#demo(stkrige)
4.1 Regressions with time lags
#removing NA locations
fire_model_data <- data.frame(na.omit(fire))
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
#save summary to text or html file
stargazer(fire_model_data,type = "text", out="summary.txt")
##
## ================================================================
## Statistic N Mean St. Dev. Min Max
## ----------------------------------------------------------------
## Calculated 742 401.263 2,296.127 0.000 29,884.810
## FinalAcres 742 0.000 0.000 0 0
## InitialLon 742 -105.164 25.684 -125.700 0.000
## IsFireCaus 742 0.152 0.360 0 1
## IsFSAssist 742 0.799 0.401 0 1
## IsReimburs 742 0.000 0.000 0 0
## IsTrespass 742 0.062 0.241 0 1
## PercentCon 742 0.000 0.000 0 0
## FireCauseI 742 2.049 0.965 1 3
## FireCauseG 742 4.491 4.372 1 13
## FireCauseS 742 7.987 18.621 0 77
## FireCaus_1 742 0.488 4.505 0 60
## FireCauseA 742 0.071 0.489 0 4
## FireCaus_2 742 0.515 2.896 0 19
## IsCausePro 742 0.011 0.103 0 1
## AcresBIA 742 6.116 118.223 0.000 2,939.440
## AcresBLM 742 40.943 509.365 0.000 10,870.600
## AcresBOR 742 0.000 0.000 0 0
## AcresDOD 742 3.051 80.736 0.000 2,198.390
## AcresDOE 742 0.000 0.000 0 0
## AcresNPS 742 2.585 69.108 0.000 1,882.310
## AcresUSFS 742 191.794 1,458.324 0.000 23,953.170
## AcresUSFWS 742 8.277 214.758 0.000 5,847.680
## AcresForei 742 0.000 0.000 0 0
## AcresTriba 742 75.490 939.879 0.000 18,806.970
## AcresCity 742 0.000 0.000 0 0
## AcresCount 742 0.000 0.000 0 0
## AcresState 742 8.740 95.870 0.000 1,566.200
## AcresPriva 742 50.892 502.707 0.000 10,273.070
## AcresANCSA 742 0.000 0.000 0 0
## AcresOther 742 0.000 0.000 0 0
## AcresOth_1 742 0.001 0.018 0.000 0.500
## FireDays 742 19.747 28.275 0 155
## XCoord 742 453,684.700 266,663.400 122,933.800 1,020,310.000
## YCoord 742 268,805.000 113,843.500 41,429.320 534,360.900
## ----------------------------------------------------------------
stargazer(fire_model_data,type = "html", out="summary.html")
##
## <table style="text-align:center"><tr><td colspan="6" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Statistic</td><td>N</td><td>Mean</td><td>St. Dev.</td><td>Min</td><td>Max</td></tr>
## <tr><td colspan="6" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Calculated</td><td>742</td><td>401.263</td><td>2,296.127</td><td>0.000</td><td>29,884.810</td></tr>
## <tr><td style="text-align:left">FinalAcres</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">InitialLon</td><td>742</td><td>-105.164</td><td>25.684</td><td>-125.700</td><td>0.000</td></tr>
## <tr><td style="text-align:left">IsFireCaus</td><td>742</td><td>0.152</td><td>0.360</td><td>0</td><td>1</td></tr>
## <tr><td style="text-align:left">IsFSAssist</td><td>742</td><td>0.799</td><td>0.401</td><td>0</td><td>1</td></tr>
## <tr><td style="text-align:left">IsReimburs</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">IsTrespass</td><td>742</td><td>0.062</td><td>0.241</td><td>0</td><td>1</td></tr>
## <tr><td style="text-align:left">PercentCon</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">FireCauseI</td><td>742</td><td>2.049</td><td>0.965</td><td>1</td><td>3</td></tr>
## <tr><td style="text-align:left">FireCauseG</td><td>742</td><td>4.491</td><td>4.372</td><td>1</td><td>13</td></tr>
## <tr><td style="text-align:left">FireCauseS</td><td>742</td><td>7.987</td><td>18.621</td><td>0</td><td>77</td></tr>
## <tr><td style="text-align:left">FireCaus_1</td><td>742</td><td>0.488</td><td>4.505</td><td>0</td><td>60</td></tr>
## <tr><td style="text-align:left">FireCauseA</td><td>742</td><td>0.071</td><td>0.489</td><td>0</td><td>4</td></tr>
## <tr><td style="text-align:left">FireCaus_2</td><td>742</td><td>0.515</td><td>2.896</td><td>0</td><td>19</td></tr>
## <tr><td style="text-align:left">IsCausePro</td><td>742</td><td>0.011</td><td>0.103</td><td>0</td><td>1</td></tr>
## <tr><td style="text-align:left">AcresBIA</td><td>742</td><td>6.116</td><td>118.223</td><td>0.000</td><td>2,939.440</td></tr>
## <tr><td style="text-align:left">AcresBLM</td><td>742</td><td>40.943</td><td>509.365</td><td>0.000</td><td>10,870.600</td></tr>
## <tr><td style="text-align:left">AcresBOR</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">AcresDOD</td><td>742</td><td>3.051</td><td>80.736</td><td>0.000</td><td>2,198.390</td></tr>
## <tr><td style="text-align:left">AcresDOE</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">AcresNPS</td><td>742</td><td>2.585</td><td>69.108</td><td>0.000</td><td>1,882.310</td></tr>
## <tr><td style="text-align:left">AcresUSFS</td><td>742</td><td>191.794</td><td>1,458.324</td><td>0.000</td><td>23,953.170</td></tr>
## <tr><td style="text-align:left">AcresUSFWS</td><td>742</td><td>8.277</td><td>214.758</td><td>0.000</td><td>5,847.680</td></tr>
## <tr><td style="text-align:left">AcresForei</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">AcresTriba</td><td>742</td><td>75.490</td><td>939.879</td><td>0.000</td><td>18,806.970</td></tr>
## <tr><td style="text-align:left">AcresCity</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">AcresCount</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">AcresState</td><td>742</td><td>8.740</td><td>95.870</td><td>0.000</td><td>1,566.200</td></tr>
## <tr><td style="text-align:left">AcresPriva</td><td>742</td><td>50.892</td><td>502.707</td><td>0.000</td><td>10,273.070</td></tr>
## <tr><td style="text-align:left">AcresANCSA</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">AcresOther</td><td>742</td><td>0.000</td><td>0.000</td><td>0</td><td>0</td></tr>
## <tr><td style="text-align:left">AcresOth_1</td><td>742</td><td>0.001</td><td>0.018</td><td>0.000</td><td>0.500</td></tr>
## <tr><td style="text-align:left">FireDays</td><td>742</td><td>19.747</td><td>28.275</td><td>0</td><td>155</td></tr>
## <tr><td style="text-align:left">XCoord</td><td>742</td><td>453,684.700</td><td>266,663.400</td><td>122,933.800</td><td>1,020,310.000</td></tr>
## <tr><td style="text-align:left">YCoord</td><td>742</td><td>268,805.000</td><td>113,843.500</td><td>41,429.320</td><td>534,360.900</td></tr>
## <tr><td colspan="6" style="border-bottom: 1px solid black"></td></tr></table>
#Model with all the data
#outcome is FireDays and explanatory variable is Area
ols <- lm(FireDays ~ Calculated, data=fire_model_data)
summary(ols)
##
## Call:
## lm(formula = FireDays ~ Calculated, data = fire_model_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -87.51 -16.67 -10.67 8.33 135.33
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 17.6695435 0.9567848 18.47 <0.0000000000000002 ***
## Calculated 0.0051764 0.0004107 12.60 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 25.67 on 740 degrees of freedom
## Multiple R-squared: 0.1767, Adjusted R-squared: 0.1756
## F-statistic: 158.8 on 1 and 740 DF, p-value: < 0.00000000000000022
# Using time series data with quarters fire_ts
library(zoo)
## Warning: package 'zoo' was built under R version 4.4.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
fire_model_data$fire_qts <- as.yearqtr(fire_model_data$NewDate, format = "%Y-%m-%d")
head(fire_model_data)
# Aggregate data to quarters
# Making sure it reads dplyr function summarize and not from Hmisc
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:nlme':
##
## collapse
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
fire_ts <- fire_model_data %>% group_by(fire_qts) %>%
dplyr::summarize(Days_SUM = sum(FireDays), ACRE_SUM= sum(Calculated))
head(fire_ts)
# MOdel with quarters instead of all points
ols2 <- lm(Days_SUM ~ ACRE_SUM, data=fire_ts)
summary(ols2)
##
## Call:
## lm(formula = Days_SUM ~ ACRE_SUM, data = fire_ts)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1164.70 -78.00 -21.14 154.58 1011.93
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 133.615152 158.818595 0.841 0.415
## ACRE_SUM 0.042480 0.004412 9.628 0.000000279 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 513.1 on 13 degrees of freedom
## Multiple R-squared: 0.877, Adjusted R-squared: 0.8676
## F-statistic: 92.71 on 1 and 13 DF, p-value: 0.0000002787
library(Hmisc)
## Warning: package 'Hmisc' was built under R version 4.4.3
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:dplyr':
##
## src, summarize
## The following objects are masked from 'package:xtable':
##
## label, label<-
## The following objects are masked from 'package:base':
##
## format.pval, units
#using a lag for area 1 day or 7 day
fire_model_data$lag1time <- Lag(fire_model_data$FireDays,1)
fire_model_data$lag7time <- Lag(fire_model_data$FireDays,7)
olstime <- lm(FireDays ~ Calculated + Lag(FireDays,1), data=fire_model_data)
summary(olstime)
##
## Call:
## lm(formula = FireDays ~ Calculated + Lag(FireDays, 1), data = fire_model_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -95.150 -15.845 -9.847 7.809 137.154
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 15.8445255 1.1539632 13.731 < 0.0000000000000002 ***
## Calculated 0.0051270 0.0004093 12.526 < 0.0000000000000002 ***
## Lag(FireDays, 1) 0.0944767 0.0332428 2.842 0.00461 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 25.56 on 738 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.1856, Adjusted R-squared: 0.1834
## F-statistic: 84.09 on 2 and 738 DF, p-value: < 0.00000000000000022
#quarter based lag
olstime2 <- lm(Days_SUM ~ ACRE_SUM + Lag(Days_SUM,1), data=fire_ts)
summary(olstime2)
##
## Call:
## lm(formula = Days_SUM ~ ACRE_SUM + Lag(Days_SUM, 1), data = fire_ts)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1164.59 -93.54 1.44 184.76 1022.00
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 109.387141 229.691023 0.476 0.643
## ACRE_SUM 0.042705 0.005013 8.520 0.00000357 ***
## Lag(Days_SUM, 1) 0.016775 0.110646 0.152 0.882
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 557.2 on 11 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.8741, Adjusted R-squared: 0.8512
## F-statistic: 38.18 on 2 and 11 DF, p-value: 0.00001124
#saving results table
stargazer(ols,olstime, ols2, olstime2, column.labels = c("All data", "All data", "Quarters Data", "Quarters Data"), digits=1, type = "html", out="ols.html")
##
## <table style="text-align:center"><tr><td colspan="5" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td colspan="4"><em>Dependent variable:</em></td></tr>
## <tr><td></td><td colspan="4" style="border-bottom: 1px solid black"></td></tr>
## <tr><td style="text-align:left"></td><td colspan="2">FireDays</td><td colspan="2">Days_SUM</td></tr>
## <tr><td style="text-align:left"></td><td>All data</td><td>All data</td><td>Quarters Data</td><td>Quarters Data</td></tr>
## <tr><td style="text-align:left"></td><td>(1)</td><td>(2)</td><td>(3)</td><td>(4)</td></tr>
## <tr><td colspan="5" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Calculated</td><td>0.01<sup>***</sup></td><td>0.01<sup>***</sup></td><td></td><td></td></tr>
## <tr><td style="text-align:left"></td><td>(0.000)</td><td>(0.000)</td><td></td><td></td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Lag(FireDays, 1)</td><td></td><td>0.1<sup>***</sup></td><td></td><td></td></tr>
## <tr><td style="text-align:left"></td><td></td><td>(0.03)</td><td></td><td></td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">ACRE_SUM</td><td></td><td></td><td>0.04<sup>***</sup></td><td>0.04<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td>(0.004)</td><td>(0.01)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Lag(Days_SUM, 1)</td><td></td><td></td><td></td><td>0.02</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td><td>(0.1)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Constant</td><td>17.7<sup>***</sup></td><td>15.8<sup>***</sup></td><td>133.6</td><td>109.4</td></tr>
## <tr><td style="text-align:left"></td><td>(1.0)</td><td>(1.2)</td><td>(158.8)</td><td>(229.7)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td><td></td></tr>
## <tr><td colspan="5" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>742</td><td>741</td><td>15</td><td>14</td></tr>
## <tr><td style="text-align:left">R<sup>2</sup></td><td>0.2</td><td>0.2</td><td>0.9</td><td>0.9</td></tr>
## <tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.2</td><td>0.2</td><td>0.9</td><td>0.9</td></tr>
## <tr><td style="text-align:left">Residual Std. Error</td><td>25.7 (df = 740)</td><td>25.6 (df = 738)</td><td>513.1 (df = 13)</td><td>557.2 (df = 11)</td></tr>
## <tr><td style="text-align:left">F Statistic</td><td>158.8<sup>***</sup> (df = 1; 740)</td><td>84.1<sup>***</sup> (df = 2; 738)</td><td>92.7<sup>***</sup> (df = 1; 13)</td><td>38.2<sup>***</sup> (df = 2; 11)</td></tr>
## <tr><td colspan="5" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td colspan="4" style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
## </table>
4.2 Regressions with with fixed and random effects for time
#panel regression with fixed effects for year
require(plm)
## Loading required package: plm
## Warning: package 'plm' was built under R version 4.4.2
##
## Attaching package: 'plm'
## The following objects are masked from 'package:dplyr':
##
## between, lag, lead
fire_model_data$FIRE_YEAR <- format(fire_model_data$NewDate, format="%Y")
fixed_effects_fire <-plm(FireDays ~ Calculated,
index = "FIRE_YEAR",
model="within",
data=fire_model_data)
summary(fixed_effects_fire)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = FireDays ~ Calculated, data = fire_model_data,
## model = "within", index = "FIRE_YEAR")
##
## Unbalanced Panel: n = 4, T = 132-239, N = 742
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -90.5645 -15.1258 -9.1253 6.6104 129.9676
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## Calculated 0.00505327 0.00040478 12.484 < 0.00000000000000022 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 568460
## Residual Sum of Squares: 469230
## R-Squared: 0.17455
## Adj. R-Squared: 0.17007
## F-statistic: 155.849 on 1 and 737 DF, p-value: < 0.000000000000000222
# n = number of groups/panels, T = number of time periods, N = total number of observations
# with dummies for time intervals
fixed_effects_fireqt <-plm(FireDays ~ Calculated,
index = "YearCat4",
model="within",
data=fire_model_data)
summary(fixed_effects_fireqt)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = FireDays ~ Calculated, data = fire_model_data,
## model = "within", index = "YearCat4")
##
## Unbalanced Panel: n = 4, T = 132-239, N = 742
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -90.5645 -15.1258 -9.1253 6.6104 129.9676
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## Calculated 0.00505327 0.00040478 12.484 < 0.00000000000000022 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 568460
## Residual Sum of Squares: 469230
## R-Squared: 0.17455
## Adj. R-Squared: 0.17007
## F-statistic: 155.849 on 1 and 737 DF, p-value: < 0.000000000000000222
# Extracting fixed effects with fixef
# shows how many days of fire increases (or not) for unit acreage increase
# in each time period
# note that only some years are significant and can be negative
fixef(fixed_effects_fire, type = "dmean")
## 2020 2021 2022 2023
## -7.4400 5.3122 2.1165 -1.5941
summary(fixef(fixed_effects_fire, type = "dmean"))
## Estimate Std. Error t-value Pr(>|t|)
## 2020 -7.4400 1.8177 -4.0930 0.00004728 ***
## 2021 5.3122 1.6489 3.2216 0.001331 **
## 2022 2.1165 1.8953 1.1167 0.264475
## 2023 -1.5941 2.2067 -0.7224 0.470283
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
fixef(fixed_effects_fireqt, type = "dmean")
## 1 2 3 4
## -7.4400 5.3122 2.1165 -1.5941
summary(fixef(fixed_effects_fireqt, type = "dmean"))
## Estimate Std. Error t-value Pr(>|t|)
## 1 -7.4400 1.8177 -4.0930 0.00004728 ***
## 2 5.3122 1.6489 3.2216 0.001331 **
## 3 2.1165 1.8953 1.1167 0.264475
## 4 -1.5941 2.2067 -0.7224 0.470283
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# if p is small used fixed effects
# instead of ols
pFtest(fixed_effects_fire, ols)
##
## F test for individual effects
##
## data: FireDays ~ Calculated
## F = 9.6864, df1 = 3, df2 = 737, p-value = 0.000002824
## alternative hypothesis: significant effects
pFtest(fixed_effects_fireqt, ols)
##
## F test for individual effects
##
## data: FireDays ~ Calculated
## F = 9.6864, df1 = 3, df2 = 737, p-value = 0.000002824
## alternative hypothesis: significant effects
#random effects
random_effects_fire <-plm(FireDays ~ Calculated,
index = c("FIRE_YEAR"),
model="random",
data=fire_model_data)
summary(random_effects_fire)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = FireDays ~ Calculated, data = fire_model_data,
## model = "random", index = c("FIRE_YEAR"))
##
## Unbalanced Panel: n = 4, T = 132-239, N = 742
##
## Effects:
## var std.dev share
## idiosyncratic 636.678 25.232 0.973
## individual 17.947 4.236 0.027
## theta:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.5398 0.5924 0.6060 0.6020 0.6405 0.6405
##
## Residuals:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -88.843 -14.726 -10.071 0.066 7.173 132.010
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) 17.36726710 2.32654593 7.4648 0.00000000000008341 ***
## Calculated 0.00507043 0.00040496 12.5208 < 0.00000000000000022 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 571490
## Residual Sum of Squares: 471950
## R-Squared: 0.17418
## Adj. R-Squared: 0.17306
## Chisq: 156.769 on 1 DF, p-value: < 0.000000000000000222
random.effects(random_effects_fire, type = "dmean")
## 2020 2021 2022 2023
## -5.9903837 4.9231601 2.0536784 -0.9864548
random_effects_fireqt <-plm(FireDays ~ Calculated,
index = c("YearCat4"),
model="random",
data=fire_model_data)
summary(random_effects_fireqt)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = FireDays ~ Calculated, data = fire_model_data,
## model = "random", index = c("YearCat4"))
##
## Unbalanced Panel: n = 4, T = 132-239, N = 742
##
## Effects:
## var std.dev share
## idiosyncratic 636.678 25.232 0.973
## individual 17.947 4.236 0.027
## theta:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.5398 0.5924 0.6060 0.6020 0.6405 0.6405
##
## Residuals:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -88.843 -14.726 -10.071 0.066 7.173 132.010
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) 17.36726710 2.32654593 7.4648 0.00000000000008341 ***
## Calculated 0.00507043 0.00040496 12.5208 < 0.00000000000000022 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 571490
## Residual Sum of Squares: 471950
## R-Squared: 0.17418
## Adj. R-Squared: 0.17306
## Chisq: 156.769 on 1 DF, p-value: < 0.000000000000000222
random.effects(random_effects_fireqt, type = "dmean")
## 1 2 3 4
## -5.9903837 4.9231601 2.0536784 -0.9864548
summary(random.effects(random_effects_fireqt, type = "dmean"))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -5.9904 -2.2374 0.5336 0.0000 2.7710 4.9232
phtest(fixed_effects_fire, random_effects_fire)
##
## Hausman Test
##
## data: FireDays ~ Calculated
## chisq = 2.0102, df = 1, p-value = 0.1562
## alternative hypothesis: one model is inconsistent
phtest(fixed_effects_fireqt, random_effects_fireqt)
##
## Hausman Test
##
## data: FireDays ~ Calculated
## chisq = 2.0102, df = 1, p-value = 0.1562
## alternative hypothesis: one model is inconsistent
#indicates that the null hypothesis
#that the individual random effects are exogenous is rejected
#which makes the random effects equation inconsistent
#the fixed effects model is better
stargazer(ols, fixed_effects_fire, fixed_effects_fireqt, digits=1, type = "html", out="ols_ml.html")
##
## <table style="text-align:center"><tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td colspan="3"><em>Dependent variable:</em></td></tr>
## <tr><td></td><td colspan="3" style="border-bottom: 1px solid black"></td></tr>
## <tr><td style="text-align:left"></td><td colspan="3">FireDays</td></tr>
## <tr><td style="text-align:left"></td><td><em>OLS</em></td><td colspan="2"><em>panel</em></td></tr>
## <tr><td style="text-align:left"></td><td><em></em></td><td colspan="2"><em>linear</em></td></tr>
## <tr><td style="text-align:left"></td><td>(1)</td><td>(2)</td><td>(3)</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Calculated</td><td>0.01<sup>***</sup></td><td>0.01<sup>***</sup></td><td>0.01<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.000)</td><td>(0.000)</td><td>(0.000)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Constant</td><td>17.7<sup>***</sup></td><td></td><td></td></tr>
## <tr><td style="text-align:left"></td><td>(1.0)</td><td></td><td></td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>742</td><td>742</td><td>742</td></tr>
## <tr><td style="text-align:left">R<sup>2</sup></td><td>0.2</td><td>0.2</td><td>0.2</td></tr>
## <tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.2</td><td>0.2</td><td>0.2</td></tr>
## <tr><td style="text-align:left">Residual Std. Error</td><td>25.7 (df = 740)</td><td></td><td></td></tr>
## <tr><td style="text-align:left">F Statistic</td><td>158.8<sup>***</sup> (df = 1; 740)</td><td>155.8<sup>***</sup> (df = 1; 737)</td><td>155.8<sup>***</sup> (df = 1; 737)</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td colspan="3" style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
## </table>
Section 4.3 Spatial regressions with time lags
library(spatialreg)
## Warning: package 'spatialreg' was built under R version 4.4.3
## Loading required package: spData
## Warning: package 'spData' was built under R version 4.4.3
## To access larger datasets in this package, install the spDataLarge
## package with: `install.packages('spDataLarge',
## repos='https://nowosad.github.io/drat/', type='source')`
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
library(spdep)
## Warning: package 'spdep' was built under R version 4.4.3
##
## Attaching package: 'spdep'
## The following objects are masked from 'package:spatialreg':
##
## get.ClusterOption, get.coresOption, get.mcOption,
## get.VerboseOption, get.ZeroPolicyOption, set.ClusterOption,
## set.coresOption, set.mcOption, set.VerboseOption,
## set.ZeroPolicyOption
## The following object is masked from 'package:ade4':
##
## mstree
#distance based neighbors
#generate distances between centroids for the nearest neighbors
fire_coords <- st_coordinates(fire)
fireIDs <- row.names(as(fire_sp, "data.frame"))
fire_nn1 <- knn2nb(knearneigh(fire_coords, k=1), row.names= fireIDs)
## Warning in knn2nb(knearneigh(fire_coords, k = 1), row.names = fireIDs):
## neighbour object has 205 sub-graphs
firedist <-unlist(nbdists(fire_nn1, fire_coords))
#shows the min mean and max distance between centroids
summary(firedist)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.61 1848.96 4183.28 6859.38 8762.07 151829.00
#distance threshold to ensure all fires have a neighbor 78km
dist_threshold <-max(firedist)
#generating distance based neighbors
fire_dist_threshold <-dnearneigh(fire_coords, d1=0,
d2=1*dist_threshold,
row.names= fireIDs)
W_dist_rowstd <- nb2listw(fire_dist_threshold, zero.policy=TRUE)
#Test to see if you need a spatial regression
lm.RStests(olstime, W_dist_rowstd, test="all", zero.policy=T)
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = FireDays ~ Calculated + Lag(FireDays, 1), data =
## fire_model_data)
## test weights: W_dist_rowstd
##
## RSerr = 68.542, df = 1, p-value < 0.00000000000000022
##
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = FireDays ~ Calculated + Lag(FireDays, 1), data =
## fire_model_data)
## test weights: W_dist_rowstd
##
## RSlag = 92.952, df = 1, p-value < 0.00000000000000022
##
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = FireDays ~ Calculated + Lag(FireDays, 1), data =
## fire_model_data)
## test weights: W_dist_rowstd
##
## adjRSerr = 2.2086, df = 1, p-value = 0.1372
##
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = FireDays ~ Calculated + Lag(FireDays, 1), data =
## fire_model_data)
## test weights: W_dist_rowstd
##
## adjRSlag = 26.618, df = 1, p-value = 0.0000002479
##
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = FireDays ~ Calculated + Lag(FireDays, 1), data =
## fire_model_data)
## test weights: W_dist_rowstd
##
## SARMA = 95.16, df = 2, p-value < 0.00000000000000022
# Error regression
# If it does not run in R try it in Geoda
fire_spatial_error <- errorsarlm(FireDays ~ Calculated + Lag(FireDays,1), data=fire_model_data, W_dist_rowstd, zero.policy=T, tol.solve=20.0e-20)
summary(fire_spatial_error)
##
## Call:errorsarlm(formula = FireDays ~ Calculated + Lag(FireDays, 1),
## data = fire_model_data, listw = W_dist_rowstd, zero.policy = T,
## tol.solve = 0.0000000000000000002)
##
## Residuals:
## Min 1Q Median 3Q Max
## -93.7333 -13.9446 -9.8661 7.0699 130.9382
##
## Type: error
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 17.51065268 3.52437333 4.9684 0.0000006749
## Calculated 0.00483111 0.00040013 12.0739 < 0.00000000000000022
## Lag(FireDays, 1) 0.08782480 0.03255621 2.6976 0.006983
##
## Lambda: 0.7336, LR test value: 23.353, p-value: 0.000001348
## Asymptotic standard error: 0.11018
## z-value: 6.6584, p-value: 0.000000000027681
## Wald statistic: 44.334, p-value: 0.000000000027681
##
## Log likelihood: -3439.88 for error model
## ML residual variance (sigma squared): 626.55, (sigma: 25.031)
## Number of observations: 741
## Number of parameters estimated: 5
## AIC: 6889.8, (AIC for lm: 6911.1)
# spatial lag regression
# Note that the LM tests suggested lag model was a better choice here
fire_spatial_lag <- lagsarlm(FireDays ~ Calculated + Lag(FireDays,1), data=fire_model_data, W_dist_rowstd, zero.policy=T)
summary(fire_spatial_lag)
##
## Call:lagsarlm(formula = FireDays ~ Calculated + Lag(FireDays, 1),
## data = fire_model_data, listw = W_dist_rowstd, zero.policy = T)
##
## Residuals:
## Min 1Q Median 3Q Max
## -95.2648 -13.8359 -9.5096 7.1668 130.9648
##
## Type: lag
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.60646413 2.26212048 0.7102 0.477606
## Calculated 0.00493977 0.00039894 12.3822 < 0.00000000000000022
## Lag(FireDays, 1) 0.08661095 0.03240254 2.6730 0.007518
##
## Rho: 0.75736, LR test value: 30.342, p-value: 0.000000036214
## Asymptotic standard error: 0.096276
## z-value: 7.8665, p-value: 0.0000000000000035527
## Wald statistic: 61.882, p-value: 0.0000000000000036637
##
## Log likelihood: -3436.386 for lag model
## ML residual variance (sigma squared): 620.27, (sigma: 24.905)
## Number of observations: 741
## Number of parameters estimated: 5
## AIC: 6882.8, (AIC for lm: 6911.1)
## LM test for residual autocorrelation
## test value: 0.74624, p-value: 0.38767
stargazer(olstime, fixed_effects_fire, fire_spatial_error, digits=1, type = "html", out="ols_ml_sp.html")
##
## <table style="text-align:center"><tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td colspan="3"><em>Dependent variable:</em></td></tr>
## <tr><td></td><td colspan="3" style="border-bottom: 1px solid black"></td></tr>
## <tr><td style="text-align:left"></td><td colspan="3">FireDays</td></tr>
## <tr><td style="text-align:left"></td><td><em>OLS</em></td><td><em>panel</em></td><td><em>spatial</em></td></tr>
## <tr><td style="text-align:left"></td><td><em></em></td><td><em>linear</em></td><td><em>error</em></td></tr>
## <tr><td style="text-align:left"></td><td>(1)</td><td>(2)</td><td>(3)</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Calculated</td><td>0.01<sup>***</sup></td><td>0.01<sup>***</sup></td><td>0.005<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.000)</td><td>(0.000)</td><td>(0.000)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Lag(FireDays, 1)</td><td>0.1<sup>***</sup></td><td></td><td>0.1<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(0.03)</td><td></td><td>(0.03)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Constant</td><td>15.8<sup>***</sup></td><td></td><td>17.5<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(1.2)</td><td></td><td>(3.5)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td><td></td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>741</td><td>742</td><td>741</td></tr>
## <tr><td style="text-align:left">R<sup>2</sup></td><td>0.2</td><td>0.2</td><td></td></tr>
## <tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.2</td><td>0.2</td><td></td></tr>
## <tr><td style="text-align:left">Log Likelihood</td><td></td><td></td><td>-3,439.9</td></tr>
## <tr><td style="text-align:left">sigma<sup>2</sup></td><td></td><td></td><td>626.6</td></tr>
## <tr><td style="text-align:left">Akaike Inf. Crit.</td><td></td><td></td><td>6,889.8</td></tr>
## <tr><td style="text-align:left">Residual Std. Error</td><td>25.6 (df = 738)</td><td></td><td></td></tr>
## <tr><td style="text-align:left">F Statistic</td><td>84.1<sup>***</sup> (df = 2; 738)</td><td>155.8<sup>***</sup> (df = 1; 737)</td><td></td></tr>
## <tr><td style="text-align:left">Wald Test</td><td></td><td></td><td>44.3<sup>***</sup> (df = 1)</td></tr>
## <tr><td style="text-align:left">LR Test</td><td></td><td></td><td>23.4<sup>***</sup> (df = 1)</td></tr>
## <tr><td colspan="4" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td colspan="3" style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
## </table>