Rで解析:養鶏経営の指標を自動計算する「PoultryEconR」パッケージ
養鶏経営では、飼料の効率や産卵率、収益性といった複数の指標を同じものさしで把握することが、経営判断の精度を高めます。しかし、農場ごとにこれらを計算し、基準値と照らし合わせて評価するには手間がかかります。本パッケージは、養鶏の生産性と経済性に関する指標の算出と評価を簡単に実施でき、飼料要求率(FCR)、ヘンデイ産卵率(HDEP)、ヘンハウス産卵率(HHEP)、卵1個当たりコスト、1羽当たり利益、死亡率を計算するコマンドが収録されています。各指標は定めた基準値によりスコア化され、総合効率と5段階の評価等級を付与します。また、結果をExcelファイルへ書き出すことや、総合効率を棒グラフで確認することも可能です。本パッケージの利用で、複数の農場や複数の期間を同一の基準で比較できるのではないかと考えます。
パッケージバージョンは0.1.0。Windows 11 x64 (build 26200)のR version 4.6.1で確認しています。
パッケージのインストール
下記コマンドを実行してください。
# パッケージのインストール
install.packages("PoultryEconR")
# パッケージの読み込み
library("PoultryEconR")コマンド例
詳細はコメント、パッケージのヘルプを確認してください。
養鶏経営指標の算出と評価:PoultryEconRコマンド
| オプション | 意味 | 初期値 |
|---|---|---|
| Data | 指標の算出に用いるデータフレーム。後述する10列をすべて含む必要あり | なし |
| plot | 総合効率の棒グラフを表示するかの指定 | TRUE |
| export | 結果をExcelファイルへ書き出すかの指定 | FALSE |
| file | 書き出すExcelファイル名の指定。exportがTRUEのときに使用 | “Poultry_Analysis_Output.xlsx” |
Dataに渡すデータフレームには、以下の10列が必要です。列名が1つでも欠けるとエラーになります。area以外はすべて数値で用意してください。
| 列名 | 意味 |
|---|---|
| feed_consumed | 集計期間中の飼料消費量 |
| weight_gained | 集計期間中の増体量 |
| number_of_eggs | 1日当たりの産卵個数 |
| number_of_live_birds | 生存している羽数 |
| number_of_birds_housed_initially | 飼養開始時の羽数 |
| total_cost | 集計期間中の総費用 |
| total_eggs_produced | 集計期間中の総産卵個数 |
| revenue | 集計期間中の売上高 |
| number_of_dead_birds | 集計期間中の死亡羽数 |
| area | 農場名や地域名などの識別ラベル |
number_of_eggsとtotal_eggs_producedは名前が似ていますが役割が異なります。前者は産卵率(HDEP・HHEP)の分子として1日当たりの個数を、後者は卵1個当たりコストの分母として期間の合計個数を使います。
戻り値のデータフレームには、以下の列が格納されます。
| 列名 | 意味 |
|---|---|
| area | 入力した識別ラベル |
| FCR | 飼料要求率。飼料消費量を増体量で除した値 |
| HDEP | ヘンデイ産卵率。生存羽数に対する産卵個数の割合(%) |
| HHEP | ヘンハウス産卵率。飼養開始羽数に対する産卵個数の割合(%) |
| cost | 卵1個当たりのコスト |
| profit | 飼養開始1羽当たりの利益 |
| mortality | 死亡率(%) |
| FCR_eff ~ mort_eff | 各指標を基準値に照らしたスコア。20から100の5段階 |
| overall_efficiency | 6つのスコアの平均値である総合効率 |
| grade | 総合効率による評価。Excellent/Good/Average/Poor/Very Poorの5段階 |
スコアの基準値はコマンド内部に固定されており、オプションからは変更できません。たとえばFCRは1.6以下で100点、卵1個当たりコストは16以下で100点となります。コストの基準は通貨単位が明示されていないため、円で運用する場合は目安として扱ってください。
北海道の5農場を想定した架空データで実行します。飼料消費量と増体量はキログラム、金額は円、死亡羽数は30日間の累計、産卵個数は1日当たりの平均としています。
'data.frame': 5 obs. of 10 variables:
$ feed_consumed : num 18600 16400 24000 12200 11500
$ weight_gained : num 12000 9100 11500 7800 5900
$ number_of_eggs : num 4750 3780 4900 3300 2200
$ number_of_live_birds : num 4960 4100 5700 3450 2660
$ number_of_birds_housed_initially: num 5000 4200 6000 3500 2800
$ total_cost : num 2460000 2140000 3300000 1580000 1450000
$ total_eggs_produced : num 142000 113000 147000 99000 66000
$ revenue : num 3540000 2760000 3600000 2300000 1520000
$ number_of_dead_birds : num 40 100 300 50 140
$ area : chr "江別農場" "恵庭農場" "岩見沢農場" "千歳農場" ...作成したデータで指標を算出します。まずはグラフ表示とExcel出力を無効にして、数値だけを確認します。
# グラフ表示とExcel出力を無効にして指標を算出
kekka <- PoultryEconR(youkei_data, plot = FALSE, export = FALSE)
# 算出結果の表示
print(kekka)
area FCR HDEP HHEP cost profit mortality FCR_eff HDEP_eff HHEP_eff cost_eff profit_eff mort_eff
1 江別農場 1.55 95.77 95.00 17.32 216.00 0.80 100 100 100 80 100 100
2 恵庭農場 1.80 92.20 90.00 18.94 147.62 2.38 60 85 100 60 100 60
3 岩見沢農場 2.09 85.96 81.67 22.45 50.00 5.00 40 65 65 20 100 60
4 千歳農場 1.56 95.65 94.29 15.96 205.71 1.43 100 100 100 100 100 85
5 栗山農場 1.95 82.71 78.57 21.97 25.00 5.00 60 65 65 40 100 60
overall_efficiency grade
1 96.67 Excellent
2 77.50 Good
3 58.33 Poor
4 97.50 Excellent
5 65.00 Average出力される数値は小数第2位に丸められていますが、スコア判定は実際の値で実施されています。恵庭農場のFCRは表示上1.80ですが、実際の値は1.8022のため「1.8以下は80点」の基準に届かず60点となっています。基準値の境界付近では、丸めた表示だけで判断しないよう注意してください。
plotオプションをTRUEにすると、総合効率の棒グラフが描画されます。グラフのタイトルやY軸ラベルは英語で固定されており、オプションからは変更できません。内部的にgraphics:: と名前空間を明示して呼び出しているため、barplot を差し替えるといった小細工も効きません。
# 総合効率の棒グラフをプロット、指標をkekka_plotに保存
kekka_plot <- PoultryEconR(youkei_data, plot = TRUE, export = FALSE)
exportオプションをTRUEにすると、結果をExcelファイルへ保存します。ファイル名はfileオプションで指定します。保存先は作業ディレクトリです。
# 結果をExcelファイルへ保存
kekka_excel <- PoultryEconR(youkei_data, plot = FALSE, export = TRUE,
file = "youkei_bunseki.xlsx")
# ファイルが作成されたかを確認
file.exists("youkei_bunseki.xlsx")
[1] TRUE
改善優先度リストの作成
戻り値には各指標のスコアが個別の列として残ります。この性質を利用して、農場ごとに最もスコアの低い指標を抜き出し、どこから手を付けるべきかを整理した優先度リストを作成します。
# 6つのスコア列の名前をまとめる
score_retsu <- c("FCR_eff", "HDEP_eff", "HHEP_eff",
"cost_eff", "profit_eff", "mort_eff")
# 農場ごとに最もスコアの低い指標名を取得
jakuten <- score_retsu[apply(kekka[, score_retsu], 1, which.min)]
# 農場名・総合効率・評価・最優先の改善項目を一覧にまとめる
kaizen_list <- data.frame(
農場名 = kekka$area,
総合効率 = kekka$overall_efficiency,
評価 = kekka$grade,
最優先改善項目 = jakuten)
# 総合効率の低い順に並べ替え
kaizen_list <- kaizen_list[order(kaizen_list$総合効率), ]
# 行番号を省いて優先度リストを表示
print(kaizen_list, row.names = FALSE)
農場名 総合効率 評価 最優先改善項目
岩見沢農場 58.33 Poor cost_eff
栗山農場 65.00 Average cost_eff
恵庭農場 77.50 Good FCR_eff
江別農場 96.67 Excellent cost_eff
千歳農場 97.50 Excellent mort_eff前期と後期の比較
同じ農場の2期間分のデータを算出し、総合効率の変化量を並べると、改善施策の効果を確認できます。飼料効率とコストの改善に取り組んだ後期のデータを想定し、例を示します。
# 前期データを複製して後期データの土台とする
kouki_data <- youkei_data
# 飼料消費量を削減
kouki_data$feed_consumed <- c(18100, 15700, 21500, 12000, 10800)
# 増体量を微増
kouki_data$weight_gained <- c(12100, 9200, 11800, 7850, 6000)
# 1日当たり産卵個数を増加
kouki_data$number_of_eggs <- c(4790, 3860, 5300, 3320, 2450)
# 総費用を削減
kouki_data$total_cost <- c(2420000, 2050000, 3180000, 1560000, 1360000)
# 総産卵個数を増加
kouki_data$total_eggs_produced <- c(143000, 115000, 159000, 99500, 73000)
# 売上高を増加
kouki_data$revenue <- c(3570000, 2830000, 3720000, 2320000, 1600000)
# 死亡羽数を削減
kouki_data$number_of_dead_birds <- c(35, 80, 150, 45, 95)
# 後期データの指標を算出
kekka_kouki <- PoultryEconR(kouki_data, plot = FALSE, export = FALSE)
# 前期と後期の総合効率と評価を横に並べる
hikaku <- data.frame(
農場名 = kekka$area,
前期 = kekka$overall_efficiency,
後期 = kekka_kouki$overall_efficiency,
変化量 = round(kekka_kouki$overall_efficiency - kekka$overall_efficiency, 2),
前期評価 = kekka$grade,
後期評価 = kekka_kouki$grade)
# 改善幅の大きい順に並べ替え
hikaku <- hikaku[order(-hikaku$変化量), ]
# 行番号を省いて比較表を表示
print(hikaku, row.names = FALSE)
農場名 前期 後期 変化量 前期評価 後期評価
岩見沢農場 58.33 75.00 16.67 Poor Good
栗山農場 65.00 78.33 13.33 Average Good
恵庭農場 77.50 88.33 10.83 Good Good
江別農場 96.67 96.67 0.00 Excellent Excellent
千歳農場 97.50 97.50 0.00 Excellent Excellentもともと評価の低かった岩見沢農場と栗山農場で改善幅が大きく、江別農場と千歳農場は変化がありません。本パッケージでは、スコアが段階的に付与されるため、すでに上限に達している指標は入力値を改善しても総合効率が変化しないことに留意して解析をしてください。
この記事が誰かの役に立ちますように。