首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回归分析未显示摘要

回归分析未显示摘要
EN

Stack Overflow用户
提问于 2015-07-01 19:56:24
回答 1查看 5.7K关注 0票数 3

以下是我的数据

代码语言:javascript
复制
> x
          day  sum
1  2015-04-14  129
2  2015-04-15  129
3  2015-04-16  129
4  2015-04-17  899
5  2015-04-18  899
6  2015-04-19  899
7  2015-04-20  899
8  2015-04-21  899
9  2015-04-22  899
10 2015-04-23  899
11 2015-04-24  899
12 2015-04-25  899
13 2015-04-26  899
14 2015-04-27  899
15 2015-04-28  899
16 2015-04-29  899
17 2015-04-30  899
18 2015-05-01  899
19 2015-05-02  899
20 2015-05-03  899
21 2015-05-04  899
22 2015-05-05  899
23 2015-05-06  899
24 2015-05-07  899
25 2015-05-08  899
26 2015-05-09  899
27 2015-05-10  899
28 2015-05-11  899
29 2015-05-12  920
30 2015-05-13  920
31 2015-05-14  920
32 2015-05-15  920
33 2015-05-16  920
34 2015-05-17  920
35 2015-05-18  920
36 2015-05-19  920
37 2015-05-20  920
38 2015-05-21  920
39 2015-05-22  920
40 2015-05-23  920
41 2015-05-24  920
42 2015-05-25  920
43 2015-05-26  920
44 2015-05-27  920
45 2015-05-28  920
46 2015-05-29  920
47 2015-05-30  920
48 2015-05-31  920
49 2015-06-01 1076

我想做一个回归分析,以找出数据的总和将成为6000。我做了下面的事

代码语言:javascript
复制
> q<-lm(day ~ sum, data=x)
> q

Call:
lm(formula = day ~ sum, data = x)

Coefficients:
(Intercept)          sum  
  1.653e+04    3.584e-02  

> as.Date(predict(q, data.frame(sum=6000)))
           1 
"2015-11-08" 

我能预测日期。但我不确定它的准确性,并希望改进它。但我无法看到回归的总结。我得到以下错误,

代码语言:javascript
复制
> summary(q)
Error in Ops.difftime((f - mean(f)), 2) : 
  '^' not defined for "difftime" objects

以防万一变量类型很重要,

代码语言:javascript
复制
> typeof(x)
[1] "list"
> typeof(x$day)
[1] "double"
> typeof(x$sum)
[1] "integer"
> class(x$day)
[1] "Date"

当我看上一次论坛时,

Difftime Error using Looping Regressions in R

以下是作为解决办法,

我通过将索引从时间值更改为标准整数索引来解决这个问题,一切都运行良好。

但我不知道该怎么做?

有人能帮我做这件事并说出我需要做些什么才能在这里得到总结吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-01 20:23:22

R中的日期实际上只是数字值,按照一定的规则重铸成日期格式。例如,Date格式是自1970年1月1日以来运行的天数,而POSIXct格式是自1970年1月1日引用到UTC时区以来经过的秒数。以下是几个例子:

代码语言:javascript
复制
as.numeric(as.Date("1970-01-01", tz="UTC"))
# 0
as.numeric(as.Date("1970-01-05", tz="UTC"))
# 4
as.numeric(as.POSIXct("1970-01-01 00:00:00", tz="UTC"))
# 0
as.numeric(as.POSIXct("1970-01-05 00:00:00", tz="UTC"))
# 345600

处理问题的一种方法是将日期转换为数字格式,对数字数据运行回归,然后在结束时将日期转换回日期。

在下面的代码中,我假设x$dayPOSIXct格式开始。

代码语言:javascript
复制
# Convert POSIXct date to a numeric value equal to number of days since Jan 1, 1970
x$day.numeric = as.numeric(x$day)/(24*60*60)

# Regression model
q <- lm(day.numeric ~ sum, data=x)

summary(q)

Call:
  lm(formula = day.numeric ~ sum, data = x)

Residuals:
  Min      1Q  Median      3Q     Max 
-22.253 -10.253   1.747   9.994  20.994 

Coefficients:
  Estimate Std. Error  t value Pr(>|t|)    
(Intercept) 1.653e+04  8.448e+00 1956.996  < 2e-16 ***
  sum         3.584e-02  9.550e-03    3.753  0.00048 ***
  ---
  Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 12.67 on 47 degrees of freedom
Multiple R-squared:  0.2306,    Adjusted R-squared:  0.2142 
F-statistic: 14.09 on 1 and 47 DF,  p-value: 0.0004796

# Predict date at which sum = 6000. Use as.Date to convert numeric value
# back to a date based on the number of days since Jan 1, 1970.
as.Date(predict(q, data.frame(sum=6000)), origin="1970-01-01")
           1 
"2015-11-08"
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31170512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档