[R-sig-eco] Regression with few observations per factor level

Roman Luštrik roman.lustrik at gmail.com
Mon Oct 20 11:29:40 CEST 2014


I think you can, but the confidence intervals will be rather large due to
number of samples.

Notice how standard errors change for sample size (per group) from 4 to 30.

> pg <- 4 # pg = per group
> my.df <- data.frame(var = c(rnorm(pg, mean = 3), rnorm(pg, mean = 1),
rnorm(pg, mean = 11), rnorm(pg, mean = 30)),
+                     trt = rep(c("trt1", "trt2", "trt3", "trt4"), each =
pg),
+                     cov = runif(pg*4)) # 4 groups
> summary(lm(var ~ trt + cov, data = my.df))

Call:
lm(formula = var ~ trt + cov, data = my.df)

Residuals:
     Min       1Q   Median       3Q      Max
-1.63861 -0.46080  0.03332  0.66380  1.27974

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   1.2345     1.0218   1.208    0.252
trttrt2      -0.7759     0.8667  -0.895    0.390
trttrt3       7.8503     0.8308   9.449  1.3e-06 ***
trttrt4      28.2685     0.9050  31.236  4.3e-12 ***
cov           1.4027     1.1639   1.205    0.253
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.154 on 11 degrees of freedom
Multiple R-squared:  0.9932, Adjusted R-squared:  0.9908
F-statistic: 404.4 on 4 and 11 DF,  p-value: 7.467e-12

>
> pg <- 30 # pg = per group
> my.df <- data.frame(var = c(rnorm(pg, mean = 3), rnorm(pg, mean = 1),
rnorm(pg, mean = 11), rnorm(pg, mean = 30)),
+                     trt = rep(c("trt1", "trt2", "trt3", "trt4"), each =
pg),
+                     cov = runif(pg*4)) # 4 groups
> summary(lm(var ~ trt + cov, data = my.df))

Call:
lm(formula = var ~ trt + cov, data = my.df)

Residuals:
    Min      1Q  Median      3Q     Max
-2.5778 -0.6584 -0.0185  0.6423  3.2077

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  2.76961    0.25232  10.977  < 2e-16 ***
trttrt2     -1.75490    0.28546  -6.148 1.17e-08 ***
trttrt3      8.40521    0.28251  29.752  < 2e-16 ***
trttrt4     27.04095    0.28286  95.599  < 2e-16 ***
cov          0.05129    0.32523   0.158    0.875
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.094 on 115 degrees of freedom
Multiple R-squared:  0.9913, Adjusted R-squared:  0.991
F-statistic:  3269 on 4 and 115 DF,  p-value: < 2.2e-16

On Mon, Oct 20, 2014 at 10:53 AM, V. Coudrain <v_coudrain at voila.fr> wrote:

> Hi, I would like to test the impact of a treatment of some variable using
> regression (e.g. lm(var ~ trt + cov)).  However I only have four
> observations per factor level. Is it still possible to apply a regression
> with such a small sample size. I think that i should be difficult to
> correctly estimate variance.Do you think that I rather should compute a
> non-parametric test such as Kruskal-Wallis? However I need to include
> covariables in my models and I am not sure if basic non-parametric tests
> are suitable for this. Thanks for any suggestion.
> ___________________________________________________________
> Mode, hifi, maison,… J'achète malin. Je compare les prix avec
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>



-- 
In God we trust, all others bring data.

	[[alternative HTML version deleted]]



More information about the R-sig-ecology mailing list