如何对 R 中的组方差执行线性回归?

How can I perform a linear regression on my group variances in R?

这是我的数据

比较平均值似乎产生了一些感兴趣的结果。它确实如线性模型所示:

lm(data=data, y~factor(x)))

现在,看起来所有组的方差也不相等。这是 x.

中每个组的 y 方差图

我有兴趣测试不同的线性回归,看看二次回归是否是比线性模型更好的模型(与 AIC 或 BIC 相比)。

我可以估计方差的抽样分布并获得每个组中方差的置信区间,因此对我的组的方差进行回归应该是可行的。但是,我不知道如何对 R 中的样本方差进行回归。

如何对 R 中的组方差执行线性回归?

R 中有一个名为 'glmnet' 的包。此库用于广义线性模型。包括多元线性回归。如果您熟悉 lasso 或 ridge 惩罚 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))

有关这两种型号的更多信息,请访问相应功能的文档。希望这有帮助。

我不会使用多项式来模拟方差。 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 是协变量还是其他变量(例如,样本量?)。因此,我什至无法猜测您所观察到的背后是否存在某种基本关系。