How do I combine data taken separately into a single dataset? - r

I have a dataset comprised of leaves which I've weighed individually in order of emergence (first emerged through final emergence), and I'd like to combine these masses so that I have the entire mass of all the leaves for each individual plant.
How would I add these up using R programming language, or what would I need to google to get started on figuring this out?
structure(list(Tray = c(1, 1, 1, 1, 1, 1), Plant = c(2, 2, 2,
2, 3, 3), Treatment = structure(c(4L, 4L, 4L, 4L, 4L, 4L), .Label = c("2TLH",
"E2TL", "EH", "WL"), class = "factor"), PreSwitch = c("Soil",
"Soil", "Soil", "Soil", "Soil", "Soil"), PostSwitch = c("Soil",
"Soil", "Soil", "Soil", "Soil", "Soil"), Pellet = c(1, 1, 1,
1, 1, 1), Rep = c(1, 1, 1, 1, 1, 1), Date = structure(c(1618963200,
1618963200, 1618963200, 1618963200, 1618963200, 1618963200), tzone = "UTC", class = c("POSIXct",
"POSIXt")), DAP = c(60, 60, 60, 60, 60, 60), Position = c(2,
1, 3, 4, 4, 3), Whorl = structure(c(1L, 1L, 2L, 2L, 2L, 2L), .Label = c("1",
"2", "3", "4", "5"), class = "factor"), PetioleLength = c(1.229,
1.365, 1.713, 1.02, 0, 1.408), BladeLength = c(1.604, 1.755,
2.466, 2.672, 0.267, 2.662), BladeWidth = c(1.023, 1.185, 1.803,
1.805, 0.077, 1.771), BladeArea = c(1.289, 1.634, 3.492, 3.789,
0.016, 3.704), BladePerimeter = c(6.721, 7.812, 11.61, 12.958,
1.019, 14.863), BladeCircularity = c(0.359, 0.336, 0.326, 0.284,
0.196, 0.211), BPR = c(1.30512611879577, 1.28571428571429, 1.43957968476357,
2.61960784313725, NA, 1.890625), Leaf.Mass = c(9, 11, 31, 33,
32, 33), BladeAR = c(1.56793743890518, 1.48101265822785, 1.36772046589018,
1.4803324099723, 3.46753246753247, 1.50310559006211), Subirrigation = c(0,
0, 0, 0, 0, 0), Genotype = c(1, 1, 1, 1, 1, 1), Location = c(0,
0, 0, 0, 0, 0)), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))

I may be missing something but isn't this a sum by Plant?
One solution below sums it for each plant into a separate table with just the totals and the second summarizes and adds it back to the main data set in a single step.
library(tidyverse)
#summary data set
plant_total <- df %>% group_by(Plant) %>% summarize(plant_weight = sum(Leaf.Mass, na.rm= TRUE))
#add plant_weight column to df data set
plant_total <- df %>% group_by(Plant) %>% mutate(plant_weight = sum(Leaf.Mass, na.rm = TRUE))

Related

which function can I use to add individual name under each star plot

I want to give names to individual starplots in R
stars(norm_datas[, 1:12], full = TRUE,radius = TRUE,len = 1.0, key.loc = c(14,1), labels = abbreviate(case.names(norm_datas)),main = "Provision of Ecosystem services", draw.segments = TRUE, lwd = 0.25, lty = par("lty"), xpd = TRUE).
This is what I tried but it just labeled each star plot as 1, 2, 3.
Kindly help resolve.
structure(list(Type_Garden = c("AG", "AG", "AG"), Pollinators = c(10,
6, 5.5), Flower_abundance = c(384, 435, 499), Climate_regulation = c(1,
7, 2), Crop_area = c(34, 25, 10), Plant_diversity = c(22, 53,
41), Nitrogen_balance = c(0.95, 0.26, NA), Phosphorus_balance = c(0.24,
0.04, NA), Habitat_provision = c(1, 2, 0), Recreation_covid = c(1,
NA, NA), Aesthetic_appreciation = c(3, NA, NA), Reconnection_nature = c(4,
NA, NA), Mental_health = c(1, NA, NA), Physical_health = c(1,
NA, NA)), class = "data.frame", row.names = c(NA, -3L))

