0

我有一个呼叫/时间的散点图。我的 x 变量是日期(日/月),我的 Y 变量是每个日期的调用次数。我想使用 PROC SGPLOT REG 绘制两条回归线,一条用于 2019 年,一条用于 2020 年。但是,当我尝试这样做时,我得到的只是一个没有回归线的常规散点图。这是我的代码:

 proc sgplot data=intern.bothphase1;
 reg x=date y=count / group=Year;
 label count="Calls Per Day" year="Year";
 Title "Comparison of EMS Calls per Day 1/1 - 3/31 in 2019 vs. 
 2020";
 run;

散点图没有问题(2019 年和 2020 年的值以不同的颜色显示),但我想看看两个时间段之间的趋势有何不同,所以我真的想在那里得到回归线。任何人都可以帮忙吗?

我想这与我将日期和月份与 / 连接起来的事实有关,因此它是一个字符变量,因此 SAS 无法计算回归。我这样做是为了可以使用 year 作为类变量。我的表中仍然有原始日期变量,有没有办法让 SAS 将月/日作为数字变量提供给我?

谢谢!

编辑:我在 SAS 中使用了日期值并将格式更改为 mm/dd,但这无济于事,因为回归线只是在图表的两端而不是重叠(附图片)。我想要的是让回归线在 2019 年与 2020 年的同一时间段内重叠,这是因为 SAS 日期对应于 1960 年 1 月 1 日的数字。我想要的是 mm/dd 对应于数字 1-365,所以我得到两条重叠的回归线来显示趋势如何从一年到下一年发生变化。有谁知道我该怎么做?

4

1 回答 1

0

所以这里有两个步骤:首先,您需要生成一个 1-365 的“日”值......所以让我们从日值中减去 01JAN。

data have;
  do date = '01JAN2019'd to '31DEC2020'd;
    count = 25+2*rand('uniform');
    year = year(date);
    if month(date) le 3 then output;
  end;  
  format date date9.;
run;

data adjusted;
  set have;
  date_fixed = date - intnx('year',date,0,'b') + 1;  *current date minus jan 1 plus 1 (otherwise off by 1);
  format date_fixed date5.;                          *this does not actually affect the graph axis, oddly;
run;


 proc sgplot data=adjusted;
 reg x=date_fixed y=count / group=Year;
 xaxis valuesformat=date5.;                   *this seems to be needed for some reason;
 label count="Calls Per Day" year="Year";
 Title "Comparison of EMS Calls per Day 1/1 - 3/31 in 2019 vs. 
 2020";
 run;

然后我们添加该xaxis行,因为由于某种原因它不符合DATE5.格式(也可以MMDDYY5.像 Reeza 在评论中指出的那样使用,但我们可以强制它到这里。

这是我得到的。您可以使用其他轴选项来进一步限制事物,例如 01APR 不会出现。

回归图像显示覆盖散点图的蓝线和红线,单轴显示 01JAN-01APR)

于 2021-10-30T18:03:42.993 回答