R:使用csv运行lm()时系数重复的问题

时间:2016-07-14 08:22:01

标签: r csv lm

所以我使用read.csv从我的csv中提取了数据,这很正常。 代码:

 techdata <- read.csv("/user/path", header = TRUE, sep = ",", stringsAsFactors = FALSE)

我已将数据检查为r中的输出,并且格式正确且看起来很好。

但是当我跑步时

techFit <- lm(techdata$reordered_in_next_30_days ~techdata$work_order_frequency)
summary(techFit)

我明白了

Call:
lm(formula = techdata$reordered_in_next_30_days ~ techdata$work_order_frequency)

Residuals:
   Min     1Q Median     3Q    Max 
-5.416 -0.886 -0.283  0.372 94.531 

Coefficients:
                                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)                        2.46871    0.03142  78.581  < 2e-16 ***
techdata$work_order_frequency1     2.94734    0.08425  34.985  < 2e-16 ***
techdata$work_order_frequency10   -0.80860    0.07465 -10.832  < 2e-16 ***
techdata$work_order_frequency100  -2.43363    0.36315  -6.702 2.08e-11 ***
techdata$work_order_frequency101  -2.26871    0.34024  -6.668 2.61e-11 ***
techdata$work_order_frequency102  -2.36591    0.26592  -8.897  < 2e-16 ***
techdata$work_order_frequency103  -2.21871    0.48387  -4.585 4.54e-06 ***
....
techdata$work_order_frequencyNULL -2.46871    0.05592 -44.151  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.731 on 72500 degrees of freedom
Multiple R-squared:  0.141, Adjusted R-squared:  0.1378 
F-statistic: 44.07 on 270 and 72500 DF,  p-value: < 2.2e-16

应该只有1个“techdata $ work_order_frequency”,但最终会超过100个。

这实际上让我很难解释数据的发生情况,并希望更好地了解数据发生的原因。

1 个答案:

答案 0 :(得分:0)

您的列work_order_frequency看起来像是一个字符列。默认情况下,如果您使用read.csv,则会将其读入。这就是为什么lm函数将此列拆分为单独的系数的原因。

使用选项stringsAsFactors = FALSE再次读入您的数据。