R语言数据分析-家庭资产随机森林分析预测

一、研究背景及其意义

家庭资产分析在现代经济学中的重要性不仅限于单个家庭的财务健康状况,它还与整个经济体的发展紧密相关。家庭资产的增长通常反映了国家经济的整体增长,而资产分布的不均则暴露了经济不平等的问题。通过对家庭资产的细致研究,可以揭示经济增长的实际受益者,并为制定更公平、更有效的经济政策提供实证基础。

研究的意义在于:政策制定的依据:通过对家庭资产的研究,可以为政府和政策制定者提供关于经济福利和社会公平的深入洞察。这有助于制定更加有效的经济政策,以促进财富的公平分配。经济结构分析:对家庭资产的深入了解有助于分析和理解宏观经济结构,尤其是在不同经济周期中家庭资产的变化趋势,从而有助于预测经济发展和潜在的风险。...

二、文献综述

三、理论部分

随机森林就是通过集成学习的Bagging思想将多棵树集成的一种算法:它的基本单元就是决策树。随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了,其实这也是随机森林的主要思想--集成思想的体现。

四、具体案例分析

本文数据选取为美国财富网站家庭资产的数据集,其中特征为familynum、consump_total、income_total、debt,响应变量为asset。

首先读取数据集并且展示数据前五行:

观测值数量:数据框包含34,609个观测值。变量数量:共有5个变量,每个变量代表数据集中的一个特征。其中familynum:这是一个整数(int)类型的变量,代表家庭成员的数量。consump_total:是一个数值类型的变量,代表家庭的总消费。

缺失值查看

热图中的深色部分表明数据值“不缺失”(Not Missing),而如果存在缺失值,我们通常会看到标记为其他颜色(通常是红色或其他醒目颜色)的条带。从图中可以看出,这个数据集在所有五个变量中似乎没有显示任何缺失值。每个变量在所有观测值中都是完整的,这意味着对于这个数据集的每一行和每个变量,都有可用的数据值。

接下来进行部分数据可视化:

以下是对每个箱线图的分析:家庭资产的中位数较低,且数据分布范围广,存在许多高值的异常点,这表明有些家庭的资产远高于其他家庭。总消费的中位数同样较低,数据分布的范围较小相对于资产,但仍有高值异常点。债务的中位数接近于零,显示许多家庭没有或者债务很少,但也有一些高债务的异常值。

图像显示的是一个相关系数热图,它用颜色的深浅来表示不同变量之间的相关性强度。在这张图中,颜色越深(无论是正向还是负向)表示相关性越强,颜色越浅表示相关性越弱。通常,蓝色代表正相关,红色代表负相关,颜色的深浅代表相关系数的绝对大小。

从热力图可知,....

接下来正式进入随机森林建模和预测,这里的训练集和测试集的划分比例为7:3。

总体来看,这个模型能够解释一定比例的资产变异性,但仍有较大的提升空间。模型的性能可以通过尝试更多的树、调整每次分裂尝试的变量数量、或者进行特征工程等方法来进一步提升。

表1 随机森林模型预测评价结果

RMSE

 Rsquared

 MAE

1525606.6201528

 0.3679425

792606.7109922

最后可视化一下特征重要性图,在特征中对比一下:

income_total(总收入): 这个特征在模型中的重要性最高,表现为最长的黄色条形。这意味着总收入在预测家庭资产方面起着最关键的作用。consump_total(总消费): 紧随其后的是总消费,以较长的紫色条形表示。这表明消费也是一个影响家庭资产的重要因素。...

五、总结与展望

本次实验通过随机森林回归模型分析了影响家庭资产的几个关键变量,包括家庭成员数、总消费、总收入以及债务。通过对34,609个观测值进行建模,我们得到了一些初步的结论:

总收入对家庭资产的预测作出了最大的贡献,这表明收入水平是影响家庭资产积累的一个重要因素。总消费也是家庭资产预测的一个重要变量,但其影响力度低于总收入。....

部分代码:

# CSV文件
df<- read.csv("data.csv")
df

# 显示数据框的前几行
head(df)
str(df)


# 导入必要的库
library(randomForest)
library(pROC)
library(caret)
library(ggplot2)
library(dplyr)
library(tidyr)

##数据预处理
###数据预处理
# 创建一个指示缺失值的数据框
missing_df <- df %>% 
  mutate(row_id = row_number()) %>%  # 添加行索引
  pivot_longer(cols = -row_id, names_to = "variable", values_to = "value") %>%
  mutate(value = ifelse(is.na(value), "Missing", "Not Missing"))
# 绘制热图
ggplot(missing_df, aes(x = row_id, y = variable, fill = value)) +
  geom_tile() +
  scale_fill_manual(values = c("Missing" = "red", "Not Missing" = "gray")) +
  theme_minimal() +
  labs(x = "Row Number", y = "Variable", fill = "Status", title = "Heatmap of Missing Values")


# Checking for missing values
cat("Missing Values:\n")
print(sum(is.na(df)))

# Data Summary
cat("\nData Summary:\n")
print(summary(df))

###部分数据可视化
options(scipen = 999)
hist_plots <- df %>%
  pivot_longer(cols = everything(), names_to = "variables", values_to = "values") %>%
  ggplot(aes(x = values, fill = variables)) +
  geom_histogram(bins = 30, color = "black") +
  facet_wrap(~variables, scales = 'free_x') +
  theme_minimal() +
  scale_fill_viridis_d()
print(hist_plots)



# 导入必要的库
library(randomForest)
library(caret)
# 建立随机森林模型
rf_model <- randomForest(asset ~ ., data = train_data, ntree = 100)
rf_model
# 模型预测
predictions <- predict(rf_model, test_data)
predictions
# 模型评估
test_data$predicted_asset <- predictions
results <- postResample(pred = predictions, obs = test_data$asset)
print(results)


# 模型预测
predictions <- predict(rf_model, test_data)

# 模型评估
results <- postResample(pred = predictions, obs = test_data$asset)
print(results)

# 参数优化


# 可视化预测结果
importance <- importance(rf_model)

# 绘制特征重要性图
# 绘制特征重要性图并加入颜色
ggplot(importance_df, aes(x = reorder(Feature, IncNodePurity), y = IncNodePurity, fill = Feature)) +
  geom_bar(stat = "identity") +
  coord_flip() + 
  labs(title = "Feature Importance in Random Forest Model",
       x = "Importance",
       y = "Features") +
  theme_minimal() +
  scale_fill_viridis_d() # 使用 viridis 颜色方案



创作不易,希望大家多多点赞收藏和评论!

  • 33
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值