本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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_eggs1日当たりの産卵個数
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_efficiency6つのスコアの平均値である総合効率
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

もともと評価の低かった岩見沢農場と栗山農場で改善幅が大きく、江別農場と千歳農場は変化がありません。本パッケージでは、スコアが段階的に付与されるため、すでに上限に達している指標は入力値を改善しても総合効率が変化しないことに留意して解析をしてください。


この記事が誰かの役に立ちますように。

スポンサーリンク
価格および配送状況は変更される場合があります。購入時は商品ページをご確認ください。
当サイトに表示されている商品情報はAmazonから提供されたものであり、更新または削除される場合があります。
karada-goodはAmazonアソシエイトとして、適格販売により収入を得ています。