You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中如何实现前一时间步滞后回归及ggplot x轴年月设置

R语言数据分析两个问题的实现方案

1. t-1期自变量回归实现

你的数据是分城市的面板结构,必须先按城市分组再计算滞后项,否则会出现不同城市首尾数据错位的问题,具体实现步骤如下:

  • 第一步:按城市、年、月排序数据,分组构造t-1期滞后变量,剔除无滞后值的首条观测
library(dplyr)

reg_data <- df %>%
  arrange(City, Year, Month) %>%
  group_by(City) %>%
  mutate(
    lag_deaths = lag(Deaths, 1),
    lag_guns = lag(Guns, 1),
    lag_shootings = lag(Shootings, 1)
  ) %>%
  ungroup() %>%
  filter(!is.na(lag_deaths))
  • 第二步:拟合回归模型,若需要控制城市固定效应,把城市作为因子加入自变量即可
# 基础回归
model <- lm(Deaths ~ lag_deaths + lag_guns + lag_shootings, data = reg_data)
summary(model)

# 加入城市固定效应的回归
model_fe <- lm(Deaths ~ lag_deaths + lag_guns + lag_shootings + as.factor(City), data = reg_data)
summary(model_fe)

2. ggplot x轴同时展示年月信息

数值型的年、月列无法被ggplot识别为时间维度,会导致刻度错乱,需要先构造标准日期格式列,再自定义x轴刻度:

library(ggplot2)
library(lubridate)

# 构造日期列:统一取每月1日作为日期标记,满足R日期格式的日字段要求
plot_data <- df %>%
  mutate(time_mark = ymd(paste(Year, Month, "1", sep = "-")))

# 绘图
ggplot(plot_data, aes(x = time_mark, y = Deaths)) +
  geom_line(linewidth = 1) + # 可替换为你需要的图层,比如geom_point()、geom_col()
  scale_x_date(
    date_labels = "%Y-%m", # 标签格式,要显示中文可改为"%Y年%m月"
    date_breaks = "2 months", # 主刻度间隔,根据数据跨度可调整为1 month/6 months/1 year
    date_minor_breaks = "1 month"
  ) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 标签倾斜避免重叠

格式参数说明:%Y代表4位年份,%m代表2位月份,可根据展示需求自由组合标签格式。

内容的提问来源于stack exchange,提问作者Yannik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:15:30