2016-07-14 46 views
-2

因此,我使用read.csv從我的csv中提取了我的數據,並且工作正常。 代碼:R:使用csv運行lm()時係數重複的問題

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。

這是向上真的讓我很難解釋數據正在發生什麼,並希望更好地理解爲什麼會發生這種情況。

+0

你可以輸入()你的數據嗎? – mkt

回答

0

它看起來像你的專欄work_order_frequency是一個字符列。默認情況下,如果您使用read.csv,則會將其作爲因子讀入。這就是lm函數將此列分解爲單獨係數的原因。

用選項stringsAsFactors = FALSE再次讀入您的數據。

+0

我試過這個,問題仍然存在 – William

+0

檢查你的數據的結構來檢查因素,並在再次運行一切之前重新啓動你的r會話。 – phiver

+0

所以,結構看起來不錯,列正確定義和組織。但是我可能會在結構中缺少一些必要的東西,以便獲得任何額外的信息/幫助。 – William