简体   繁体   English

如何使用循环通过R中的几个变量计算出一个model

[英]How to use a loop to work out a model through several variables in R

Here my data for boosting这是我的提升数据

 new=structure(list(B1 = c(6914L, 6914L, 6914L, 6958L, 6958L, 6958L, 
    6958L, 6914L, 6914L, 6914L, 6914L, 5672L, 6014L, 6014L, 6014L, 
    6014L, 6014L, 6958L, 6958L, 6958L, 6958L, 6958L, 6958L, 6914L, 
    6914L, 6914L, 6914L, 6092L, 6092L, 6092L, 6092L, 6092L, 6239L, 
    6239L, 6239L, 6239L, 6239L, 6239L, 6615L, 6615L, 6615L, 6615L, 
    6615L, 7038L, 7038L, 7038L, 7038L, 7038L, 7038L, 6602L, 8136L, 
    8136L, 7369L, 8136L, 8136L, 7369L, 8136L, 8136L, 8136L, 7369L, 
    7369L, 8136L, 8136L, 8136L, 8136L, 7369L, 7369L, 8136L, 8136L, 
    8136L, 8136L, 8317L, 8317L, 8317L, 8821L, 8821L, 8821L, 8821L, 
    8821L, 8317L, 8317L, 8821L, 8821L, 8821L, 8821L, 8821L, 8821L, 
    8317L, 8821L, 8821L, 8821L, 8821L, 8821L, 8821L, 8821L, 8821L, 
    8821L, 8821L, 8821L, 9245L), B2 = c(5560L, 5380L, 5644L, 5088L, 
    5280L, 5200L, 5472L, 5568L, 5560L, 5424L, 5404L, 4784L, 4696L, 
    4820L, 4588L, 4544L, 4452L, 4716L, 5048L, 5236L, 5416L, 5584L, 
    5824L, 5800L, 5932L, 5980L, 6112L, 4796L, 4860L, 5396L, 5900L, 
    5968L, 5968L, 5776L, 5440L, 5248L, 4884L, 4760L, 4796L, 4860L, 
    4776L, 4664L, 4716L, 4952L, 5168L, 5316L, 5548L, 5768L, 5900L, 
    5948L, 5796L, 5756L, 5912L, 5956L, 6000L, 6196L, 6044L, 6164L, 
    6268L, 6588L, 6508L, 6460L, 6608L, 6592L, 6600L, 7100L, 7016L, 
    6988L, 6952L, 6800L, 6644L, 7308L, 7340L, 7528L, 7492L, 7304L, 
    6928L, 6748L, 6764L, 7492L, 7648L, 7580L, 7416L, 7108L, 6864L, 
    7056L, 7164L, 7744L, 7720L, 7360L, 7188L, 7204L, 7280L, 7236L, 
    7520L, 7352L, 7352L, 7376L, 7320L, 7428L), B3 = c(4768L, 4840L, 
    4936L, 4320L, 4388L, 4572L, 4640L, 4704L, 4696L, 4488L, 4396L, 
    4002L, 4030L, 3960L, 3684L, 3680L, 3896L, 4212L, 4364L, 4508L, 
    4732L, 4896L, 4848L, 4872L, 4960L, 5052L, 4848L, 4308L, 4800L, 
    5216L, 5224L, 5248L, 5136L, 4720L, 4428L, 4120L, 3918L, 4052L, 
    4058L, 3806L, 3802L, 3930L, 4092L, 4324L, 4476L, 4604L, 4768L, 
    4980L, 5080L, 5288L, 4840L, 4936L, 5096L, 5040L, 5096L, 5292L, 
    5280L, 5360L, 5480L, 5584L, 5528L, 5524L, 5700L, 5736L, 5732L, 
    6136L, 5980L, 5884L, 5904L, 5820L, 5864L, 6488L, 6572L, 6476L, 
    6256L, 6024L, 5844L, 5884L, 6100L, 6684L, 6596L, 6376L, 6188L, 
    5952L, 6044L, 6212L, 6268L, 6668L, 6484L, 6336L, 6164L, 6332L, 
    6432L, 6396L, 6592L, 6548L, 6500L, 6464L, 6460L, 7008L), B4 = c(4960L, 
    4964L, 4540L, 4164L, 4412L, 4608L, 4628L, 4588L, 4416L, 4312L, 
    4372L, 3806L, 3652L, 3570L, 3480L, 3708L, 3886L, 4188L, 4284L, 
    4344L, 4704L, 4776L, 4772L, 4980L, 5000L, 4852L, 4508L, 4916L, 
    5356L, 5400L, 5268L, 5156L, 4620L, 4324L, 4016L, 3884L, 3854L, 
    3854L, 3770L, 3562L, 3708L, 3854L, 4084L, 4228L, 4440L, 4532L, 
    4784L, 5008L, 5292L, 5464L, 4868L, 4996L, 4908L, 4932L, 5060L, 
    5136L, 5280L, 5444L, 5492L, 5500L, 5560L, 5604L, 5704L, 5660L, 
    5716L, 5892L, 5844L, 5796L, 5752L, 5816L, 5892L, 6500L, 6488L, 
    6212L, 5928L, 5796L, 5876L, 6084L, 6284L, 6660L, 6424L, 6088L, 
    6004L, 6044L, 6268L, 6336L, 6664L, 6500L, 6308L, 6152L, 6288L, 
    6424L, 6376L, 6860L, 6464L, 6500L, 6508L, 6468L, 7144L, 7652L
    ), B5 = c(5554L, 5554L, 4782L, 4736L, 4736L, 5018L, 5018L, 4968L, 
    4968L, 4677L, 4677L, 3814L, 3667L, 3667L, 3594L, 3975L, 3975L, 
    4348L, 4348L, 4736L, 4736L, 5018L, 5018L, 4968L, 4968L, 4677L, 
    4677L, 4930L, 5524L, 5524L, 5229L, 5229L, 4424L, 4424L, 4113L, 
    4113L, 4069L, 4069L, 3857L, 3932L, 3932L, 4228L, 4228L, 4591L, 
    4591L, 4918L, 4918L, 5324L, 5324L, 5543L, 5327L, 5327L, 5301L, 
    5471L, 5471L, 5301L, 5471L, 5471L, 5846L, 5977L, 5977L, 5899L, 
    5899L, 6099L, 6099L, 5977L, 5977L, 5899L, 5899L, 6099L, 6099L, 
    6857L, 6517L, 6517L, 6220L, 6220L, 6418L, 6418L, 6969L, 6517L, 
    6517L, 6220L, 6220L, 6418L, 6418L, 6969L, 6969L, 6861L, 6581L, 
    6581L, 6729L, 6729L, 7265L, 7265L, 6581L, 6729L, 6729L, 7265L, 
    7265L, 8025L), B6 = c(5249L, 5249L, 4428L, 4553L, 4553L, 4832L, 
    4832L, 4741L, 4741L, 4428L, 4428L, 3736L, 3464L, 3464L, 3509L, 
    3894L, 3894L, 4270L, 4270L, 4553L, 4553L, 4832L, 4832L, 4741L, 
    4741L, 4428L, 4428L, 5030L, 5441L, 5441L, 4926L, 4926L, 4146L, 
    4146L, 3907L, 3907L, 3910L, 3910L, 3721L, 3831L, 3831L, 4201L, 
    4201L, 4509L, 4509L, 4871L, 4871L, 5235L, 5235L, 5217L, 5207L, 
    5207L, 5087L, 5290L, 5290L, 5087L, 5290L, 5290L, 5777L, 5721L, 
    5721L, 5746L, 5746L, 5982L, 5982L, 5721L, 5721L, 5746L, 5746L, 
    5982L, 5982L, 6504L, 6116L, 6116L, 5946L, 5946L, 6257L, 6257L, 
    6916L, 6116L, 6116L, 5946L, 5946L, 6257L, 6257L, 6916L, 6916L, 
    6407L, 6293L, 6293L, 6545L, 6545L, 7197L, 7197L, 6293L, 6545L, 
    6545L, 7197L, 7197L, 7998L), B7 = c(4893L, 4893L, 4138L, 4527L, 
    4527L, 4681L, 4681L, 4505L, 4505L, 4170L, 4170L, 3629L, 3388L, 
    3388L, 3545L, 3982L, 3982L, 4288L, 4288L, 4527L, 4527L, 4681L, 
    4681L, 4505L, 4505L, 4170L, 4170L, 5127L, 5268L, 5268L, 4703L, 
    4703L, 3996L, 3996L, 3775L, 3775L, 3713L, 3713L, 3594L, 3813L, 
    3813L, 4166L, 4166L, 4462L, 4462L, 4836L, 4836L, 5277L, 5277L, 
    4910L, 5235L, 5235L, 5001L, 5241L, 5241L, 5001L, 5241L, 5241L, 
    5688L, 5539L, 5539L, 5599L, 5599L, 5988L, 5988L, 5539L, 5539L, 
    5599L, 5599L, 5988L, 5988L, 6278L, 5864L, 5864L, 5931L, 5931L, 
    6177L, 6177L, 6896L, 5864L, 5864L, 5931L, 5931L, 6177L, 6177L, 
    6896L, 6896L, 6212L, 6159L, 6159L, 6382L, 6382L, 7383L, 7383L, 
    6159L, 6382L, 6382L, 7383L, 7383L, 7856L), B8 = c(4836L, 4840L, 
    5044L, 4074L, 4236L, 4404L, 4592L, 4668L, 4796L, 4628L, 4632L, 
    3914L, 3896L, 3796L, 3580L, 3598L, 3596L, 3830L, 4096L, 4320L, 
    4460L, 4648L, 4904L, 4980L, 4940L, 5148L, 5180L, 4164L, 4628L, 
    5304L, 5512L, 5592L, 5500L, 5216L, 4732L, 4380L, 4036L, 4008L, 
    3994L, 3784L, 3660L, 3650L, 3794L, 4018L, 4212L, 4296L, 4516L, 
    4648L, 4908L, 5148L, 4876L, 4828L, 4936L, 4992L, 5052L, 5236L, 
    5236L, 5336L, 5380L, 5708L, 5648L, 5624L, 5580L, 5724L, 5796L, 
    6280L, 6156L, 6012L, 5876L, 5864L, 5868L, 6488L, 6636L, 6752L, 
    6612L, 6268L, 5924L, 5968L, 6092L, 6752L, 6876L, 6764L, 6484L, 
    6176L, 6108L, 6300L, 6460L, 6924L, 6724L, 6528L, 6484L, 6352L, 
    6500L, 6600L, 6784L, 6876L, 6676L, 6616L, 6732L, 6896L), B8A = c(4679L, 
    4679L, 4098L, 4524L, 4524L, 4643L, 4643L, 4460L, 4460L, 3987L, 
    3987L, 3413L, 3294L, 3294L, 3490L, 3840L, 3840L, 4140L, 4140L, 
    4524L, 4524L, 4643L, 4643L, 4460L, 4460L, 3987L, 3987L, 5232L, 
    5152L, 5152L, 4421L, 4421L, 3863L, 3863L, 3697L, 3697L, 3561L, 
    3561L, 3558L, 3788L, 3788L, 4110L, 4110L, 4493L, 4493L, 4894L, 
    4894L, 5032L, 5032L, 4606L, 5209L, 5209L, 4889L, 5233L, 5233L, 
    4889L, 5233L, 5233L, 5787L, 5324L, 5324L, 5492L, 5492L, 6018L, 
    6018L, 5324L, 5324L, 5492L, 5492L, 6018L, 6018L, 5872L, 5544L, 
    5544L, 5876L, 5876L, 6279L, 6279L, 6963L, 5544L, 5544L, 5876L, 
    5876L, 6279L, 6279L, 6963L, 6963L, 6134L, 6187L, 6187L, 6547L, 
    6547L, 7280L, 7280L, 6187L, 6547L, 6547L, 7280L, 7280L, 7968L
    ), B9 = c(6752L, 6752L, 6752L, 7098L, 7098L, 7098L, 7098L, 6752L, 
    6752L, 6752L, 6752L, 4997L, 5626L, 5626L, 5626L, 5626L, 5626L, 
    7098L, 7098L, 7098L, 7098L, 7098L, 7098L, 6752L, 6752L, 6752L, 
    6752L, 5698L, 5698L, 5698L, 5698L, 5698L, 5408L, 5408L, 5408L, 
    5408L, 5408L, 5408L, 5685L, 5685L, 5685L, 5685L, 5685L, 6352L, 
    6352L, 6352L, 6352L, 6352L, 6352L, 5794L, 8407L, 8407L, 7048L, 
    8407L, 8407L, 7048L, 8407L, 8407L, 8407L, 7048L, 7048L, 8407L, 
    8407L, 8407L, 8407L, 7048L, 7048L, 8407L, 8407L, 8407L, 8407L, 
    8487L, 8487L, 8487L, 9610L, 9610L, 9610L, 9610L, 9610L, 8487L, 
    8487L, 9610L, 9610L, 9610L, 9610L, 9610L, 9610L, 8487L, 9610L, 
    9610L, 9610L, 9610L, 9610L, 9610L, 9610L, 9610L, 9610L, 9610L, 
    9610L, 10128L), B10 = c(4170L, 4170L, 3407L, 3301L, 3301L, 3612L, 
    3612L, 3600L, 3600L, 3352L, 3352L, 2502L, 2388L, 2388L, 2403L, 
    2659L, 2659L, 2979L, 2979L, 3301L, 3301L, 3612L, 3612L, 3600L, 
    3600L, 3352L, 3352L, 3856L, 4192L, 4192L, 3840L, 3840L, 3187L, 
    3187L, 2782L, 2782L, 2634L, 2634L, 2501L, 2562L, 2562L, 2792L, 
    2792L, 3068L, 3068L, 3405L, 3405L, 3816L, 3816L, 3858L, 3343L, 
    3343L, 3188L, 3438L, 3438L, 3188L, 3438L, 3438L, 3774L, 3543L, 
    3543L, 3653L, 3653L, 3934L, 3934L, 3543L, 3543L, 3653L, 3653L, 
    3934L, 3934L, 4224L, 3999L, 3999L, 3881L, 3881L, 4162L, 4162L, 
    4724L, 3999L, 3999L, 3881L, 3881L, 4162L, 4162L, 4724L, 4724L, 
    4293L, 4161L, 4161L, 4380L, 4380L, 5052L, 5052L, 4161L, 4380L, 
    4380L, 5052L, 5052L, 5756L), B11 = c(3124L, 3124L, 2514L, 2969L, 
    2969L, 3137L, 3137L, 2922L, 2922L, 2487L, 2487L, 1850L, 1822L, 
    1822L, 2014L, 2309L, 2309L, 2600L, 2600L, 2969L, 2969L, 3137L, 
    3137L, 2922L, 2922L, 2487L, 2487L, 3753L, 3535L, 3535L, 2823L, 
    2823L, 2296L, 2296L, 2151L, 2151L, 1974L, 1974L, 1924L, 2100L, 
    2100L, 2386L, 2386L, 2731L, 2731L, 3087L, 3087L, 3380L, 3380L, 
    3006L, 2740L, 2740L, 2443L, 2800L, 2800L, 2443L, 2800L, 2800L, 
    3228L, 2669L, 2669L, 2935L, 2935L, 3338L, 3338L, 2669L, 2669L, 
    2935L, 2935L, 3338L, 3338L, 3049L, 2893L, 2893L, 3087L, 3087L, 
    3550L, 3550L, 4235L, 2893L, 2893L, 3087L, 3087L, 3550L, 3550L, 
    4235L, 4235L, 3184L, 3242L, 3242L, 3774L, 3774L, 4487L, 4487L, 
    3242L, 3774L, 3774L, 4487L, 4487L, 5217L), B = c(20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 50L, 50L, 50L, 50L, 50L, 
    50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 
    50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 
    50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 
    50L, 50L, 50L, 50L, 50L, 50L), E = c(20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L), C = c(20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L), OC = c(30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L
    ), OLS = c(10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
    10L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA, -100L
    ))

Five column with depended vars (B,E, C,OC,OLS).具有相关变量的五列(B、E、C、OC、OLS)。 I must perform 5 boosting models.我必须执行 5 个增强模型。 Simple i can do it.简单我可以做到。 Take this script, and just change target var 5 times(any dep var ~. )拿这个脚本,只需更改目标变量 5 次(任何 dep var ~.)

# train GBM model
gbm.fit.final109 <- gbm(
  formula = Value ~ .,
  distribution = "gaussian",
  data = new,
  n.trees = 483,
  interaction.depth = 5,
  shrinkage = 0.1,
  n.minobsinnode = 5,
  bag.fraction = .65, 
  train.fraction = 1,
  n.cores = NULL, # will use all cores by default
  verbose = FALSE
)  

However, is it possible to create some kind of loop that substitutes column with depended var from the list into the script?但是,是否可以创建某种循环,将列表中带有依赖变量的列替换到脚本中? For example (mylistwithdepended_vars=c((B,E,C,OC,OLS) ), IEwe take each dependent variable, as soon as it works out in a loop, we substitute another from the list, until through this loop we work out all the columns.例如(mylistwithdepended_vars=c((B,E,C,OC,OLS) ),IEwe 取每个因变量,一旦它在循环中计算出来,我们就从列表中替换另一个,直到通过这个循环我们计算出所有列。

How can i do it.我该怎么做。 As output i just want 5 models作为 output 我只想要 5 个型号

 gbm.fit.finalB
gbm.fit.finalE
gbm.fit.finalC
gbm.fit.finalOC
gbm.fit.finalOLS

Always appreciate your help, thanks.始终感谢您的帮助,谢谢。

Are you looking for something like the following?您是否正在寻找类似以下内容的内容?

library(gbm)
#> Loaded gbm 2.1.8

dependend <- c("B", "E", "C", "OC", "OLS")
mylistwithdepended_vars <- mget(dependend, envir = as.environment(new))

fun <- function(Value){
  gbm.fit.final109 <- gbm(
    formula = Value ~ .,
    distribution = "gaussian",
    data = new,
    n.trees = 483,
    interaction.depth = 5,
    shrinkage = 0.1,
    n.minobsinnode = 5,
    bag.fraction = .65, 
    train.fraction = 1,
    n.cores = NULL, # will use all cores by default
    verbose = FALSE
  )  
}


gbm_models <- Map(fun, mylistwithdepended_vars)

old_par <- par(mfrow = c(1, 5))
mapply(summary, gbm_models, main = names(gbm_models))

#>         B            E            C            OC           OLS         
#> var     character,17 character,17 character,17 character,17 character,17
#> rel.inf numeric,17   numeric,17   numeric,17   numeric,17   numeric,17
par(old_par)

Created on 2022-03-11 by the reprex package (v2.0.1)reprex package (v2.0.1) 创建于 2022-03-11

The accepted solution fits a mysterious set of 5 models (and not the models the OP has in mind) because it's not clear what the predictors are in the formula Value ~.接受的解决方案适合一组神秘的 5 个模型(而不是 OP 考虑的模型),因为不清楚公式Value ~. . .

It's better to be explicit what the models, the response and the predictors are.最好明确说明模型、响应和预测变量是什么。

library("gbm")
#> Loaded gbm 2.1.8
library("tidyverse")

data <- tibble(new)

# Let's define a function to fit a model ...
model_fn <- function(formula, data) {
  # Generalized Boosted Regression
  gbm(
    formula = formula,
    distribution = "gaussian",
    data = data,
    n.trees = 483,
    interaction.depth = 5,
    shrinkage = 0.1,
    n.minobsinnode = 5,
    bag.fraction = .65,
    train.fraction = 1,
    n.cores = NULL, # will use all cores by default
    verbose = FALSE
  )
}
# ... as well as a function to extract information from the fitted model.
summary_fn <- function(fit) {
  # Generalized Boosted Regression
  summary(fit, plotit = FALSE) %>%
    as_tibble()
}

model_summaries <-
  data %>%
  pivot_longer(
    # We want to fit 5 models, one for each of the following responses:
    c(B, C, E, OC, OLS),
    names_to = "response",
    values_to = "y"
  ) %>%
  nest_by(response) %>%
  mutate(
    fit = list(model_fn(
      # For each response we want to use variables B1 through B11 as predictors.
      y ~ B1 + B2 + B3 + B4 + B5 + B6 + B7 + B8 + B9 + B10 + B11,
      data = data
    ))
  ) %>%
  summarise(
    summary_fn(fit)
  )
#> `summarise()` has grouped output by 'response'. You can override using the
#> `.groups` argument.
model_summaries
#> # A tibble: 55 × 3
#> # Groups:   response [5]
#>    response var    rel.inf
#>    <chr>    <chr>    <dbl>
#>  1 B        B1    1   e+ 2
#>  2 B        B2    4.11e-29
#>  3 B        B8    1.17e-29
#>  4 B        B3    8.67e-30
#>  5 B        B4    6.88e-30
#>  6 B        B11   5.43e-30
#>  7 B        B5    2.85e-30
#>  8 B        B7    6.14e-31
#>  9 B        B10   3.82e-31
#> 10 B        B6    1.84e-31
#> # … with 45 more rows

PS.附言。 The gbm models fit your data very poorly. gbm 模型非常适合您的数据。 Are you sure that the response is Gaussian?您确定响应是高斯响应吗? It's easy to check that each response takes two unique values, and that each value is observed exactly 50 times.很容易检查每个响应是否采用两个唯一值,并且每个值都被恰好观察了 50 次。

data %>%
  pivot_longer(
    # We want to fit 5 models, one for each of the following responses:
    c(B, C, E, OC, OLS),
    names_to = "response",
    values_to = "y"
  ) %>%
  count(
    response, y
  )
#> # A tibble: 10 × 3
#>    response     y     n
#>    <chr>    <int> <int>
#>  1 B           20    50
#>  2 B           50    50
#>  3 C           10    50
#>  4 C           20    50
#>  5 E           20    50
#>  6 E           30    50
#>  7 OC          10    50
#>  8 OC          30    50
#>  9 OLS          0    50
#> 10 OLS         10    50

Created on 2022-03-12 by the reprex package (v2.0.1)reprex package (v2.0.1) 创建于 2022-03-12

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM