【发布时间】:2019-09-15 01:41:39
【问题描述】:
我有二维数据,包括某些地区的频繁犯罪类型和全年对应的房价。我想了解某些地区的犯罪频率与房价波动之间可能存在的关联。最初我尝试使用线性回归来做到这一点,但效果不佳。现在我想尝试对我的数据进行 PCA 分析,但我仍然无法获得有意义的结果。为了进行回归,我如何对面板数据执行有效的 PCA 分析?任何有效的解决方法来实现这一点?谢谢
数据:
因为我的数据维度有点长,这里做可复现的例子有点困难,让我们看看面板数据是什么样子的:
这里是最安全的云链接,您可以浏览输入面板数据:example data snippet。
更新:我的尝试:
由于@flyingmeatball 指出使用 PCA 不是一个好主意,我尝试了简单的线性回归,但它并没有帮助我捕捉到犯罪频率和房价之间的关系。这是我所做的:
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import scale
import re
import urllib
import pandas as pd
# download data from cloud
u = "https://filebin.net/ml0sjn455gr8pvh3/crime_realEstate?t=7dkm15wq"
crime_realEstate = urllib.request.urlretrieve (u, "Ktest.csv")
# or just manually download data first and read
crime_realEstate = pd.read_csv('crime_realEstate.csv')
cols_2012 = crime_realEstate.filter(regex='_2012').columns
crime_realEstate['Area_Name']=crime_realEstate['Area_Name'].apply(lambda x: re.sub(' ', '_', str(x)))
regDF_2012 = crime_realEstate[cols_2012]
regDF_2012 = regDF_2012.assign(community_code=crime_finalDF['community_area'])
regDF_2012.dropna(inplace=True)
X_feats = regDF_2012.drop(['Avg_Price_2012'], axis=1)
y_label = regDF_2012['Avg_Price_2012'].values
poly = PolynomialFeatures(degree=2)
sc_y = StandardScaler()
X = poly.fit_transform(X_feats)
y= sc_y.fit_transform(y_label.reshape(-1,1)).flatten()
X = log(X)
y = log(y)
regModel = LinearRegression()
regModel.fit(X, y)
上面的代码对我没有帮助,因为我想看看哪些功能会导致一年中的房价波动。关于如何实现这一点的任何想法?
目标:
我想要实现的是建立模型来解释某些地区的犯罪频率与各自的房价波动之间的动态关系。任何有效的解决方法来实现这一点?
更新:
如果 PCA 不是一个好主意,那么任何可能的回归模型可以捕捉某些社区区域的犯罪频率与房价波动之间的关系?有什么想法吗?
【问题讨论】:
标签: python regression panel-data