regression module¶
Regression module.
Regression
¶
Class object for storing regression results
__init__(self)
special
¶
Instantiate the Regression object.
Source code in mygeopackage/regression.py
def __init__(self):
"""Instantiate the Regression object.
"""
self.identifier = 0
self.dependent = []
self.independent = []
self.coef = []
self.intercept = []
self.score = []
self.residuals = []
show(self, map=None)
¶
Show regression results on interactive web map.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
map |
Folium map object |
If set to None, the function will create a new map object. If given the map object, the layer will be drawn on the map. Defaults to None. |
None |
Source code in mygeopackage/regression.py
def show(self,map=None):
"""Show regression results on interactive web map.
Args:
map (Folium map object, optional): If set to None, the function will create a new map object. If given the map object, the layer will be drawn on the map. Defaults to None.
"""
if map == None:
m = folium.Map(location=[self.residuals[0]['Location'][1],self.residuals[0]['Location'][0]],zoom_start=10)
else:
m = map
max_value = max([self.residuals[i]['Residual'] for i in range(len(self.residuals))])
min_value = min([self.residuals[i]['Residual'] for i in range(len(self.residuals))])
for feature in self.residuals:
interval = (max_value-min_value)/5
if feature['Residual'] >= min_value and feature['Residual'] < min_value + interval:
folium.CircleMarker((feature['Location'][1],feature['Location'][0]),radius=6,popup='Residual: '+str(feature['Residual']),fill=True,color='Purple',fill_color='Purple',fill_opacity=1).add_to(m)
if feature['Residual'] >= min_value + interval and feature['Residual'] < min_value + 2 * interval:
folium.CircleMarker((feature['Location'][1],feature['Location'][0]),radius=6,popup='Residual: '+str(feature['Residual']),fill=True,color='Blue',fill_color='Blue',fill_opacity=1).add_to(m)
if feature['Residual'] >= min_value + 2 * interval and feature['Residual'] < min_value + 3 * interval:
folium.CircleMarker((feature['Location'][1],feature['Location'][0]),radius=6,popup='Residual: '+str(feature['Residual']),fill=True,color='Yellow',fill_color='Yellow',fill_opacity=1).add_to(m)
if feature['Residual'] >= min_value + 3 * interval and feature['Residual'] < min_value + 4 * interval:
folium.CircleMarker((feature['Location'][1],feature['Location'][0]),radius=6,popup='Residual: '+str(feature['Residual']),fill=True,color='Orange',fill_color='Orange',fill_opacity=1).add_to(m)
if feature['Residual'] >= min_value + 4 * interval and feature['Residual'] < max_value:
folium.CircleMarker((feature['Location'][1],feature['Location'][0]),radius=6,popup='Residual: '+str(feature['Residual']),fill=True,color='Red',fill_color='Red',fill_opacity=1).add_to(m)
display(m)
ols(geo, dependent, independent, identifier)
¶
Perform ordinary least square linear regression.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
geo |
type |
GEO class object that stored spatial data and attributes. |
required |
dependent |
int |
The index of the column of dependent variable. |
required |
independent |
list |
The list of indices of the columns of independent variables. |
required |
identifier |
int |
The index of the column of id. |
required |
Returns:
Type | Description |
---|---|
class Regression |
Return the regression results. |
Source code in mygeopackage/regression.py
def ols(geo: type(Geo),dependent,independent,identifier):
"""Perform ordinary least square linear regression.
Args:
geo (class GEO): GEO class object that stored spatial data and attributes.
dependent (int): The index of the column of dependent variable.
independent (list): The list of indices of the columns of independent variables.
identifier (int): The index of the column of id.
Returns:
class Regression: Return the regression results.
"""
ols_results = Regression()
ols_results.identifier = identifier
ols_results.dependent = geo.attributes[dependent]
ols_results.independent = [geo.attributes[i] for i in independent]
reg = LinearRegression().fit(geo.data[:,independent],geo.data[:,dependent])
ols_results.coef = reg.coef_
ols_results.intercept = reg.intercept_
ols_results.score = reg.score(geo.data[:,independent],geo.data[:,dependent])
residuals = geo.data[:,dependent] - reg.predict(geo.data[:,independent])
residuals_dict = {}
for i in range(len(residuals)):
residuals_dict['ID'] = geo.data[i][identifier]
residuals_dict['Location'] = [geo.data[i][0],geo.data[i][1]]
residuals_dict['Residual'] = residuals[i]
ols_results.residuals.append(residuals_dict.copy())
return ols_results
Last update: 2021-05-03