Is there an r package for correcting for multiple testing in GLM's, specifically for relative risk or risk difference?

In my study I am looking at sex differences in the efficacy of biologicals (=type of medicine) in patients with axial spondyloarthritis. I am looking at different 7 different outcomes (disease activity scores) at time 6, 12 and 24 months. I am using a GLM with binomial family to calculate relative risk and risk difference. I wish to make the confidence intervals broader, since I wish to correct for multiple testing.
How would I go about doing this?
Here is a small representative dataset and the code I ran:
dat <- structure(list(gender = c(0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0,
1, 0, 1, 1, 1, 0, 0, 1), age_std = structure(c(-0.467384378359854,
-0.623520001679169, 0.703632796535007, -0.935791248317799, -1.16999468329677,
1.32817528981227, -1.16999468329677, 0.235225926577062, -0.857723436658141,
-0.389316566700197, -0.467384378359854, -0.31124875504054, -1.24806249495643,
-1.09192687163711, -0.623520001679169, -1.40419811827574, -1.79453717657403,
-1.71646936491437, -1.87260498823369, -1.09192687163711), .Dim = c(20L,
1L)), bio_drug_start_year_centered = c(-6, -2, -1, -1, -1, -9,
-1, -1, -1, -1, -1, -1, 3, 2, 0, 2, 0, 0, 1, 0), country = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = c("CH", "CZ", "DK", "ES", "IS", "IT", "NL",
"NO", "PT", "RO", "SE", "SF", "SI", "TR", "UK"), class = "factor"),
bio_drug_start_year = c(2007, 2011, 2012, 2012, 2012, 2004,
2012, 2012, 2012, 2012, 2012, 2012, 2016, 2015, 2013, 2015,
2013, 2013, 2014, 2013), asdas_crp_cii_6month = c(1, 1, 0,
1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0)), na.action = structure(c(`114174` = 2755L,
`116484` = 2770L, `231118` = 3050L), class = "omit"), row.names = c("463",
"7729", "7756", "8306", "8324", "128", "8440", "8450", "8663",
"8809", "8840", "8857", "9020", "9033", "9101", "9324", "9377",
"9523", "9702", "9718"), class = "data.frame")
rr = rd = numeric()
for( i in 1: 1e3){
logmod = glm( asdas_crp_cii_6month ~ gender + country + age_std + bio_drug_start_year_centered,
family = 'binomial', data = dat[sample(1:nrow(dat),nrow(dat),replace=T),])
summary(logmod)
dat.1 = dat.0 = dat
dat.1$gender = 1
dat.0$gender = 0
p1 = predict(logmod, newdata = dat.1, 'response' )
p0 = predict(logmod, newdata = dat.0, 'response' )
rr[i] = mean(p1)/mean(p0)
rd[i] = mean(p1)-mean(p0)
}
twosidep<-function(data, test = 0){
p1<-sum(data>test)/length(data)
p2<-sum(data<test)/length(data)
p<-min(p1,p2)*2
return(p)
}
m = rbind(c(mean(rr), quantile(rr, c(0.025, 0.975)), twosidep(rr, test = 1) ),
c(mean(rd), quantile(rd, c(0.025, 0.975)), twosidep(rd) ))
rownames(m) = c('rr', 'rd')
colnames(m) = c('Estimate', 'Lower CI', 'Upper CI', 'p-value')
m
Here is the output of the code
Estimate Lower CI Upper CI p-value
rr 0.6337688 0.1612215 1.1929914 0.25
rd -0.3050054 -0.5731631 0.1239957 0.25
Question: How can I increase these confidence intervals with the bonferroni correction method?

How to change the y-axis scale in plot for a forecast object?

I have the following graph made with plot. I basically plotted the outcome of an arima model. The problem, as you can see, is the y-axis. I want to rescale it so that it shows values as integers and not in scientific notation. I already tried with ylim = c(a,b) but it didn't work.
This is the data to plot:
structure(list(method = "ARIMA(1,2,0)", model = structure(list(
coef = c(ar1 = 0.165440211592995), sigma2 = 314372.871343033,
var.coef = structure(0.0387588365491072, .Dim = c(1L, 1L), .Dimnames = list(
"ar1", "ar1")), mask = TRUE, loglik = -201.464633423226,
aic = 406.929266846451, arma = c(1L, 0L, 0L, 0L, 1L, 2L,
0L), residuals = structure(c(0.144002762945477, -0.257594259049227,
169.62992413163, -40.455716409227, 3.98528254071288, 325.669119576814,
-277.933508979317, 161.058607396831, 100.485413762468, 161.981734397248,
-21.1101185099251, 467.511038095663, 167.408540762885, 264.467148159716,
-870.459264535865, 1471.66097350626, 116.971877311758, -159.918791518434,
967.205782005673, -64.1682010133445, -372.385939678148, 352.062155538701,
632.526018003249, 1002.33521590517, 479.534164073812, 461.147699502253,
-1091.4663608196, -614.056109041783), .Tsp = c(1, 28, 1), class = "ts"),
call = arima(x = corona_total$Total_Cases, order = c(1, 2,
0)), series = "corona_total$Total_Cases", code = 0L,
n.cond = 0L, nobs = 26L, model = list(phi = 0.165440211592995,
theta = numeric(0), Delta = c(2, -1), Z = c(1, 2, -1),
a = c(-779, 59138, 53578), P = structure(c(-2.22044604925031e-16,
2.86887593857152e-17, -5.56124814802562e-17, 2.86887593857152e-17,
-3.31423141286073e-17, -1.61722928090181e-32, -5.56124814802562e-17,
-3.75958688714994e-17, -5.56124814802562e-17), .Dim = c(3L,
3L)), T = structure(c(0.165440211592995, 1, 0, 0, 2,
1, 0, -1, 0), .Dim = c(3L, 3L)), V = structure(c(1, 0,
0, 0, 0, 0, 0, 0, 0), .Dim = c(3L, 3L)), h = 0, Pn = structure(c(1,
-5.4830714621183e-18, 1.21812129054869e-17, -5.48307146211831e-18,
-3.31423141286073e-17, -1.84889274661175e-32, 1.21812129054869e-17,
-3.75958688714994e-17, -5.56124814802562e-17), .Dim = c(3L,
3L))), x = structure(c(322, 400, 650, 888, 1128, 1694,
2036, 2502, 3089, 3858, 4636, 5883, 7375, 9172, 10149, 12462,
15113, 17660, 21157, 24747, 27980, 31506, 35713, 41035, 47021,
53578, 59138, 63919), .Tsp = c(1, 28, 1), class = "ts")), class = "Arima"),
level = c(80, 95), mean = structure(c(68571.1220751691, 73201.9225591844,
77829.1955946478, 82455.8850482763, 87082.4779540027, 91709.0548868236,
96335.6291770837, 100962.203030158, 105588.776810904, 110215.350579684,
114841.924346485, 119468.498112958, 124095.071879377, 128721.645645786,
133348.219412195, 137974.793178603, 142601.366945011, 147227.940711419,
151854.514477827, 156481.088244235, 161107.662010643, 165734.235777051,
170360.80954346, 174987.383309868, 179613.957076276, 184240.530842684,
188867.104609092, 193493.6783755, 198120.252141908, 202746.825908316,
207373.399674724, 211999.973441132, 216626.54720754, 221253.120973948,
225879.694740356, 230506.268506765, 235132.842273173, 239759.416039581,
244385.989805989, 249012.563572397, 253639.137338805, 258265.711105213,
262892.284871621, 267518.858638029, 272145.432404437, 276772.006170845,
281398.579937253, 286025.153703662, 290651.72747007, 295278.301236478,
299904.875002886, 304531.448769294, 309158.022535702, 313784.59630211,
318411.170068518, 323037.743834926, 327664.317601334, 332290.891367742,
336917.46513415, 341544.038900558), .Tsp = c(29, 88, 1), class = "ts"),
lower = structure(c(67852.5693904542, 71488.0378850631, 74869.4056219101,
78042.7559156995, 81035.3037876344, 83865.5016552685, 86546.988586515,
89090.4113186268, 91504.3946218833, 93796.1160212266, 95971.6728237902,
98036.3298321095, 99994.6937502293, 101850.840164951, 103608.408563905,
105270.675078771, 106840.60926587, 108320.919172912, 109714.087632186,
111022.401864165, 112247.977899771, 113392.780933102, 114458.642437768,
115447.274680314, 116360.283118863, 117199.177067588, 117965.378927058,
118660.232219392, 119285.008620154, 119840.914142592, 120329.094601246,
120750.640459457, 121106.591147333, 121397.938922313, 121625.632332819,
121790.579335963, 121893.650112513, 121935.679615911, 121917.46988679,
121839.792160025, 121703.388787634, 121508.974997728, 121257.240507039,
120948.851002351, 120584.449504222, 120164.657624752, 119690.076729762,
119161.289014511, 118578.858501069, 117943.331964511, 117255.239794357,
116515.096796942, 115723.402943843, 114880.644070922, 113987.29253211,
113043.807811626, 112050.637097962, 111008.215822666, 109916.968166633,
108777.307536393, 67472.1905761175, 70580.7621429779, 73302.5874546909,
75706.5864702675, 77834.1231526988, 79713.3753855171, 81365.1952663977,
82805.8644073931, 84048.5730632326, 85104.2982790952, 85982.3650762524,
86690.8252744766, 87236.7242194817, 87626.2949833746, 87865.1036821527,
87958.1607268483, 87910.0076619409, 87724.7860890043, 87406.2931723477,
86958.0269138267, 86383.2235034666, 85684.8884462828, 84865.8227394482,
83928.6450686659, 82875.8107702521, 81709.6281410368, 80432.2725549711,
79045.7987518185, 77552.151591525, 75953.1755121868, 74250.6228859222,
72446.1614324952, 70541.3808230744, 68537.798584461, 66436.8653962784,
64239.9698590982, 61948.4427995644, 59563.561168772, 57086.5515820169,
54518.5935412548, 51860.8223759273, 49114.3319330342, 46280.1770432903,
43359.3757867774, 40352.9115785747, 37261.7350923526, 34086.7660377659,
30828.8948056289, 27488.983993257, 24067.8698209688, 20566.3634495346,
16985.2522073028, 13325.3007348137, 9587.25205390016, 5771.82856756041,
1879.73299626436, -2088.35074420535, -6131.75671876397, -10249.8361987147,
-14441.9569333302), .Dim = c(60L, 2L), .Dimnames = list(NULL,
c("80%", "95%")), .Tsp = c(29, 88, 1), class = c("mts",
"ts", "matrix")), upper = structure(c(69289.674759884, 74915.8072333057,
80788.9855673855, 86869.0141808532, 93129.6521203709, 99552.6081183786,
106124.269767652, 112833.994741689, 119673.158999925, 126634.585138142,
133712.175869179, 140900.666393806, 148195.450008524, 155592.451126622,
163088.030260485, 170678.911278435, 178362.124624152, 186134.962249926,
193994.941323469, 201939.774624305, 209967.346121516, 218075.690621001,
226262.976649151, 234527.491939421, 242867.631033688, 251281.88461778,
259768.830291125, 268327.124531608, 276955.495663662, 285652.73767404,
294417.704748202, 303249.306422807, 312146.503267748, 321108.303025584,
330133.757147894, 339221.957677567, 348372.034433833, 357583.15246325,
366854.509725187, 376185.334984769, 385574.885889976, 395022.447212698,
404527.329236203, 414088.866273707, 423706.415304653, 433379.354716939,
443107.083144745, 452889.018392812, 462724.59643907, 472613.270508444,
482554.510211415, 492547.800741645, 502592.64212756, 512688.548533298,
522835.047604926, 533031.679858227, 543277.998104707, 553573.566912819,
563917.962101668, 574310.770264724, 69670.0535742206, 75823.0829753909,
82355.8037346047, 89205.1836262851, 96330.8327553065, 103704.73438813,
111306.06308777, 119118.541652923, 127128.980558576, 135326.402880273,
143701.483616717, 152246.170951439, 160953.419539271, 169816.996308198,
178831.335142237, 187991.425630358, 197292.726228081, 206731.095333834,
216302.735783307, 226004.149574644, 235832.10051782, 245783.58310782,
255855.796347471, 266046.121551069, 276352.103382299, 286771.433544331,
297301.936663213, 307941.557999181, 318688.352692291, 329540.476304445,
340496.176463526, 351553.785449769, 362711.713592006, 373968.443363436,
385322.524084435, 396772.567154431, 408317.241746781, 419955.270910389,
431685.428029961, 443506.533603539, 455417.452301683, 467417.090277392,
479504.392699952, 491678.341489281, 503937.9532303, 516282.277249338,
528710.393836741, 541221.412601694, 553814.470946882, 566488.732651987,
579243.386556237, 592077.645331285, 604990.74433659, 617981.94055032,
631050.511569476, 644195.754673588, 657416.985946874, 670713.539454249,
684084.766467015, 697530.034734447), .Dim = c(60L, 2L), .Dimnames = list(
NULL, c("80%", "95%")), .Tsp = c(29, 88, 1), class = c("mts",
"ts", "matrix")), x = structure(c(322, 400, 650, 888, 1128,
1694, 2036, 2502, 3089, 3858, 4636, 5883, 7375, 9172, 10149,
12462, 15113, 17660, 21157, 24747, 27980, 31506, 35713, 41035,
47021, 53578, 59138, 63919), .Tsp = c(1, 28, 1), class = "ts"),
series = "corona_total$Total_Cases", fitted = structure(c(321.855997237055,
400.257594259049, 480.37007586837, 928.455716409227, 1124.01471745929,
1368.33088042319, 2313.93350897932, 2340.94139260317, 2988.51458623753,
3696.01826560275, 4657.11011850993, 5415.48896190434, 7207.59145923711,
8907.53285184028, 11019.4592645359, 10990.3390264937, 14996.0281226882,
17819.9187915184, 20189.7942179943, 24811.1682010133, 28352.3859396781,
31153.9378444613, 35080.4739819968, 40032.6647840948, 46541.4658359262,
53116.8523004977, 60229.4663608196, 64533.0561090418), .Tsp = c(1,
28, 1), class = "ts"), residuals = structure(c(0.144002762945477,
-0.257594259049227, 169.62992413163, -40.455716409227, 3.98528254071288,
325.669119576814, -277.933508979317, 161.058607396831, 100.485413762468,
161.981734397248, -21.1101185099251, 467.511038095663, 167.408540762885,
264.467148159716, -870.459264535865, 1471.66097350626, 116.971877311758,
-159.918791518434, 967.205782005673, -64.1682010133445, -372.385939678148,
352.062155538701, 632.526018003249, 1002.33521590517, 479.534164073812,
461.147699502253, -1091.4663608196, -614.056109041783), .Tsp = c(1,
28, 1), class = "ts")), class = "forecast")
This is the code I used to make the plot (ignore the dotted exponential curve):
plot(forecast, shaded = TRUE, shadecols=NULL, lambda = NULL, col = 1, fcol = 4, pi.col=1,
pi.lty=2, ylim = NULL, main = "Out-of-Sample Forecast", ylab = "Number of Cases",
xlab = "Days (since 23/03/2020)") + abline(v = 28:29, col= "#FF000033", lty=1, lwd=5)
Output:
Can anyone please help me with this?
I couldn't load your object in my R session, so I'm assuming your plot works like a regular one.
You have 2 options.
Either you set options(scipen = 10) (or some high value), which is a quick fix, but if you need some plots with scientific notation and others without on the same graphics window, this will not work.
You define the axis yourself, with the format you need.
You can use axTicks(2) to get the position of default ticks and then format the labels as you need.
I recommend option 2. Here's a quick example :
x <- seq(1,10, l = 100)
y <- x*1e5
par(mfrow = c(1,2))
plot(x, y, main = "custom axis", yaxt = "n")
ticks <- axTicks(2) # get axis ticks
axis(2, at = ticks, labels = formatC(ticks, format = 'd')) # make axis
plot(x, y, main = "default axis")
Outputs :
You can take a look at other potential options in the answers to this post

