I have a dataframe (df, see below for the head of the df) that includes the proportions of predicted behaviour using four different models.
ID_Day Model PropActive PropEating PropGroom PropLit PropOther PropRest PropScrat PropSit PropStand
Cho_1 C.RF5 0.01685185 0.02296296 7.053241e-02 1.157407e-05 0.009745370 0.5154745 0.001944444 0.3519097 0.010567130
Cho_1 C.SOM5 0.00000000 0.02565972 8.262731e-02 0.000000e+00 0.008217593 0.5735301 0.000000000 0.3000926 0.009872685
Cho_1 H.RF5 0.02368056 0.01856481 5.685185e-02 6.712963e-04 0.027395833 0.3424769 0.001446759 0.5040046 0.024907407
Cho_1 H.SOM5 0.04878472 0.02337963 1.157407e-05 0.000000e+00 0.048784722 0.3364352 0.000000000 0.5208681 0.021736111
Cho_2 C.RF5 0.01115741 0.02149306 5.105324e-02 6.944444e-05 0.008460648 0.6110648 0.001064815 0.2876852 0.007951389
Cho_2 C.SOM5 0.00000000 0.19230324 9.521991e-02 0.000000e+00 0.006284722 0.5040625 0.000000000 0.1916204 0.010509259
*ID_Day is a combination of individual and day.
I would like to do a Dirichlet regression to compare the proportions of the predicted behaviour between the models.
When I run the following code:
df$Y <- DR_data(df[, c("PropActive", "PropEating", "PropGroom", "PropLit", "PropOther","PropRest", "PropScrat", "PropSit", "PropStand")], base=1)
I get the following error:
Error in set(x, j = name, value = value) : Supplied 2592 items to be assigned to 288 items of column 'Y'. If you wish to 'recycle' the RHS please use rep() to make this intent clear to readers of your code.
Even if I select only one behaviour, I get the same error:
df$Y <- DR_data(df[, c("PropActive")], base=1)
Error in set(x, j = name, value = value) : Supplied 576 items to be assigned to 288 items of column 'Y'. If you wish to 'recycle' the RHS please use rep() to make this intent clear to readers of your code
I am not quite sure how to solve this error and was hoping someone could help me with this.
Library: DirichletReg
I don't think you can add the DR_data results to your original dataframe as the results are a class 'DirichletRegData'
object. If you save that object to another variable (e.g. "Y") it should work as expected:
#install.packages("DirichletReg")
library(DirichletReg)
#> Loading required package: Formula
df <- read.table(text = "ID_Day Model PropActive PropEating PropGroom PropLit PropOther PropRest PropScrat PropSit PropStand
1: Cho_1 C.RF5 0.01685185 0.02296296 7.053241e-02 1.157407e-05 0.009745370 0.5154745 0.001944444 0.3519097 0.010567130
2: Cho_1 C.SOM5 0.00000000 0.02565972 8.262731e-02 0.000000e+00 0.008217593 0.5735301 0.000000000 0.3000926 0.009872685
3: Cho_1 H.RF5 0.02368056 0.01856481 5.685185e-02 6.712963e-04 0.027395833 0.3424769 0.001446759 0.5040046 0.024907407
4: Cho_1 H.SOM5 0.04878472 0.02337963 1.157407e-05 0.000000e+00 0.048784722 0.3364352 0.000000000 0.5208681 0.021736111
5: Cho_2 C.RF5 0.01115741 0.02149306 5.105324e-02 6.944444e-05 0.008460648 0.6110648 0.001064815 0.2876852 0.007951389
6: Cho_2 C.SOM5 0.00000000 0.19230324 9.521991e-02 0.000000e+00 0.006284722 0.5040625 0.000000000 0.1916204 0.010509259",
header = TRUE)
Y <- DR_data(df[,c("PropActive", "PropEating", "PropGroom", "PropLit", "PropOther","PropRest", "PropScrat", "PropSit", "PropStand")], base=1)
#> Warning in DR_data(df[, c("PropActive", "PropEating", "PropGroom", "PropLit", : not all rows sum up to 1 => normalization forced
#> some entries are 0 or 1 => transformation forced
str(Y)
#> 'DirichletRegData' num [1:6, 1:9] 0.0326 0.0185 0.0383 0.0592 0.0278 ...
#> - attr(*, "dimnames")=List of 2
#> ..$ : chr [1:6] "1:" "2:" "3:" "4:" ...
#> ..$ : chr [1:9] "PropActive" "PropEating" "PropGroom" "PropLit" ...
#> - attr(*, "Y.original")='data.frame': 6 obs. of 9 variables:
#> ..$ PropActive: num [1:6] 0.0169 0 0.0237 0.0488 0.0112 ...
#> ..$ PropEating: num [1:6] 0.023 0.0257 0.0186 0.0234 0.0215 ...
#> ..$ PropGroom : num [1:6] 7.05e-02 8.26e-02 5.69e-02 1.16e-05 5.11e-02 ...
#> ..$ PropLit : num [1:6] 1.16e-05 0.00 6.71e-04 0.00 6.94e-05 ...
#> ..$ PropOther : num [1:6] 0.00975 0.00822 0.0274 0.04878 0.00846 ...
#> ..$ PropRest : num [1:6] 0.515 0.574 0.342 0.336 0.611 ...
#> ..$ PropScrat : num [1:6] 0.00194 0 0.00145 0 0.00106 ...
#> ..$ PropSit : num [1:6] 0.352 0.3 0.504 0.521 0.288 ...
#> ..$ PropStand : num [1:6] 0.01057 0.00987 0.02491 0.02174 0.00795 ...
#> - attr(*, "dims")= int 9
#> - attr(*, "dim.names")= chr [1:9] "PropActive" "PropEating" "PropGroom" "PropLit" ...
#> - attr(*, "obs")= int 6
#> - attr(*, "valid_obs")= int 6
#> - attr(*, "normalized")= logi TRUE
#> - attr(*, "transformed")= logi TRUE
#> - attr(*, "base")= num 1
Y
#> PropActive PropEating PropGroom PropLit PropOther PropRest PropScrat
#> 1: 0.03256173 0.03765432 0.07729553 0.01852816 0.02663966 0.4480806 0.02013889
#> 2: 0.01851852 0.03990162 0.08737461 0.01851852 0.02536651 0.4964603 0.01851852
#> 3: 0.03825232 0.03398919 0.06589506 0.01907793 0.04134838 0.3039159 0.01972415
#> 4: 0.05917245 0.03800154 0.01852816 0.01851852 0.05917245 0.2988812 0.01851852
#> 5: 0.02781636 0.03642940 0.06106288 0.01857639 0.02556906 0.5277392 0.01940586
#> 6: 0.01851852 0.17877121 0.09786844 0.01851852 0.02375579 0.4385706 0.01851852
#> PropSit PropStand
#> 1: 0.3117766 0.02732446
#> 2: 0.2685957 0.02674576
#> 3: 0.4385223 0.03927469
#> 4: 0.4525752 0.03663194
#> 5: 0.2582562 0.02514468
#> 6: 0.1782022 0.02727623
Created on 2022-08-16 by the reprex package (v2.0.1)