如何使用线性模型按因子水平获得系数?

时间:2013-04-02 16:06:18

标签: r excel statistics linear-regression forecasting

我正在分析太阳能发电厂的数据。我想每隔一天调整一次估计的生产工厂每小时,可以获得的数据是接下来三天的天气预报,明天你知道什么样的一天(比例为1到5,有1阳光充足,5阴天。

因此,我们的想法是将容量乘以一个因子,这是对将要发生的事情的估计,并且不会偏离实际测量。

我认为通过使用varibale类型的day作为因子来建立线性模型。可能是近似实际生产的最佳方式。

今天的标准是:

  • 日类型1,生产能力* 1
  • 日类型2,生产能力* 0.7
  • 日类型3,生产能力* 0.4
  • 日类型4,生产能力* 0.15
  • 日类型5,生产能力* 0

我对这些系数进行了研究,并且低估了植物的产量,这意味着产生的能量实际上更多,几乎达到50%。使用excel的求解器来找到我得到的系数:

  • 1.6
  • 1.2
  • 0.9
  • 0.65
  • 0.5

麻烦的是,这只是针对这种特殊情况的数据而我无法概括,因为我想制作模型。

data

这就是我的申请:

data <-read.table ("zcinco.txt", dec = ",", header = TRUE)
head (data)

model <- lm (data [-1.2] ~ embed (data [, 2], 2) [, 2] + as.factor (data [-1.3]) + data [1, 4])

head (cbind (matrix (predict (model)), data [-1.2]))
summary (model)






 Call:
lm(formula = data[-1, 2] ~ embed(data[, 2], 2)[, 2] + as.factor(data[-1, 
    3]) + data[-1, 4])

Residuals:
      Min        1Q    Median        3Q       Max 
-0.054966 -0.009518 -0.000855  0.010966  0.039100 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)               2.528e-06  1.456e-03   0.002   0.9986    
embed(data[, 2], 2)[, 2]  3.870e-01  2.969e-02  13.036  < 2e-16 ***
as.factor(data[-1, 3])2  -2.630e-03  1.407e-03  -1.869   0.0621 .  
as.factor(data[-1, 3])3   1.690e-03  2.371e-03   0.713   0.4762    
as.factor(data[-1, 3])4  -1.855e-02  2.251e-03  -8.241 1.07e-15 ***
as.factor(data[-1, 3])5  -1.790e-02  2.660e-03  -6.727 4.06e-11 ***
data[-1, 4]               8.930e-01  4.823e-02  18.517  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.01482 on 600 degrees of freedom
Multiple R-squared: 0.795,  Adjusted R-squared: 0.793 
F-statistic: 387.9 on 6 and 600 DF,  p-value: < 2.2e-16 

基地描述。

tiempo / real / tipo / capacidad

  • Tiempo:表示观察的时间。
  • 实际测量表明实际能量产生。
  • Tipo:表示观察日期的类型(1至5)。
  • Capacidad:计划的估计生产能力百分比

1 个答案:

答案 0 :(得分:1)

我会建议这样的事情:

m2 <- lm(data[-1, 2] ~ embed(data[, 2], 2)[, 2]:as.factor(data[-1, 3]) + data[-1, 4])

虽然我不确定你为什么忽略第一行和嵌入用法。