Apply cohen.d to multiple columns

I have a data frame of survey question responses. I would like to estimate Cohen's d effect sizes for each response using cohen.d from effsize.
Here are the first 6 rows of my data frame:
structure(list(id = c("HO1001", "HO1001", "HO1002", "HO1002",
"HO1003", "HO1003"), time = structure(c(1L, 2L, 1L, 2L, 1L, 2L
), .Label = c("0", "1"), class = "factor"), grit.distract = c(1,
1, 3, 2, 1, 2), grit.setback = c(5, 4, 3, 3, 4, 4), grit.obsess = c(3,
2, 2, 2, 3, 2), grit.work = c(4, 5, 3, 4, 5, 5), grit.goal = c(2,
3, 2, 1, 4, 4), grit.focus = c(3, 3, 3, 1, 2, 3), grit.finish = c(4,
4, 4, 4, 4, 3), grit.diligent = c(4, 4, 3, 4, 5, 4), grit.mean = c(3.25,
3.25, 2.875, 2.625, 3.5, 3.375)), class = c("tbl_df", "tbl",
"data.frame"), row.names = c(NA, -6L))
I successfully converted the df into wide format to use effsize on the summary statistics i.e. mean/total as follows:
structure(list(id = c("HO1001", "HO1002", "HO1003", "HO1004",
"HO1005", "HO1006"), pre = c(3.25, 2.875, 3.5, 2.25, NA, NA),
post = c(3.25, 2.625, 3.375, 2.5, 2.75, 2.875), change = c(0,
-0.25, -0.125, 0.25, NA, NA), highconf = structure(c(2L,
1L, 2L, 1L, NA, NA), .Label = c("0", "1"), class = "factor")), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -6L)
cohen.d(grit.tot$pre, grit.tot$post, na.rm = T)
What I would like to do is calculate the effect sizes for each survey item i.e. grit distract, grit.setback, etc. between time 0 and time 1 (please no comments on my statistical methods). Given that I have plenty more data frames like this and don't want to do them all individually, I believe that I should use a function and a loop such as apply but I'm not sure how to construct this.
If I have understood your question this may help.
If your data frame from the first part of your questions is stored as dt running the following should give the cohen d for each survey item.
lapply(dt[c(-1,-2)],function(x) cohen.d(x ~ dt$time))
dt[c(-1,-2)] removes the ID column and the time column as you don't want to run the cohen d test on these.

