这是我的数据
比较均值似乎会产生一些感兴趣的结果。确实如线性模型所揭示的那样:
lm(data=data, y~factor(x)))
现在,看起来所有组中的差异都不相等。以下是y
中每个组x
的差异图。
我有兴趣测试不同的线性回归,看看二次回归是否比线性模型更好(通过AIC或BIC比较)。
我可以估计方差的采样分布,并获得每组方差的置信区间,因此对我的组的方差进行回归应该是可行的。但是,我不知道如何对R中的样本方差进行回归。
如何对R中的群组差异执行线性回归?
答案 0 :(得分:1)
我不会使用多项式来模拟方差。包nlme提供的方差函数是varConstPower
。我们试试这个:
n <- c(1, 2, 4, 8, 16, 32)
v <- c(5.85, 6.35, 6.55, 6.85, 7.02, 7.15)
plot(v ~ n)
fit_ConstPower <- nls(v ~ n^(2*theta) + c,
start = list(theta = 2, c = 4),
data = data.frame(n, v))
summary(fit_ConstPower)
lines(npred <- seq(1, 32, length.out = 100),
predict(fit_ConstPower, newdata = data.frame(n = npred)),
col = "blue")
然而,这似乎不太适合。对我来说,它看起来更像是饱和:
fit_hyper <- nls(v ~ k * n^(theta) + c,
start = list(k = -1, theta = -1, c = 7.2),
data = data.frame(n, v))
summary(fit_hyper)
lines(npred,
predict(fit_hyper, newdata = data.frame(n = npred)),
col = "green")
PS:我无法理解你的问题。字面上的答案很简单(只需使用lm
),我必须遗漏一些东西。此外,您没有告诉我们x
是协变量还是其他东西(例如,样本量?)。因此,我甚至无法猜测你观察到的背后是否存在某种基本关系。
答案 1 :(得分:0)
在R中有一个名为'glmnet'的包。该库用于广义线性模型。包含的多元线性回归。如果您熟悉套索或脊线惩罚,glmnet()函数会执行两次惩罚组合的回归。并且cv.glmnet()函数执行交叉验证模型以选择最佳惩罚参数。
因此,您可以执行以下操作:
library('glmnet')
x <- yourdata[sample(1:nrow(mydata),]
cv.model1 <- cv.glmnet(x,y,alpha = your_parameter)
或者,如果您想获得最简单的线性回归模型 你可以使用de lm()函数,它不会执行惩罚。
simple_model <- lm(y~x,data=data.frame(x,y))
有关两种型号的更多信息,请访问相应功能的文档。希望这会有所帮助。