如何使用Box cox传输数据?

时间:2017-08-27 14:15:07

标签: r lm

我有如下数据。

数据:

temperature stage Replicate week Nematode_Number

        T20   All         1    1            60.0
        T20   All         2    1            72.7 
        T20   All         3    1            69.3
        T20   All         4    1            45.3
        T20   All         5    1            40.7

我喜欢找到线性模型,然后基于Box cox对这些数据进行标准化,但是出现了错误。

Script: 

> mode (all)
[1] "list"

> is.data.frame (all)
[1] TRUE

> getClass(class(all))
Class "data.frame" [package "methods"]

Slots:


Name:                .Data               names           row.names            .S3Class
Class:                list           character data.frameRowLabels           character

Extends: 
Class "list", from data part
Class "oldClass", directly
Class "vector", by class "list", distance 2

> a <- boxcox(lm(Nematode_Number ~ week, data = all))

Error in terms.formula(formula, data = data) : 'data' argument is of the wrong type

2 个答案:

答案 0 :(得分:2)

boxcox应该有效。好的boxcox也确实采取了公式对象。因此,如果可以或rm(all)尝试清除您的环境并重新读取它。然后尝试下面的代码,如果这些代码在上述代码之前不起作用。

 a=boxcox(Nematode_Number~week,data=all)

希望这有帮助

答案 1 :(得分:2)

数据

df <- data.frame(temperature=rep("T20",5),
                 stage=rep("All",5),
                 Replicate=1:5, week=rep(1,5),
                 Nematode_Number=c(60.0, 72.7, 69.3, 45.3, 40.7),
                 stringsAsFactors=F)

这是你想要的吗?

这有效

lm(Nematode_Number ~ week, data=df)

这有效

library(MASS)
boxcox(Nematode_Number ~ week, data=df)

这有效

temp <- lm(Nematode_Number ~ week, data=df)
boxcox(temp, data=df)