How to properly index list items to return rows, not columns, inside a for loop

I'm trying to write a for loop within another for loop. The first loop grabs the ith vcov matrix from a list of variously sized matrices (vcmats below) and grabs a frame of 24 predictor models of appropriate dimension to multiply with the current vcov matrix from a list of frames (jacobians below) for the different models. The second loop should pull the jth record (row) from the selected predictor frame, correctly format it, then run the calculation with the vcov matrix and output an indicator variable and calculated result needed for post processing to the holding table (holdtab).
When I run the code below I get the following error: Error in jjacob[, 1:4] : incorrect number of dimensions because R is returning the column of 1s (i.e. the intercept column of jacobs), not the complete first record (i.e. jjacob = jacobs[1,]). I've substantially simplified the example but left enough complexity to demonstrate the problem. I would appreciate any help in resolving this issue.
vcmats <- list(structure(c(0.67553, -0.1932, -0.00878, -0.00295, -0.00262,
-0.00637, -0.1932, 0.19988, 0.00331, -0.00159, 0.00149, 2e-05,
-0.00878, 0.00331, 0.00047, -6e-05, 3e-05, 3e-05, -0.00295, -0.00159,
-6e-05, 0.00013, -2e-05, 6e-05, -0.00262, 0.00149, 3e-05, -2e-05,
2e-05, 0, -0.00637, 2e-05, 3e-05, 6e-05, 0, 0.00026), .Dim = c(6L,
6L)), structure(c(0.38399, -0.03572, -0.00543, -0.00453, -0.00634,
-0.03572, 0.10912, 0.00118, -0.00044, 0.00016, -0.00543, 0.00118,
0.00042, -3e-05, 4e-05, -0.00453, -0.00044, -3e-05, 0.00011,
5e-05, -0.00634, 0.00016, 4e-05, 5e-05, 0.00025), .Dim = c(5L,
5L)))
jacobians <- list(structure(list(intcpt = c(1, 1, 1, 1), species = c(1, 1,
0, 0), nage = c(6, 6, 6, 6), T = c(12, 50, 12, 50), hgt = c(90,
90, 90, 90), moon = c(7, 7, 7, 7), hXm = c(0, 0, 0, 0), covr = c(0,
0, 0, 0), het = c(0, 0, 0, 0)), .Names = c("intcpt", "species",
"nage", "T", "hgt", "moon", "hXm", "covr", "het"), row.names = c("1",
"1.4", "1.12", "1.16"), class = "data.frame"), structure(list(
intcpt = c(1, 1, 1, 1), species = c(1, 1, 0, 0), nage = c(6,
6, 6, 6), T = c(12, 50, 12, 50), hgt = c(0, 0, 0, 0), moon = c(7,
7, 7, 7), hXm = c(0, 0, 0, 0), covr = c(0, 0, 0, 0), het = c(0,
0, 0, 0)), .Names = c("intcpt", "species", "nage", "T", "hgt",
"moon", "hXm", "covr", "het"), row.names = c("2", "2.4", "2.12",
"2.16"), class = "data.frame"))
holdtab <- structure(list(model = structure(c(4L, 4L, 4L, 4L, 5L, 5L, 5L,
5L), .Label = c("M.1.BaseCov", "M.2.Height", "M.5.Height.X.LastNewMoon",
"M.6.Height.plus.LastNew", "M.7.LastNewMoon", "M.G.Global"), class = "factor"),
aicc = c(341.317, 341.317, 341.317, 341.317, 342.1412, 342.1412,
342.1412, 342.1412), species = c(NA, NA, NA, NA, NA, NA,
NA, NA), condVar = c(NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("model",
"aicc", "species", "condVar"), row.names = c(1L, 2L, 3L, 4L,
25L, 26L, 27L, 28L), class = "data.frame")
jloop <- 1
for (imat in vcmats) { # Call the outside loop of vcov matrices
jacobs = jacobians[[jloop]] # Set tempvar jacobs as the jth member of the jacobians frame (n/24)
for (jjacob in jacobs) { # Call inside loop of lines in jacob (each individual set of predictor levels)
# I need to reduce the vector length to match my vcov matrix so
pt1 = jjacob[,1:4] # Separate Core columns from variable columns (because I don't want to drop species when ==0)
pt2 = jjacob[,5:9] # Pull out variable columns for next step
pt2 = pt2[,!apply(pt2 == 0, 2, all)] # Drop any variable columns that ==0
jjacob = cbind(pt1, pt2) # Reconstruct the record now of correct dimensions for the relevant vcov matrix
jjacob = as.matrix(jjacob) # Explicitly convert jjmod - I was having trouble with this previously
tj = (t(jjacob)) # Transpose the vector
condvar = jjacob %*% imat %*% tj # run the calculation
condVarTab[record,3] = jjacob[2] # Write species 0 or 1 to the output table
condVarTab[record,4] = condvar # Write the conditional variance to the table
record = record+1 # Iterate the record number for the next output run
}
jloop = jloop+1 # Once all 24 models in a frame are calculated iterate to the next frame of models which will be associated with a new vcv matrix
}

Resources